首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用spacy.matcher.matcher.Matcher.add()方法的问题

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

Stack Overflow用户
提问于 2021-02-12 06:53:21
回答 4查看 3.3K关注 0票数 5

我在尝试使用spacy matcher时遇到错误

代码语言:javascript
复制
~\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()有什么替代功能吗?

EN

回答 4

Stack Overflow用户

发布于 2021-02-12 07:03:09

请参阅SpaCy Matcher.add() documentation

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)

示例用法:

代码语言:javascript
复制
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)
票数 6
EN

Stack Overflow用户

发布于 2021-07-14 12:39:06

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

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

票数 3
EN

Stack Overflow用户

发布于 2021-05-29 12:23:43

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

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

输出将为:

代码语言:javascript
复制
Solar Power 
solarpower 
Solar-power
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66164156

复制
相关文章

相似问题

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