当前位置:  开发笔记 > 编程语言 > 正文

是否有一种算法可以告诉两个短语的语义相似性

如何解决《是否有一种算法可以告诉两个短语的语义相似性》经验,为你挑选了5个好方法。

输入:短语1,短语2

输出:语义相似度值(介于0和1之间),或这两个短语谈论同一事物的概率



1> Matt Mower..:

您可以查看本文:

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

我已经实现了所描述的算法.我们的背景非常笼统(实际上是任何两个英语句子),我们发现所采用的方法太慢而且结果虽然很有希望,但还不够好(或者可能没有相当大的额外努力).

你没有给出很多背景信息,所以我不一定会推荐这个,但阅读本文对你理解如何解决这个问题很有帮助.

问候,

马特.


我也实现了算法,它不够好但可以接受

2> nfelger..:

对此有一个简短的答案.

简短的回答:

使用WordNet :: Similarity Perl包.如果Perl不是您选择的语言,请查看普林斯顿的WordNet项目页面,或谷歌搜索包装库.

答案很长:

确定单词相似性是一个复杂的问题,在这方面的研究仍然很热.要计算相似性,您需要适当地表达单词的含义.但是,例如"椅子"的含义是什么呢?其实,什么 "椅子"的确切含义是什么?如果你认真思考这个问题,它会扭曲你的思想,你会有点疯狂,最后在哲学或计算语言学研究生涯中寻找真理.哲学家和语言学家都试图在数千年的时间里找到答案,并且看不到尽头.

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



3> Chuck Wooter..:

您可能想要查看普林斯顿大学的WordNet项目.一种可能的方法是首先通过一个停用词列表运行每个短语(删除"常用"词,如"a","to","the"等)然后对于每个剩余的词.每个短语,您可以使用基于WordNet的距离度量来计算另一个短语中每个单词之间的语义"相似度".距离度量可能类似于:您必须在WordNet中通过以从word1到word2的弧数.

对不起,这是相当高级别的.我显然从未尝试过这个.只是一个快速的想法.



4> jonfm..:

我会研究潜在的语义索引.我相信你可以创建类似于向量空间搜索索引的东西,但语义相关的术语更接近,即它们之间的角度更小.如果我了解更多,我会在这里发布.



5> kyrenia..:

对于刚来这里的人,我建议看看SEMILAR - http://www.semanticsimilarity.org/.他们实施了许多用于计算单词和句子相似度的现代研究方法.它是用Java编写的.

SEMILAR API提供了基于Wordnet,潜在语义分析(LSA),潜在Dirichlet分配(LDA),BLEU,流星,逐点互信息(PMI),基于依赖性的方法,基于二次分配的优化方法等的各种相似性方法.相似性方法以不同的粒度工作 - 单词,单词,句子或更大的文本.

推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有