我正在运行pytextrank处于第二阶段,我从spaCy收到此错误:
File "C:Anaconda3libpathlib.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'
我寻找字符串.json,但没有这样的事情。
有趣的是,当我使用以下错误代码安装 spaCy 时,pathlib.py 也存在类似的错误:
OSError: Symbolic link privilege not held
你们有什么想法吗? 谢谢
最后,我可以在stackoverflow中回答问题。我遇到了同样的问题,但最终解决了它。这是我的建议:
1. 从python -m spacy或github下载spaCy模型
两种方式都非常方便。
1). 来自 Python Spacy:
python3 -m spacy download en
假设您使用的是 python3+,可以自动完成并生成新的模型包,您可以通过导入 en 或使用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
您必须将文件夹与结构链接。 哪个空间将通过您的链接快捷方式名称链接文件夹。
这是您需要的链接脚本:
base_path=`pwd`
sudo python3 -m spacy link ${base_path}/en_core_web_md-1.2.1 en_core_web --force
您可以在该文件夹旁边创建一个.sh文件并运行它。
就是这样!
当您将 spaCy 和模型安装到系统目录中,但您的用户没有创建符号链接所需的权限时,通常会发生Symbolic link privilege not held
错误。若要解决此问题,请以管理员身份运行download
或再次link
,如果无法解决此问题,请使用virtualenv
将所有内容安装到用户目录中(有关此内容的详细信息,请参阅故障排除文档)。
从 v1.7.0 开始,spaCy 在spacy/data
目录中创建符号链接又名快捷方式链接。这样可以更轻松地将模型存储在所需的任何位置,将它们安装为Python包并使用自定义名称加载它们,例如spacy.load('my_model')
.
在您的情况下可能发生的情况是,由于权限错误,spaCy 无法设置此链接,现在无法找到和加载模型——包括vocab/strings.json
。(不过,spaCy 在这里失败的方式并不理想——这已经在 v1.7.3 中得到了修复。
由于模型已经安装,您所要做的就是为它创建一个新的符号链接(以管理员身份或virtualenv
):
python -m spacy link en_core_web_sm en
(如果您下载了其他模型,只需将en_core_web_sm
替换为该模型的名称即可。en
是要使用的快捷方式,可以是您想要的任何名称。
编辑:如果您只想使用分词器而不关心模型,或者想使用尚未附带统计模型的受支持语言之一,您也可以在 v1.7.3 中导入Language
类:
from spacy.fr import French
nlp = French()