汉语语义消歧之 -- 句子相似度
2014-12-04 18:43
106 查看
这里隆重推出介绍一种词义消歧的(简单)方法:句子相似度
虽然第一反应一定是介个,但是总不能说他们的相似度就是单词出现的重复次数吧= =||,怎么看都觉得不科学233
于是,我们想到了最简单却又好用的相似度判断方式,就是"余弦相似性"(cosine similiarity)了啦:
我们现在有两句话s1和s2,那么他们的余弦相似度怎么求呢?
现在令s1、s2词频向量为v1、v2(注意,是向量!),则我们"想象一下":
如果v1和v2方向相同,大致等价于s1、s2句子构成成分相同,也就是说,句子意思也是基本相同的;如果v1和v2方向相反,也可以说明两句句子的意思基本也是反过来的;而如果v1和v2成90°,意思就是s1和s2之间没有明显的联系。
因此,我们可以通过夹角的大小,来判断向量的相似程度。夹角越小,就代表越相似。
而向量夹角的Θ是在[0, π]中的,其余弦值cosΘ是减函数,故只需要比较其余弦值即可。
由向量的基本性质容易推出cosΘ = (v1 · v2) / (|v1| * |v2|),于是余弦相似度就求了出来。
也许有人会问。。。词频向量相等,并不代表句意相等啊;再说两句话要是句子用词差别大,也不代表两句句子不相关啊。是的说,所以说还是有很大的改进空间的啦:比如我们可以选取特征词所在的段落中的关键词来判断余弦相似性什么的。还是可以进行改动的嘛、、、
虽然第一反应一定是介个,但是总不能说他们的相似度就是单词出现的重复次数吧= =||,怎么看都觉得不科学233
于是,我们想到了最简单却又好用的相似度判断方式,就是"余弦相似性"(cosine similiarity)了啦:
我们现在有两句话s1和s2,那么他们的余弦相似度怎么求呢?
现在令s1、s2词频向量为v1、v2(注意,是向量!),则我们"想象一下":
如果v1和v2方向相同,大致等价于s1、s2句子构成成分相同,也就是说,句子意思也是基本相同的;如果v1和v2方向相反,也可以说明两句句子的意思基本也是反过来的;而如果v1和v2成90°,意思就是s1和s2之间没有明显的联系。
因此,我们可以通过夹角的大小,来判断向量的相似程度。夹角越小,就代表越相似。
而向量夹角的Θ是在[0, π]中的,其余弦值cosΘ是减函数,故只需要比较其余弦值即可。
由向量的基本性质容易推出cosΘ = (v1 · v2) / (|v1| * |v2|),于是余弦相似度就求了出来。
也许有人会问。。。词频向量相等,并不代表句意相等啊;再说两句话要是句子用词差别大,也不代表两句句子不相关啊。是的说,所以说还是有很大的改进空间的啦:比如我们可以选取特征词所在的段落中的关键词来判断余弦相似性什么的。还是可以进行改动的嘛、、、
相关文章推荐
- 对“基于语义依存的汉语句子相似度计算”的优化。
- 基于语义依存的汉语句子相似度计算.JPG
- 句子语义相似度计算
- 汉语语义消歧之 -- 词义消歧简介
- 【java + word2vec】java版本的语义相似度计算
- 词语语义相似度计算简介
- 关于word2vec 句子相似度计算
- 【语言处理与Python】10.4英语句子的语义
- Java进行语义相似度分析
- 现代汉语句子成份——主谓宾、定状补
- 中文短句子相似度比较(PHP版本UTF8)
- LSTM模型在问答系统中的应用 2017-06-27 21:03 在问答系统的应用中,用户输入一个问题,系统需要根据问题去寻找最合适的答案。 1:采用句子相似度的方式。根据问题的字面相似度选择相似度最
- Python自然语言处理第二章-2.5WordNet(IV)——语义相似度
- 关于word2vec 句子相似度计算
- 文中将汉语句子的语法结构.总结为如下18 种:
- WordNet词网研究7——之JWS(Java Wordnet Similarity)语义相似度计算
- 中文句子相似度判断源码
- Java进行语义相似度分析
- 计算句子相似度
- 如何比较两句句子的相似度