如何发现两个句子相似?
nlp
opennlp
stanford-nlp
6
0

我想计算两个任意句子之间的相似度。例如:

  1. 一个数学家找到了解决这个问题的办法。
  2. 这个问题由一位年轻的数学家解决了。

我可以使用标记器,词干分析器和解析器,但是我不知道如何检测这些句子是否相似。

参考资料:
Stack Overflow
收藏
评论
共 1 个回答
高赞 时间 活跃

这两个句子不仅相似,而且几乎是释义 ,即表达相同含义的两种替代方式。这也是复述的一个非常简单的情况,其中两种话语都使用相同的单词,唯一的例外是一种是主动形式,而另一种是被动形式。 (这两个句子不完全是释义,因为在第二个句子中,数学家是“年轻的”。此附加信息使两个句子之间的语义关系不对称。在这种情况下,您会说第二个话语会“引起”第一个发声。一个,换句话说,可以从第二个推断出第一个)。

从示例中无法了解您是否实际上对释义检测,文本含义或句子相似性感兴趣,这是一个更为广泛和模糊的问题。例如,“人们吃食物”更类似于“人们吃面包”还是“男人吃食物”?

复述检测和文本相似性在自然语言处理中都是复杂的,开放的研究问题,有大量活跃的研究人员正在研究它们。尚不清楚您对此主题的兴趣程度如何,但是请考虑,即使许多杰出的研究人员花费并花费了整个职业生涯试图破解它,但我们离找到通常可行的合理解决方案还差得很远。

除非您对非常肤浅的解决方案感兴趣,该解决方案仅在特定情况下有效并且不能捕获语法替换(在这种情况下),否则我建议您更深入地研究文本相似性问题。一个很好的起点是《统计自然语言处理基础》一书 ,该书很好地组织了大多数统计自然语言处理主题。弄清要求后(例如,您的方法应该在什么条件下工作?您追求的精确度/召回水平是什么?可以安全地忽略哪些现象,以及需要解决哪些现象?)通过深入研究最新工作来开始研究特定方法。在这里,一个很好的起点是计算语言学协会(ACL)在线档案,该协会是该领域大多数研究成果的出版商。

只是为了给您一些实用的知识,句子相似度的一个非常粗略的基线就是将两个句子表示为单词袋的二进制矢量之间的余弦相似度 。一袋单词是一种非常简化的文本表示形式,通常用于信息检索,其中您完全不考虑语法,而仅将句子表示为向量,其大小等于词汇量(即语言中的单词数) ),并且如果单词中位置“ i”处的单词出现在句子中,则其成分“ i”的值为“ 1”,否则为“ 0”。

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号