python - spaCy PhraseMatcher 匹配什么?

标签 python nlp spacy

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

例如,如果我只是使用

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

那么“lead”标记是一个 ADJ,而如果我有一个文档,例如

doc2 = nlp('lead plate')

那么“lead”标记是一个名词。

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

类似地,如果我有,例如<​​/p>

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

即区分大小写吗?

这更不用说依赖项等 token 属性了。我没有找到对此有明确说明的文档。

最佳答案

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

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

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

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

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

关于python - spaCy PhraseMatcher 匹配什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48313907/

相关文章:

python - 将 conda HDF4 链接到 conda GDAL(Anaconda Python)

查找句子边界的 Java 库

c# - 用于自动标记的自然语言处理库 (.NET)

python - 如何在第二代应用程序引擎上下载 Spacy 模型?

python - 使用 python chisquare 和使用卡方值表的不同结果

python - 如何在运行时使用指定的参数名称创建函数?

python - SpaCyOS错误: [E050] Can't find model 'en' on Heroku platform

python - python中spacy的多线程训练

python : removing "\n" from a file name

python - 如何计算使用keras训练的语言模型的困惑度?