【发布时间】:2019-08-31 19:02:27
【问题描述】:
总体问题
我正在做一个 nlp 项目并想使用 spacy。但是在尝试为 nlp 对象加载语言时,我一直遇到错误:
AttributeError: type object 'spacy.syntax.nn_parser.array' has no attribute '__reduce_cython__'
代码:
test = nlp('many people like laughing while they are running')
for word in test:
print(word.text,word.lemma)
我不确定,但问题可能与我正在使用的虚拟环境有关。我发现的一种解决方案建议“将 spaCy 路径添加到 virtualenv 中的 PYTHONPATH”
所以我实际的 2 个问题是: 1)你认为我的问题在哪里? 2) 如果您认为问题与虚拟环境有关,如何在 virtualenv 中将 spaCy 路径添加到 PYTHONPATH?
提前感谢您的帮助
背景信息:
我是初学者,所以我不太了解堆栈溢出、venv 以及您需要什么信息来理解我的问题。这是我能给你的:
我正在学习本教程: https://github.com/bhargavvader/personal/tree/master/notebooks/text_analysis_tutorial
我的环境:
Operating System: Linux Mint 19.1 Cinnamon
Python Version Used: Python 3.7.1
spaCy Version Used: 2.1.3
我正在通过 anaconda 使用 python
到目前为止我做了什么: 当然,我在互联网上搜索了错误 这是我的错误日志:
到目前为止我做了什么
1)我卸载重装了辣
2)我检查了 spacy 文件
我如何理解这是错误日志中发生错误的部分?:
----> 4 from .pipes import Tagger, DependencyParser, EntityRecognizer
所以我查看了我的 spacy 文件夹以检查管道脚本。但是找不到函数 Tagger、DependencyParser 和 EntityRecognizer 调用 'reduce_cython'
的点1) 我在网上搜索了错误日志:
据我了解,提出的类似问题对我的问题没有帮助:
与我的问题类似的唯一问题如下: https://github.com/explosion/spaCy/issues/2439
他们的解决方案是“在 virtualenv 中将 spaCy 路径添加到 PYTHONPATH”
所以我搜索了如何将路径添加到 cette python 路径并发现: How do I add a path to PYTHONPATH in virtualenv
但我不太明白答案。我仍然不确定这是否是问题所在。因此,如果您知道我的问题的答案,或者可以给我一些关于如何继续解决这个问题的指导。我会放心的。
更多信息:
如果它很重要,当我按照我之前提到的教程时,我确实遇到了无法下载需求的问题。 这是我的终端给我的:
无法打开需求文件:[Errno 2] 没有这样的文件或目录:'REQUIREMENTS_1.txt'
我忽略了它,因为一开始一切都很顺利。
错误日志
AttributeError Traceback(最近一次调用最后一次) 在 ----> 1 nlp = spacy.load('en') 2 3 test = nlp('很多人喜欢边跑边笑') 4 测试中的单词: 5 打印(word.text,word.lemma)
~/anaconda3/lib/python3.7/site-packages/spacy/init.py in load(name, **overrides) 13 from .glossary 导入解释 14 from .about 导入版本 ---> 15 from .errors import Errors, Warnings, deprecation_warning 16 从 .导入工具 17
~/anaconda3/lib/python3.7/site-packages/spacy/util.py in load_model(name, **overrides) 110 """ 111 如果是实例(路径,basestring_): --> 112 返回路径(路径) 113 其他: 114返回路径
~/anaconda3/lib/python3.7/site-packages/spacy/util.py 在 load_model_from_link(name, **overrides) 127 if Path(name).exists(): # 模型数据目录的路径 128 return load_model_from_path(路径(名称),**覆盖) --> 129 elif hasattr(name, "exists"): # Path or Path-like to model data 130 返回 load_model_from_path(名称,**覆盖) 131 引发 IOError(Errors.E050.format(name=name))
~/anaconda3/lib/python3.7/site-packages/spacy/data/en/init.py in load(**overrides) 10 11 def 加载(**覆盖): ---> 12 return load_model_from_init_py(file, **overrides)
~/anaconda3/lib/python3.7/site-packages/spacy/util.py 在 load_model_from_init_py(init_file, **overrides)
171 def load_model_from_init_py(init_file,**覆盖):
172 """在模型包的load()方法中使用的辅助函数
--> 173 初始化.py。
174
175 init_file (unicode): 模型 init.py 的路径,即__file__。
~/anaconda3/lib/python3.7/site-packages/spacy/util.py in load_model_from_path(model_path, meta, **overrides) 141返回cls.load(**覆盖) 142 --> 143 144 def load_model_from_package(名称,**覆盖): 145 """从已安装的包中加载模型。"""
~/anaconda3/lib/python3.7/site-packages/spacy/util.py in get_lang_class(lang) 48""" 49 种全球语言 ---> 50 在语言中返回 lang 51 52
~/anaconda3/lib/python3.7/importlib/init.py in import_module(name, package) 125休息 126 级 += 1 --> 127 return _bootstrap._gcd_import(name[level:], package, level) 128 129
~/anaconda3/lib/python3.7/importlib/_bootstrap.py in _gcd_import(name, package, level)
~/anaconda3/lib/python3.7/importlib/_bootstrap.py in _find_and_load(name, import_)
~/anaconda3/lib/python3.7/importlib/_bootstrap.py in _find_and_load_unlocked(name, import_)
~/anaconda3/lib/python3.7/importlib/_bootstrap.py in _load_unlocked(spec)
~/anaconda3/lib/python3.7/importlib/_bootstrap_external.py in exec_module(self, module)
~/anaconda3/lib/python3.7/importlib/_bootstrap.py in _call_with_frames_removed(f, *args, **kwds)
~/anaconda3/lib/python3.7/site-packages/spacy/lang/en/init.py 13 从 ..tokenizer_exceptions 导入 BASE_EXCEPTIONS 14 从 ..norm_exceptions 导入 BASE_NORMS ---> 15 从 ...语言导入语言 16 来自 ...attrs 导入 LANG,NORM 17 from ...util import update_exc, add_lookups
~/anaconda3/lib/python3.7/site-packages/spacy/language.py 在 15 从 .vocab 导入词汇 16 从 .lemmatizer 导入 Lemmatizer ---> 17 从 .pipeline 导入 DependencyParser、Tensorizer、Tagger、EntityRecognizer 18 从 .pipeline 导入 SimilarityHook、TextCategorizer、Sentencizer 19 从 .pipeline 导入 merge_noun_chunks、merge_entities、merge_subtokens
~/anaconda3/lib/python3.7/site-packages/spacy/pipeline/init.py 2 从 未来 导入 unicode_literals 3 ----> 4 from .pipes import Tagger, DependencyParser, EntityRecognizer 5 从 .pipes 导入 TextCategorizer、Tensorizer、Pipe、Sentencizer 6 从.entityruler导入EntityRuler
pipes.pyx init spacy.pipeline.pipes()
~/anaconda3/lib/python3.7/site-packages/spacy/syntax/nn_parser.cpython-37m-x86_64-linux-gnu.so init spacy.syntax.nn_parser()
AttributeError: type object 'spacy.syntax.nn_parser.array' 没有属性 'reduce_cython'
【问题讨论】:
-
你找到解决方案了吗?
标签: python anaconda virtualenv spacy lemmatization