2. 文本相似度计算

Wesley13
• 阅读 330

1. 文本相似度计算-文本向量化

2. 文本相似度计算-距离的度量

3. 文本相似度计算-DSSM算法

4. 文本相似度计算-CNN-DSSM算法

1. 前言

上文介绍了文本的向量化处理,本文是在上文的向量化处理后的数据进行距离的计算。距离度量的方式有多种多样,但是一种相似度计算方式并不适用与所有的情况,需要根据不同的情况和数据类型进行选择。

2. 相似度计算方式

相似度就是比较两个事物的相似性。一般通过计算事物的特征之间的距离,如果距离小,那么相似度大;如果距离大,那么相似度小。

简化问题:假设有两个对象$X$、$Y$,都包括$N$维特征,$X=(x_1,x_2,x_3,..,x_n),Y=(y_1,y_2,y_3,..,y_n)$,计算$X$和$Y$的相似性。常用的方法如下:

2.1 余弦相似度

余弦相似度用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小。相比距离度量,余弦相似度更加注重两个向量在方向上的差异,而非距离或长度上。适合word2vec模型向量化的数据。 $$ cos\theta = \frac{\sum_{i=1}^{n}x_{i}*y_{i}}{\sqrt{\sum_{i=1}^{n}x_{i}^{2} \sum_{i=1}^{n}y_{i}^{2}}} $$

2.2 欧式距离

欧氏距离是最常用的距离计算公式,衡量的是多维空间中各个点之间的绝对距离,当数据很稠密并且连续时,这是一种很好的计算方式。

因为计算是基于各维度特征的绝对数值,所以欧氏度量需要保证各维度指标在相同的刻度级别,如在KNN中需要对特征进行归一化。

$$ d = \sqrt{\sum_{i=1}^{n}(x_{i}-y_{i})^{2}} $$

2.3 曼哈顿距离

曼哈顿距离简单来说就是统计相同坐标轴上的距离的和。

$$ d = \sum_{i=1}^{n}|x_{i}-y_{i}| $$

2.4 闵可夫斯基距离

大家有没发现欧式距离和曼哈顿距离在形式上比较相近。是的,其实它们是闵可夫斯基距离的特殊化。适合TF-IDF向量化后的数据或者提炼出来的主题模型数据。 $$ d = (\sum_{i=1}^{n}(x_{i}-y_{i})^{p})^{\frac{1}{p}} $$

2.5 皮尔森相关系数(pearson)

皮尔森相关系数是衡量线性关联性的程度。

两个连续变量$(X,Y)$的pearson相关性系数$P_{X,Y}$等于它们之间的协方差$cov(X,Y)$除以它们各自标准差的乘积$\sigma{X}$,$\sigma{Y}$。系数的取值总是在-1.0到1.0之间,接近0的变量被成为无相关性,接近1或者-1被称为具有强相关性。

$$ P_{X,Y} = \frac{cov(X,Y)}{\sigma_{X}\sigma_{Y}} $$

2.6 Jaccard相似性系数

Jaccard(杰卡德)相似性系数主要用于计算符号度量或布尔值度量的样本间的相似度。若样本间的特征属性由符号和布尔值标识,无法衡量差异具体值的大小,只能获得“是否相同”这样一种结果,而Jaccard系数关心的是样本间共同具有的特征。适合词集模型向量化的数据。

$$ J(X,Y) = \frac{|X\bigcap{Y}|}{|X\bigcup{Y}|} $$

3. 总结

本文介绍的相似度计算方式,总的来说还是比较简单、易于理解。相似度计算方式的不同对最终结果的影响没有向量化方式不同影响大,但是相似度计算方式不同对计算时间影响比较大。下文将从深度学习的角度介绍文本相似度计算。

点赞
收藏
评论区
推荐文章
【NLP系列】Bert词向量的空间分布
我们知道Bert预训练模型针对分词、ner、文本分类等下游任务取得了很好的效果,但在语义相似度任务上,表现相较于Word2Vec、Glove等并没有明显的提升
Wesley13 Wesley13
2年前
4. Tensorflow的Estimator实践原理
1\.Tensorflow高效流水线Pipeline(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.cnblogs.com%2Fhuangyc%2Fp%2F10340766.html)2\.Tensorflow的数据处理中的Dataset和Iter
Easter79 Easter79
2年前
Spring之WebSocket
初次学习WebSocket。在本次写的WebSocketDemo里使用到了如下插件(技术):1.百度的富文本编辑器:http://ueditor.baidu.com/website/(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fueditor.baidu.com%2Fwebsit
Stella981 Stella981
2年前
Go 实现字符串相似度计算函数 Levenshtein 和 SimilarText
【转】http://www.syyong.com/Go/GoimplementsthestringsimilaritycalculationfunctionLevenshteinandSimilarText.html(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fwww
Stella981 Stella981
2年前
HTML5 网络拓扑图整合 OpenLayers 实现 GIS 地图应用
在前面《百度地图、ECharts整合HTforWeb网络拓扑图应用(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fwww.cnblogs.com%2Fxhload3d%2Fp%2F4358804.html)》我们有介绍百度地图和 HTforWeb(https://www.os
Wesley13 Wesley13
2年前
1. 容器化部署一套云服务 第一讲 Jenkins(Docker + Jenkins + Yii2 + 云服务器))
容器化部署一套云服务系列1\.容器化部署一套云服务之Jenkins(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.cnblogs.com%2Fjackson0714%2Fp%2Fdeploy1.html)一、购买服务器服务器!caeef00
Stella981 Stella981
2年前
FreeType字体知识
1.字形度量顾名思义,字形度量是对应每一个字形的特定距离,以此描述如何对文本排版。通常一个字形有两个度量集:用来排版水平文本排列的字形(拉丁文、西里尔文、阿拉伯文、希伯来文等等)和用来排版垂直文本排列的字形(中文、日文、韩文等等)。要注意的是只有很少的字体格式提供了垂直度量。你可以使用宏FT_HAS_VERTICAL测试
Stella981 Stella981
2年前
Quill富文本的使用以及自定义图片和视频处理事件
Quill富文本的使用   官网 https://quilljs.com/docs/quickstart/(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fquilljs.com%2Fdocs%2Fquickstart%2F)1、安装quill使用 mpniquill
Wesley13 Wesley13
2年前
LODOP打印图片水平居中
其他居中,查看本博客相关博文:LODOP中打印项水平居中简短问答(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.cnblogs.com%2Fhuaxie%2Fp%2F11988181.html)、图片也属于超文本打印项,因此如果想把图片居中,也需要图片本身内容相对于图片打
Wesley13 Wesley13
2年前
1. 集成学习(Ensemble Learning)原理
1\.集成学习(EnsembleLearning)原理(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.cnblogs.com%2Fhuangyc%2Fp%2F9949598.html)2\.集成学习(EnsembleLearning)Baggi