python - 在python的文本语料库中查找最相似的句子/字符串到参考文献
问题描述
我的目标很简单:我有一组字符串或一个句子,我想在文本语料库中找到最相似的。
例如,我有以下文本语料库:“图书馆的正面装饰着艺术家 Millard Sheets 设计的 Word of Life 壁画。”
而且我想找到与原始语料库最相似的子字符串:“图书馆立面被绘制”
所以我应该得到的输出是:“图书馆的前面是装饰的”
我想出的唯一方法是将原始句子拆分为可变长度的子字符串(例如,在 3、4、5 个字符串的子字符串中),然后使用string.similarity(substring)
pythonspacy
模块中的类似内容来评估我的目标文本与所有内容的相似性子字符串,然后保留具有最高值的那个。
这似乎是一种非常低效的方法。有什么更好的我可以做的吗?
解决方案
它可能在某种程度上有效,但我不希望 spacy 相似性方法(平均词向量)工作得特别好。
您正在处理的任务与释义检测/识别和语义文本相似性有关,并且有很多现有的工作。它经常用于诸如抄袭检测和机器翻译系统评估之类的事情,因此您也可以通过查看这些领域找到更多方法。
如果你想要一些开箱即用的英语,一个建议是 terp,它是为 MT 评估而开发的,但对于释义检测显示效果很好:
https://github.com/snover/terp
大多数方法都设置为比较两个句子,因此这并不能解决您潜在的部分句子匹配问题。也许找到最相似的句子然后在该句子中寻找比整个句子匹配得更好的子字符串是有意义的?
推荐阅读
- javascript - jQuery 在 empty() 一个元素之后再次 append() 到它,如何在附加元素上触发 click 事件?
- python - IPython REPL 中显示的函数表示在哪里/如何生成?
- security - 无法在 AuthenticationFetcher micronaut 中获取客户端证书
- java - Android 如果使用 FTP 协议断开互联网连接,如何从离开的位置自动重试下载
- c# - 使用带有 MSGID 的 ODP.NET 使 Oracle AQ 出队
- amazon-web-services - IAM 角色未能授予 EC2 实例权限
- javascript - 如何在javascript中将对象数组转换为数组数组
- c# - 是否可以为 ToolstripComboBox 菜单项添加快捷键?
- ruby-on-rails - 活动模型序列化程序在部署后突然停止在生产中工作
- javascript - 使用 javascript 简单地隐藏和显示文本