首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >spaCy需要一个不存在的文件: strings.json

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

Stack Overflow用户
提问于 2017-03-26 10:00:15
回答 2查看 4.8K关注 0票数 6

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

代码语言:javascript
复制
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'

我找过strings.json,但是根本没有这个东西。

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

代码语言:javascript
复制
OSError: Symbolic link privilege not held

你们有什么想法吗?谢谢

EN

回答 2

Stack Overflow用户

发布于 2017-03-29 22:24:40

最后,我可以在stackoverflow中回答问题。我也遇到过同样的问题,但最终还是解决了。这是我的建议:

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

这两种方式都非常方便。

1)。来自python spacy:

代码语言:javascript
复制
python3 -m spacy download en

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

2)。来自github

transfer link,选择最新版本并下载。

2. (如果您不使用python -m方式,则需要手动链接模型)链接您下载的模型

这是最重要的部分,你必须解压你下载的tar或gzip文件,并得到一个文件夹,但这仍然是你想要的链接路径。

代码语言:javascript
复制
.
├── 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

您必须将文件夹与结构链接起来。哪个空格将通过您的链接快捷方式名称链接文件夹。

以下是您需要的链接脚本:

代码语言:javascript
复制
base_path=`pwd`
sudo python3 -m spacy link ${base_path}/en_core_web_md-1.2.1 en_core_web --force

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

就是这样!

票数 9
EN

Stack Overflow用户

发布于 2017-03-28 22:51:54

当您将spaCy和模型安装到系统目录中,但是您的用户没有创建符号链接所需的权限时,通常会出现Symbolic link privilege not held错误。要解决此问题,请以管理员身份再次运行downloadlink,或者,如果不能这样做,请使用virtualenv将所有内容安装到用户目录中(有关这方面的更多信息,请参阅troubleshooting docs)。

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

在您的案例中可能发生的情况是,由于权限错误,spaCy无法设置此链接,并且现在无法找到并加载模型-包括vocab/strings.json。(不过,spaCy在这里失败的方式并不理想-这个问题已经在v1.7.3中得到了修复。)

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

代码语言:javascript
复制
python -m spacy link en_core_web_sm en

(如果您已经下载了different model,只需将en_core_web_sm替换为该型号的名称。en是要使用的快捷方式,可以是您想要的任何名称。)

编辑:如果您只想使用记号赋予器而不关心模型,或者想使用尚未附带统计模型的supported languages之一,您也可以在v1.7.3中导入Language类:

代码语言:javascript
复制
from spacy.fr import French
nlp = French()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43024145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档