繁体   English   中英

使用 spacy.matcher.matcher.Matcher.add() 方法的问题

[英]Problem with using spacy.matcher.matcher.Matcher.add() method

尝试使用 spacy matcher时出现错误:

~\Anaconda3\lib\site-packages\spacy\matcher\matcher.pyx in spacy.matcher.matcher.Matcher.add()
TypeError: add() takes exactly 2 positional arguments (3 given)

spacy.matcher.matcher.Matcher.add()是否有任何替代 function ?

请参阅SpaCy Matcher.add()文档

在 v3.0 中更改
从 spaCy v3.0 开始, Matcher.add将模式列表作为第二个参数(而不是可变数量的参数)。 on_match回调成为可选的关键字参数。

patterns = [[{"TEXT": "Google"}, {"TEXT": "Now"}], [{"TEXT": "GoogleNow"}]] - matcher.add("GoogleNow", on_match, *patterns) + matcher.add("GoogleNow", patterns, on_match=on_match)

示例用法:

from spacy.matcher import Matcher

matcher = Matcher(nlp.vocab)
pattern = [{"LOWER": "hello"}, {"LOWER": "world"}]
matcher.add("HelloWorld", [pattern])
doc = nlp("hello world!")
matches = matcher(doc)

此外,如果您要提取多个模式,示例如下。

import spacy
nlp = spacy.load('en_core_web_sm')

from spacy.matcher import Matcher
matcher = Matcher(nlp.vocab)

pattern1 = [{'LOWER':'solarpower'}]
pattern2 = [{'LOWER':'solar'},{'IS_PUNCT':True},{'LOWER':'power'}]
pattern3 = [{'LOWER':'solar'},{'LOWER':'power'}]

matcher.add('SolarPower', [pattern1,pattern2,pattern3])
doc = nlp(u"The Solar Power industry continues to grow a solarpower increases. Solar-power is good")
found_matches = matcher(doc)


for _,start,end in found_matches:
    span = doc[start:end]
    print(span)

Output 将是:

Solar Power 
solarpower 
Solar-power

而不是使用matcher.add('Relation_name', None, pattern)

您可以使用: matcher.add('Relation_name', [pattern], on_match=None)

该模式应被 2 个外部方括号包围才能起作用(粗体表示清楚)。 然后它工作并在文本中找到模式

模式= [ [{“TEXT”:“iPhone”},{“TEXT”:“X”}] ]

将模式添加到匹配器

matcher.add("IPHONE_X_PATTERN", 模式)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM