首页 > 解决方案 > 在python的文本语料库中查找最相似的句子/字符串到参考文献

问题描述

我的目标很简单:我有一组字符串或一个句子,我想在文本语料库中找到最相似的。


例如,我有以下文本语料库:“图书馆的正面装饰着艺术家 Millard Sheets 设计的 Word of Life 壁画。”

而且我想找到与原始语料库最相似的子字符串:“图书馆立面被绘制”

所以我应该得到的输出是:“图书馆的前面是装饰的”


我想出的唯一方法是将原始句子拆分为可变长度的子字符串(例如,在 3、4、5 个字符串的子字符串中),然后使用string.similarity(substring)pythonspacy模块中的类似内容来评估我的目标文本与所有内容的相似性子字符串,然后保留具有最高值的那个。

这似乎是一种非常低效的方法。有什么更好的我可以做的吗?

标签: pythonnlpfull-text-searchspacy

解决方案


它可能在某种程度上有效,但我不希望 spacy 相似性方法(平均词向量)工作得特别好。

您正在处理的任务与释义检测/识别和语义文本相似性有关,并且有很多现有的工作。它经常用于诸如抄袭检测和机器翻译系统评估之类的事情,因此您也可以通过查看这些领域找到更多方法。

如果你想要一些开箱即用的英语,一个建议是 terp,它是为 MT 评估而开发的,但对于释义检测显示效果很好:

https://github.com/snover/terp

大多数方法都设置为比较两个句子,因此这并不能解决您潜在的部分句子匹配问题。也许找到最相似的句子然后在该句子中寻找比整个句子匹配得更好的子字符串是有意义的?


推荐阅读