python - Spacy IS_ALPHA 匹配器模式不起作用?

标签 python nlp spacy

关于以下设置:

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

最佳答案

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

发生的情况是可变长度运算符“*”与结束标记“house”匹配,从而阻止“house”匹配。

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

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

关于python - Spacy IS_ALPHA 匹配器模式不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46523057/

相关文章:

python - 为什么我不能 "deactivate"pyenv/virtualenv?如何安装 "fix"

Python 的 SpaCy EntityRuler 没有返回任何结果

python - 如何使python内置函数支持关键字参数?

python - 如何在特定 "start"和 "stop"标记之间的位置填充 pandas 系列中的值?

python - 如何根据现有模式分布将序列划分为不同长度的元组?

java - 使用斯坦福 OpenIE 进行子句分割

nlp - 从 Transformer 管道获取输入文本

python - 如何提取葡萄牙语的名词/动词短语?

python - 如何修复 spaCy en_training 与当前 spaCy 版本不兼容的问题

python - Interactive Brokers API (IBAPI) - 使用 threading.Timer 对象在数据连接断开时自动退出