【问题标题】:SpaCy Rule Based Phrase Matching for Hello World基于 SpaCy 规则的 Hello World 短语匹配
【发布时间】:2019-10-23 09:26:46
【问题描述】:

我正在 Spacy 中进行基于规则的短语匹配。我正在尝试以下示例,但它不起作用。

示例

import spacy
from spacy.matcher import Matcher
nlp = spacy.load('en_core_web_sm')
doc = nlp('Hello world!')

pattern = [{"LOWER": "hello"}, {"IS_PUNCT": True}, {"LOWER": "world"}]

matcher = Matcher(nlp.vocab)
matcher.add('HelloWorld', None, pattern)

matches = matcher(doc)
print(matches) 

那么最终的matches 给出的是空字符串。请指正一下好吗?

【问题讨论】:

  • 您当前的代码也返回[]pattern = [{"LOWER": "hello"}, {"LOWER": "world"}] 将匹配。
  • 我也想要“IS_PUNCT”。
  • 太棒了。这是工作。请解释为什么这有效。谢谢。

标签: python python-3.x nlp spacy


【解决方案1】:

要匹配hello worldhello, world,您可以使用

pattern = [{"LOWER": "hello"}, {"IS_PUNCT": True, "OP" : "?"}, {"LOWER": "world"}]

{"IS_PUNCT": True, "OP" : "?"} 表示 标点符号 类型的标记在helloworld 之间可以存在1 次或0 次(由于"OP" : "?")。

在 Spacy 文档中查看有关 Operators and quantifiers 的更多信息。

【讨论】:

    【解决方案2】:

    您的模式匹配Hello, world,中间有一个标点符号,而不是Hello world

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-08-14
    • 1970-01-01
    • 1970-01-01
    • 2021-08-17
    • 2011-09-12
    • 1970-01-01
    • 2020-08-13
    • 2019-12-20
    相关资源
    最近更新 更多