我有多篇研究论文,其中包括:“社交媒体平台”和“媒体平台”。
我想匹配所有的“媒体平台”术语,而不触及“社交媒体平台”术语。
以下是我的示例文本:
“社交媒体平台很棒。它是一个伟大的媒体平台。”
我只想与“媒体平台”在第二句中略去第一句中的:
“社交媒体平台很棒。它是一个伟大的媒体平台。”
到目前为止,我使用的模式并不十分有效,因为它也与“伟大”一词相匹配。
“社交媒体平台很棒。它是一个伟大的媒体平台。”
这是我的模式:
pattern = [{'LOWER': 'social', 'OP': '!'},
{'LOWER': 'media'},
{'LOWER': 'platform'}]
有可能用spacy matcher来解决这个问题吗?还是有可能使用regex?
发布于 2021-06-26 07:49:14
由于否定操作的工作方式,无法准确地从spaCy匹配器获得所需的结果。您应该使用一个函数来筛选匹配,如下所示:
matches = ... matcher output ...
final = [mm for mm in matches if mm.start == 0 or mm.doc[mm.start-1].text != "social"]没有理由在这个问题上使用regex。
https://stackoverflow.com/questions/68120015
复制相似问题