我正试图通过我机器上的Spacy's工作制作matcher example official documentation。
from spacy.matcher import Matcher
matcher = Matcher(nlp.vocab)
pattern = [{'LOWER': "hello"}, {'LOWER': "world"}]
matcher.add("HelloWorld", None, pattern)
doc = nlp(u'hello world!')
matches = matcher(doc)
不幸的是我遇到以下错误:
TypeError:add()至少需要4个位置参数(给定3个)
可以找到相应的源代码here,重要的部分是
def add(self, key, on_match, *patterns):
"""Add a match-rule to the matcher. A match-rule consists of: an ID
key, an on_match callback, and one or more patterns.
Spacy最近已更新到2.0版,我安装了该版本并成功将英文模型链接到它。感觉就像我在这里遗漏了一些非常明显的东西,但我看不出我做错了什么。
答案 0 :(得分:5)
这确实很奇怪,我无法使用您的示例重现错误(在spaCy v2.0.2上,它对我来说非常好)。所以最简单的解释是,不知何故,你的脚本实际上正在执行错误的 spacy
。 (spaCy v1.x也有Matcher.add()
方法,花了4 positional arguments,所以这符合错误。)
如果您以前安装了spaCy v1.x并且它仍然在spacy
(在不同的环境,系统Python等),则可能会执行错误的PYTHONPATH
。也可能是你安装了spaCy,但忘了告诉pip进行升级,即运行pip install -U spacy
。
最简单的方法是在文件顶部添加以下行:
print(spacy.__version__)
顺便说一句,如果事实证明您需要重新安装或升级到新版本,请不要忘记下载新型号!