20

我想测量两个短语/句子之间的语义相似性。有没有我可以直接可靠地使用的框架?

我已经检查了这个问题,但它已经很老了,我在那里找不到真正有用的答案。有一个链接,但我发现这不可靠。

例如:
我有一个短语:feeled crushed
我有几个选择:向内强迫、粉碎、情感破坏、重塑等。
我想找到与第一个相似度最高的术语/短语。
这里的答案是:情感上的毁灭。

更大的图景是:我想根据它在句子中的用法来识别 FrameNet 中的哪个帧与给定动词匹配。

更新:我发现这个库对于测量两个词之间的相似度非常有用。此外,ConceptNet 相似性机制非常好。

这个库用于测量句子之间的语义相似度

如果有人有任何见解,请分享。

4

2 回答 2

9

这是一个非常复杂的问题。

我能想到的主要技术(在进入更复杂的 NLP 过程之前)是将余弦(或任何其他度量)相似性应用于每对短语。显然,由于不匹配的问题,这个解决方案目前效率很低:句子可能用不同的词指代相同的概念。

要解决此问题,您应该将每个短语的初始表示转换为更“概念”的含义。一种选择是使用同义词扩展每个单词(即使用WordNet,另一种选择是应用扩展表示的分布式语义 DS( http://liawww.epfl.ch/Publications/Archive/Besanconetal2001.pdf )等指标每个术语与更可能出现的单词一起出现。

示例:文档的表示:{"car","race"} 将转换为具有同义词的 {"car","automobile","race"}。而对于 DS,它将类似于:{"car","wheel","road","pilot", ...}

显然,这种转换不会是二元的。每个术语都有一些相关的权重。

我希望这有帮助。

于 2013-04-25T09:04:47.700 回答
1

也许cortical.io API 可以帮助您解决问题。这里的方法是将每个单词转换成一个语义指纹,用 16K 语义特征来表征它的含义。短语、句子或更长的文本通过 ORing 单词指纹一起转换为指纹。在转换为(数字)二进制向量表示之后,可以使用距离度量(如欧几里得距离或余弦相似度)轻松计算语义距离。api 提供了所有必要的转换和比较功能。

于 2014-11-06T15:25:16.657 回答