【问题标题】:Spacy IS_ALPHA matcher-pattern not working?Spacy IS_ALPHA 匹配器模式不起作用?
【发布时间】:2017-10-02 18:28:00
【问题描述】:

关于以下设置:

import spacy
from spacy.matcher import Matcher
from spacy.attrs import POS, LOWER, IS_ALPHA

nlp_en = spacy.load('en')

text = nlp_en('A nice looking great blue house you have!')

matcher = Matcher(text.vocab)

OP = 'OP'

matcher.add_entity('test')
matcher.add_pattern('test', [
    {LOWER: 'nice'},
    {OP: '*', IS_ALPHA: True},
    {LOWER: 'house'}
    ])

matches = matcher(text)

在这种情况下,我试图在 nicehouse 之间找到任何单词 - 但匹配器不会产生任何结果。我也尝试将{OP: '*', IS_ALPHA: True} 翻转为{IS_ALPHA: True, OP: '*'},但也没有结果。这种模式有什么问题?

Spacy 版本:1.9.0

【问题讨论】:

    标签: python nlp spacy


    【解决方案1】:

    不幸的是,您在这里遇到了匹配器中的错误。运算符没有正确实现。

    发生的情况是可变长度运算符 '*' 匹配结束标记 'house',阻止了 'house' 匹配。

    只要您有一个与模式的下一部分重叠的可变长度运算符,就会出现该错误。

    如果您有时间和意愿,我很乐意对此提出拉取请求,但不可否认,匹配器代码非常困难。它可能应该完全重新实现。

    【讨论】:

    • 有解决办法吗?类似于“除了NOUN”之外的任何东西。我很想帮忙,但我猜我的编码技能太低了
    • 这似乎适用于最新版本的 spacy。我正在使用 2.3.5。部分方法名称已更改,因此需要调整 OP 的代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-20
    • 1970-01-01
    • 1970-01-01
    • 2012-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多