【问题标题】:Measuring semantic similarity between two phrases [closed]测量两个短语之间的语义相似性[关闭]
【发布时间】:2013-04-18 18:33:30
【问题描述】:

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

我已经查看了this question,但它已经很老了,我在那里找不到真正有用的答案。有one link,但我发现这不可靠。

例如:
我有一句话:感觉被压垮了
我有几种选择:向内强行,粉碎,情感破坏,重塑等。
我想找到与第一个相似度最高的术语/短语。
这里的答案是:情感上的毁灭。

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

更新:我发现this library 对于测量两个词之间的相似度非常有用。另外ConceptNet的相似性机制也很好。

this library 用于测量句子之间的语义相似度

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

【问题讨论】:

标签: algorithm nlp semantics wordnet


【解决方案1】:

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

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

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

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

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

我希望这会有所帮助。

【讨论】:

  • 感谢您的回复,但我的主要问题是我需要一些东西来评估相似性作为一个组合词,而不是我在示例中提到的单个词。
  • 您根据术语-术语相似性修改短语表示。示例,给定两个句子: S1: {"car", "race"} S2: {"motorbike}, "speed"} 使用标准余弦相似度,您得到 0.0 相似度(因为没有常见的术语)。但是您可以扩展它使用基于DS的“相关术语”表示,然后短语变为:S1:{“car”,“race”,“vehicle”,“automobile”,“fast”} S2:{“motorbike},“speed” , "bike", "vehicle", "fast"} 现在你有了一些相似性,基于 "fast" 和 "vehicle"。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2015-10-27
    • 2015-04-26
    • 2020-09-19
    • 1970-01-01
    • 2015-06-13
    • 2022-11-22
    • 2013-05-14
    • 2015-12-12
    • 2010-09-06
    相关资源
    最近更新 更多