文本相似度算法总结

文本匹配算法主要用于搜索引擎,问答系统等,是为了找到与目标文本最相关的文本。例如信息检索可以归结成查询项和文档的匹配,问答系统可以归结为问题和候选答案的匹配,对话系统可以归结为对话和回复的匹配。

一、传统模型

基于字面匹配

  • 字面距离:字符串有字符构成,只要比较两个字符串中每一个字符是否相等便知道两个字符串是否相等,或者更简单一点将每一个字符串通过哈希函数映射为一个哈希值,然后进行比较。
  • 主要方法:TF-IDF、BM25 、simhash

语义匹配

  • LSA类模型 通过LSA得到的文本主题矩阵可以用于文本相似度计算,而计算方法一般是通过余弦相似度。

二、文本距离的概念(计算向量间的距离) 

  • 欧几里德距离

  • 曼哈顿距离

  • 切比雪夫距离

  • 汉明距离
  • 余弦距离(最常用)使用两个向量夹角的余弦值作为衡量两个个体间差异的大小

三、TF-IDF算法 

一个词的权重由TF * IDF 表示,其中TF表示词频,即一个词在这篇文本中出现的频率;IDF表示逆文档频率,即一个词在所有文本中出现的频率倒数。

文本相似度算法总结_第1张图片

例如计算以下文本的相似度:

1)分词:

2)统计所有词组:

 

3)获取TF词频,并乘以IDF权重,分别得到S1,S2的TF*IDF表示:

那么对于上述给定的两个属性向量A 和B,其余弦相似性θ由点积和向量长度给出,其余弦相似度的计算如下所示:

文本相似度算法总结_第2张图片 

四、BM25算法

  • BM25算法的主要思想:对查询句子进行分词,每个词看为qi,然后,对于搜索到的句子d,计算每个词qi与d的相关度得分,最后,将qi与d的相关性得分进行加权求和,从而得到查询句子与检索句子的相关性得分。
  • BM25算法的公式如下:

  • Wi表示第i个词的权重,这里我们一般会使用TF-IDF算法来计算词语的权重:

文本相似度算法总结_第3张图片

 五、simhash算法

simhash的主要思想是降维,将文本分词结果从一个高维向量映射成一个0和1组成的bit指纹(fingerprint),然后通过比较这个二进制数字串的差异进而来表示原始文本内容的差异。

文本相似度算法总结_第4张图片

 

文本相似度算法总结_第5张图片

文本相似度算法总结_第6张图片

汉明距离就是将一个字符串变换成另外一个字符串所需要「替换」的字符个数。

六、LSI模型

LSI模型 LSI是概率主题模型的一种,核心思想是:每篇文本中有多个概率分布不同的主题;每个主题中都包含所有已知词,但是这些词在不同主题中的概率分布不同。LSI通过奇异值分解的方法计算出文本中各个主题的概率分布。假设有5个主题,那么通过LSI模型,文本向量就可以降到5维,每个分量表示对应主题的权重。

方法:

1)将短文本映射到主题空间

2)比较两句文本的主题相似性

七、基于深度学习的文本匹配模型

  • 单语义模型:简单的用全连接、CNN类或RNN类的神经网络编码两个句子然后计算句子之间的匹配度
  • 多语义模型
  • 匹配矩阵模型:更多的考虑待匹配的句子间不同单词的交互,计算两两之间的匹配度,再用深度网络提取特征,更精细的处理句子中的联系
  • 深层次的句子间模型:用更精细的结构去挖掘句子内和句子间不同单词之间的联系

 

 

 

 

 

 

 

你可能感兴趣的:(论文阅读,深度学习)