spaCy PhraseMatcher 匹配什么?

What does the spaCy PhraseMatcher match on?

doc 对象中标记的哪些属性需要 PhraseMatcher 检查并需要找到匹配?

例如,如果我只是使用

创建一个 doc
doc1 = nlp('lead')

然后 'lead' 令牌是一个 ADJ,而如果我有一个文档,例如

doc2 = nlp('lead plate')

那么 'lead' 标记是一个名词。

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

同样,如果我有,例如

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

即是否区分大小写?

这还不算像依赖等令牌属性。我没有找到关于这个的文档。

PhraseMatcher 将匹配 ORTH 值,即准确的文本。这让它可以匹配大型术语列表和字符串的精确出现,而不必担心 spaCy 的标记化。有关这方面的更多背景信息,为什么 PhraseMatcher 不能作用于其他属性,以及不区分大小写的可能解决方案,请参阅 this discussion on the issue tracker

如果您想根据令牌属性进行匹配,您可能希望使用基于规则的 Matcher

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

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

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