如何使用 spacy 匹配器匹配特定单词之后的术语?
How to match terms except those after specific word using spacy matcher?
我有多篇包含以下术语的研究论文:“社交媒体平台”和“媒体平台”。
我想匹配所有“媒体平台”字词而不涉及“社交媒体平台”字词。
这是我的示例文本:
“社交媒体平台很棒。这是一个很棒的媒体平台。”
我只想匹配第二句中的“媒体平台”,省略第一句中的那个:
“社交媒体平台很棒。它是一个很棒的媒体平台。”
到目前为止我使用的模式不是很有效,因为它也匹配单词“great”..
“社交媒体平台很棒。它是一个很棒的媒体平台。”
这是我的模式:
pattern = [{'LOWER': 'social', 'OP': '!'},
{'LOWER': 'media'},
{'LOWER': 'platform'}]
甚至可以用 spacy matcher 解决这个任务吗?或者是否可以使用正则表达式?
由于否定操作的工作方式,您无法使用 spaCy 匹配器准确获得您想要的结果。您应该只使用一个函数来过滤匹配项,如下所示:
matches = ... matcher output ...
final = [mm for mm in matches if mm.start == 0 or mm.doc[mm.start-1].text != "social"]
没有理由使用正则表达式来解决这个问题。
我有多篇包含以下术语的研究论文:“社交媒体平台”和“媒体平台”。
我想匹配所有“媒体平台”字词而不涉及“社交媒体平台”字词。
这是我的示例文本:
“社交媒体平台很棒。这是一个很棒的媒体平台。”
我只想匹配第二句中的“媒体平台”,省略第一句中的那个:
“社交媒体平台很棒。它是一个很棒的媒体平台。”
到目前为止我使用的模式不是很有效,因为它也匹配单词“great”..
“社交媒体平台很棒。它是一个很棒的媒体平台。”
这是我的模式:
pattern = [{'LOWER': 'social', 'OP': '!'},
{'LOWER': 'media'},
{'LOWER': 'platform'}]
甚至可以用 spacy matcher 解决这个任务吗?或者是否可以使用正则表达式?
由于否定操作的工作方式,您无法使用 spaCy 匹配器准确获得您想要的结果。您应该只使用一个函数来过滤匹配项,如下所示:
matches = ... matcher output ...
final = [mm for mm in matches if mm.start == 0 or mm.doc[mm.start-1].text != "social"]
没有理由使用正则表达式来解决这个问题。