spaCy PhraseMatcher与之匹配的是什么?

时间:2018-01-18 04:34:23

标签: python nlp spacy

doc对象中的令牌的哪些属性会PhraseMatcher检查并要求查找匹配项?

例如,如果我只是使用

创建doc
doc1 = nlp('lead')

那么'领先'令牌是一个ADJ,而如果我有一个像

这样的文档
doc2 = nlp('lead plate')

那么'领先'令牌是NOUN。

如果我将doc1添加到PhraseMatcher个实例,我是否应该期望此匹配器在doc2中找到匹配项?

同样如果我有,例如<​​/ p>

doc1 = nlp('Lead')
doc2 = nlp('lead')

即。区分大小写吗?

这更不用说依赖等令牌属性了。我没有找到明确的文档。

1 个答案:

答案 0 :(得分:3)

PhraseMatcher将匹配ORTH值,即确切文本。这使得它可以匹配大型术语列表和字符串的确切出现,而无需担心spaCy的标记化。有关此问题的更多背景信息,PhraseMatcher无法处理其他属性的原因以及不区分大小写的可能解决方案,请参阅this discussion on the issue tracker

如果您想根据令牌属性进行匹配,则可能需要使用基于规则的Matcher代替:

pattern = [{"LOWER": "lead", "POS": "ADJ"}]

文档中还有newly added example,其中显示了如何将Matcher与令牌匹配模式和正则表达式(或更常见的二进制标志)一起使用。这可以用于添加您自己的自定义标记描述,例如不同的拼写。

您可能还想查看spacy-lookup,这是一个使用FlashText模块的社区插件,并提供了内置PhraseMatcher的替代方案。