是否有一种算法可以判断两个词组的语义相似性
输入:词组1,词组2
输出:语义相似性值(0到1之间),或者这两个短语谈论同一件事的可能性
解决方案
回答
这要求算法实际上知道我们在说什么。可以通过比较单词和查找同义词等某种基本形式来完成,但是任何准确的结果都需要某种形式的智能。
回答
我将为此研究潜在的语义索引。我相信我们可以创建类似于矢量空间搜索索引的内容,但语义相关的术语会更靠近在一起,即它们之间的夹角较小。如果我了解更多信息,我会在这里发布。
回答
我们可能想看看这篇文章:
基于语义网和语料统计的句子相似度(PDF)
我已经实现了所描述的算法。我们的上下文非常笼统(实际上是两个英文句子),并且我们发现所采用的方法太慢,结果虽然很有希望,但效果还不够好(或者,如果没有大量额外的努力,可能会如此)。
我们没有提供太多背景信息,所以我不一定推荐这样做,但是阅读本文可能对我们了解如何解决问题很有用。
问候,
马特
回答
一种简单的解决方案是使用字符n元语法向量的点积。这在排序更改(许多编辑距离度量标准未提供)方面很可靠,并捕获了词干周围的许多问题。它还防止了完全语义理解的AI完全问题。
要计算n元语法向量,只需选择n的值(例如3),然后将短语中的每个3字序列散列到向量中即可。将向量归一化为单位长度,然后采用不同向量的点积来检测相似性。
这种方法已在
J. Mitchell和M. Lapata,语义分布模型中的构成,认知科学,第1卷。 34号8,pp。13881429,2010年11月。,DOI 10.1111 / j.1551-6709.2010.01106.x
回答
我们可能要检查普林斯顿大学的WordNet项目。一种可能的解决方法是首先将每个短语放在停用词列表中(以删除"常用"单词,例如" a"," to"," the"等),然后针对其中的其余每个单词每个词组,我们都可以使用基于WordNet的距离度量来计算另一个词组中每个词之间的语义"相似性"。距离量度可能是这样的:从Word1到word2,我们必须在WordNet中通过的弧数。
抱歉,这是相当高级的。我显然从未尝试过。只是一个快速的想法。
回答
这有一个简短的回答。
简短的答案:
使用WordNet :: Similarity Perl包。如果Perl不是我们选择的语言,请查看Princeton的WordNet项目页面,或者在google上找到包装器库。
长答案:
确定单词的相似性是一个复杂的问题,在这个领域,研究仍然很热门。要计算相似度,我们需要适当表达单词的含义。但是,"椅子"的含义将是什么呢?实际上,"椅子"的确切含义是什么?如果我们对此进行漫长而艰苦的思考,它将使我们产生困惑,我们会发疯,并最终从事哲学或者计算语言学的研究事业以找到真相?哲学家和语言学家都试图提出一个答案,字面上几千年来,而且没有尽头。
因此,如果我们有兴趣更深入地探讨这个问题,我强烈建议我们阅读Jurafsky和Martin撰写的《语音和语言处理》第20.7章,其中一些内容可以通过Google图书获得。它很好地概述了最新的分布方法,这些方法使用词共现统计来定义词相似度的度量。但是,我们不太可能找到实现这些功能的库。
回答
我将看看统计技术,该技术考虑了每个单词出现在句子中的可能性。这将使我们对诸如"和","或者","该"之类的流行单词的重视程度降低,而对显得不太规则的单词给予更多重视,因此成为更好的区分因素。例如,如果我们有两个句子:
1)Smith-waterman算法为我们提供了两个字符串之间的相似性度量。
2)我们审查了史密斯-沃特曼算法,发现它对于我们的项目已经足够好。
这两个句子共享单词" smith-waterman"和"算法"(不如" and"," or"等常见),我们可以说这两个句子可能在谈论同一个话题。
总结一下,我建议我们看一下:
1)字符串相似性度量;
2)统计方法;
希望这可以帮助。