该篇文章主要介绍基于词语的文本相似度计算方式,包括:
- 余弦相似度
- 欧式距离
- Dice系数
- Jaccard
在计算余弦相似度与欧式距离的时候,需要将词语向量化表示,这就需要用到词袋模型。
词袋模型(Bag of words)
最初的Bag of words,也叫做“词袋”,Bag of words model假定对于一个文本,忽略其词序和语法,句法,将其仅仅看做是一个词集合,或者说是词的一个组合,文本中每个词的出现都是独立的,不依赖于其他词是否出现,或者说当这篇文章的作者在任意一个位置选择一个词汇都不受前面句子的影响而独立选择的。
例如两个句子:
句子A:这只皮靴号码大了。那只号码合适。
句子B:这只皮靴号码不小,那只更合适。
第一步:分词
句子A:这只/皮靴/号码/大了,那只/号码/合适。
句子B:这只/皮靴/号码/不/小,那只/更/合适。
第二步:列出所有的词
这只,皮靴,号码,大了,那只,合适,不,小,更
第三步:计算词频
句子A:这只 1,皮靴 1,号码 2,大了 1,那只 1,合适 1,不 0,小 0,更 0
句子B: 这只 1,皮靴 1,号码 1,大了 0,那只 1,合适 1,不 1,小 1,更 1
第四步:写出词频向量
句子A:(1,1,2,1,1,1,0,0,0)
句子B:(1,1,1,0,1,1,1,1,1)
余弦相似度
余弦相似度用向量空间中两个向量夹角的余弦值作为衡量两个个体差异的大小。余弦值越接近1,就表明夹角越接近0度,也就是两个向量越相似,这就是余弦相似性。
所以句子A与句子B的余弦相似度为:
欧式距离
欧式距离也称为欧几里得距离,是最常见的距离度量,衡量的是多维空间中两个点之间的绝对距离。
计算公式如下:
Dice距离
Dice距离用于度量两个集合的相似性,因为可以把集合字符串理解为一种集合,因此Dice距离也会用于度量字符串的相似性。Dice系数定义如下:
其中分子是A与B的交集数量的两倍,分母为A与B的长度之和。所以他的范围在0到1之间。
句子A:{这只,皮靴,号码,大了,那只,号码,合适}
句子B:{这只,皮靴,号码,不,小,那只,更,合适}
Jaccard距离
Dice系数与Jaccard非常的类似。Jaccard是在分子和分母上都减去了A∩B。