一、计算文本的相似度简介
计算两个文本间的相似度在NLP领域中的应用非常广,包括:搜索引擎、问答系统、聊天机器人、文本分类等。
计算两个文本之间(我们用向量s1、s2来表示)的相似度有很多种方法,这里主要介绍两种方法**“欧式距离”和“余弦相似度”**。(这里假设向量s1 = (x1,x2,x3)、s2 = (y1,y2,y3))
欧式距离是指在N维空间中两个点之间的真实距离,或者向量的自然长度(即该点到原点的距离)。“两个向量间”距离越小,相似度越大;距离越大,相似度越小。公式:
但是,欧氏距离有一个缺点,即“没有考虑向量的方向”;而余弦相似度“即考虑向量的方向,又考虑向量的大小”。
余弦相似度是指在一个向量空间中,将两个向量夹角间的余弦值作为衡量两个个体之间差异的大小。“两个向量间”余弦值越接近1(夹角趋于0),相似度越大;余弦值越接近于0(夹角趋于90度),相似度越小。公式:
二、举例
(注:这里的向量采用词频统计的方式)
词典为:[我们,又,去,爬山,今天,你们,昨天,跑步]
s1: “我们 今天 去 爬山” = [1,0,1,1,1,0,0,0] s2: “你们 昨天 跑步” = [0,0,0,0,0,1,1,1] s3: “你们 又 去 爬山 又 去 跑步” = [0,2,2,1,0,1,0,1]
|