我想衡量两个短语/句子之间的语义相似度。有没有什么框架可以让我直接可靠地使用?
我已经检查过this question了,但是它太旧了,我在那里找不到真正有用的答案。有one link,但我发现这不可靠。
例如:
我有一句话:感觉被压垮了
我有几个选择:用力向内,粉碎,情感毁灭,重塑等等。
我想找到与第一个词/短语相似度最高的词/短语。
这里的答案是:情感上的毁灭。
更大的图景是:我想根据动词在句子中的用法来识别FrameNet中的哪个帧与给定的动词匹配。
更新:我发现this library在衡量两个单词之间的相似性方面非常有用。此外,ConceptNet的相似性机制也非常好。
以及用于度量句子之间语义相似度的this library
如果任何人有任何见解,请分享。
发布于 2013-04-25 17:04:48
这是一个非常复杂的问题。
我能想到的主要技术(在进入更复杂的NLP过程之前)是对每一对短语应用余弦(或任何其他度量)相似度。显然,由于不匹配问题,这种解决方案目前效率非常低:句子可能会用不同的单词引用相同的概念。
要解决这个问题,您应该将每个短语的初始表示形式转换为更具“概念性”的含义。一种选择是使用其同义词来扩展每个单词(即使用WordNet,另一种选择是应用诸如分布语义DS (http://liawww.epfl.ch/Publications/Archive/Besanconetal2001.pdf)之类的度量,该度量使用更可能与其一起出现的单词来扩展每个术语的表示。
例如:文档的表示:{"car","race"}将被转换为具有同义词的{"car",“car”,"race"}。然而,对于DS,它将类似于:{“汽车”,“车轮”,“道路”,“飞行员”,...}
显然,这种转换不会是二进制的。每一项都会有一些相关的权重。
我希望这能帮到你。
发布于 2014-11-06 23:25:17
也许cortical.io应用程序接口可以帮助您解决问题。这里的方法是将每个单词转换为具有16K语义特征的语义指纹,以表征其含义。短语、句子或更长的文本通过将单词指纹ORing在一起来转换为指纹。在此转换为(数字)二进制向量表示后,可以使用欧几里得距离或余弦相似度等距离度量轻松计算语义距离。api提供了所有必要的转换和比较功能。
https://stackoverflow.com/questions/16205020
复制相似问题