spaCy需要一个不存在的文件:strings.json

Pet*_*ter 5 python spacy

我正在运行pytextrank处于第二阶段,我从spaCy得到这个错误:

File "C:\Anaconda3\lib\pathlib.py", line 371, in wrapped return strfunc(str(pathobj), *args)

FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Anaconda3\\lib\\site-packages\\spacy\\data\\en\\vocab\\strings.json'
Run Code Online (Sandbox Code Playgroud)

我找了strings.json但是没有这样的东西.

有趣的是,当我使用以下错误代码安装spaCy时,存在与pathlib.py类似的错误:

OSError: Symbolic link privilege not held
Run Code Online (Sandbox Code Playgroud)

你们有什么想法吗?谢谢

Nic*_*ela 8

最后,我可以在stackoverflow中回答问题.我发生了同样的问题,但最终解决了.这是我的建议:

1.从python -m spacy或github下载spaCy模型

两种方式都很方便.

1).来自python spacy:

python3 -m spacy download en
Run Code Online (Sandbox Code Playgroud)

假设您正在使用python3 +,可以自动完成并生成新的模型包,您可以通过import en或using导入 spacy.load('en')

2).来自github

转移链接,选择最新版本并下载.

2.(如果你没有使用python -m方式,那么你想手动链接模型)链接你下载的模型

这是最重要的部分,您必须解压缩下载的tar或gzip文件,并获取文件夹,但这仍然不是您想要的链接路径.

.
??? en_core_web_md-1.2.1
?   ??? deps
?   ?   ??? config.json
?   ?   ??? model
?   ??? meta.json
?   ??? ner
?   ?   ??? config.json
?   ?   ??? model
?   ??? pos
?   ?   ??? config.json
?   ?   ??? model
?   ??? vocab
?       ??? gazetteer.json
?       ??? lexemes.bin
?       ??? oov_prob
?       ??? serializer.json
?       ??? strings.json
?       ??? vec.bin
Run Code Online (Sandbox Code Playgroud)

您必须将文件夹与结构链接.哪个spacy将通过您的链接快捷方式名称链接该文件夹.

这是您需要的链接脚本:

base_path=`pwd`
sudo python3 -m spacy link ${base_path}/en_core_web_md-1.2.1 en_core_web --force
Run Code Online (Sandbox Code Playgroud)

您可以在该文件夹旁边创建一个.sh文件并运行它.

而已!


Ine*_*ani 1

Symbolic link privilege not held当您已将 spaCy 和模型安装到系统目录中,但您的用户没有创建符号链接所需的权限时,通常会发生该错误。要解决此问题,请再次以管理员身份运行downloadlink,或者,如果不可能,请使用 avirtualenv将所有内容安装到用户目录中(有关此问题的更多信息,请参阅故障排除文档)。

\n\n

从 v1.7.0 开始,spaCy 创建了符号链接。目录中的快捷链接spacy/data。这使得您可以更轻松地将模型存储在任何您想要的地方,将它们安装为 Python 包并使用自定义名称加载它们,例如spacy.load(\'my_model\').

\n\n

在您的情况下可能发生的情况是,由于权限错误,spaCy 未能设置此链接,现在无法找到并加载模型 \xe2\x80\x93 ,包括vocab/strings.json. (spaCy 在这里失败的方式是不理想的,尽管 \xe2\x80\x93 此问题已在 v1.7.3 中修复。)

\n\n

由于模型已经安装,您所要做的就是为其创建一个新的符号链接(以管理员身份或在 a 中virtualenv):

\n\n
python -m spacy link en_core_web_sm en\n
Run Code Online (Sandbox Code Playgroud)\n\n

(如果您下载了不同的模型,只需替换en_core_web_sm为该模型的名称。en是使用的快捷方式,可以是您想要的任何名称。)

\n\n

编辑:如果您只想使用分词器而不关心模型,或者想要使用尚未附带统计模型的受支持语言Language之一,您也可以将类导入v1.7.3:

\n\n
from spacy.fr import French\nnlp = French()\n
Run Code Online (Sandbox Code Playgroud)\n