该篇文章主要介绍基于词语的文本相似度计算方式, 包括:
余弦相似度
欧式距离
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。