是否有一种算法可以判断两个词组的语义相似性
nlp
5
0

输入:词组1,词组2

输出:语义相似性值(0到1之间),或者这两个短语谈论同一件事的可能性

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

一种简单的解决方案是使用字符n元语法向量的点积。这在排序更改(许多编辑距离度量标准未提供)方面很可靠,并且捕获了词干周围的许多问题。它还防止了完全语义理解的AI完全问题。

要计算n元语法向量,只需选取n的值(例如3),然后将短语中的每个3字序列散列为向量。将向量归一化为单位长度,然后采用不同向量的点积来检测相似性。

J. Mitchell和M. Lapata,“语义分布模型的构成”,认知科学,第1卷,第1期中对此方法进行了描述。 34号8,第1388-1429页,2010年11月。DOI10.1111 / j.1551-6709.2010.01106.x

收藏
评论

对于刚接触此问题的任何人,我建议您看看SEMILAR- http://www.semanticsimilarity.org/ 。他们实现了许多用于计算单词和句子相似度的现代研究方法。它是用Java编写的。

SEMILAR API带有基于Wordnet,潜在语义分析(LSA),潜在狄利克雷分配(LDA),BLEU,流星,逐点互信息(PMI),基于依存关系的方法,基于二次赋值的优化方法等各种相似方法。相似性方法适用于不同的粒度-单词到单词,句子到句子或更大的文本。

收藏
评论

我将研究统计技术,该技术考虑了每个单词出现在句子中的概率。这将使您对诸如“和”,“或”,“该”之类的流行单词的重视程度降低,而对那些不太规则的出现的单词给予更多重视,因此成为更好的区分因素。例如,如果您有两个句子:

1)Smith-waterman算法为您提供了两个字符串之间的相似性度量。 2)我们审查了史密斯-沃特曼算法,发现它对于我们的项目已经足够好。

这两个句子共享单词“ smith-waterman”和“算法”(不如“ and”,“ or”等常见),这使您可以说这两个句子确实可以在谈论同一个话题。

总结一下,我建议您看一下:1)字符串相似性度量; 2)统计方法;

希望这可以帮助。

收藏
评论

您可能要检查普林斯顿大学的WordNet项目。一种可能的解决方法是首先通过停用词列表运行每个短语(以删除“常见”单词,例如“ a”,“ to”,“ the”等),然后针对其中的其余每个单词每个词组,您都可以使用基于WordNet的距离度量来计算另一个词组中每个词之间的语义“相似性”。距离度量可能类似于:从Word1到word2必须在WordNet中通过的弧数。

抱歉,这是相当高级的。我显然从未尝试过。只是一个简单的想法。

收藏
评论

我将为此研究潜在的语义索引。我相信您可以创建类似于矢量空间搜索索引的内容,但语义相关的术语会更靠近在一起,即它们之间的夹角较小。如果我了解更多信息,我会在这里发布。

收藏
评论

您可能想查看这篇文章:

基于语义网和语料统计的句子相似度(PDF)

我已经实现了所描述的算法。我们的上下文非常笼统(实际上是两个英文句子),并且我们发现所采用的方法太慢,结果虽然很有希望,但效果还不够好(或者如果没有大量额外的努力就可能如此)。

您没有提供太多背景信息,所以我不一定推荐这样做,但是阅读本文可能对您了解如何解决问题很有用。

问候,

马特

收藏
评论

试试SimService ,它提供了用于计算前n个相似单词和短语相似度的服务。

收藏
评论

抱歉,我提出了一个6年的问题,但是今天我刚遇到这篇文章时,我会给出一个答案,以防其他人正在寻找类似的东西。

cortical.io开发了一种计算两个表达式的语义相似度的过程,他们在其网站上提供了一个演示 。他们提供了免费的API ,可以使用该功能 ,因此您可以在自己的应用程序中使用它,而无需自己实现算法。

收藏
评论

这有一个简短的回答。

简短的答案:

使用WordNet :: Similarity Perl软件包 。如果您不是选择Perl的语言,请查看Princeton的WordNet项目页面 ,或在google上找到包装器库。

长答案:

确定单词的相似性是一个复杂的问题,在这个领域,研究仍然很热门。要计算相似度,您需要适当表达单词的含义 。但是,代表“椅子”含义的代表是什么?其实,什么 “椅子”的确切含义是什么?如果您对此进行漫长而艰苦的思考,它将使您产生疑惑,您会发疯,并最终从事哲学或计算语言学的研究事业,以找到真理。哲学家和语言学家都试图提出一个真正的答案,这已经有数千年的历史了,而且没有尽头。

因此,如果您有兴趣更深入地探讨这个问题,我强烈建议您阅读Jurafsky和Martin撰写的第20.7章“ 语音和语言处理” ,其中一些内容可以通过Google图书获得 。它很好地概述了最新的分布方法,这些方法使用词共现统计来定义词相似度的度量。但是,您不太可能找到实现这些功能的库。

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

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号