QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2566|回复: 0
打印 上一主题 下一主题

文本相似度计算-度量方法

[复制链接]
字体大小: 正常 放大
杨利霞        

5273

主题

81

听众

17万

积分

  • TA的每日心情
    开心
    2021-8-11 17:59
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    网络挑战赛参赛者

    网络挑战赛参赛者

    自我介绍
    本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。

    群组2018美赛大象算法课程

    群组2018美赛护航培训课程

    群组2019年 数学中国站长建

    群组2019年数据分析师课程

    群组2018年大象老师国赛优

    跳转到指定楼层
    1#
    发表于 2023-4-13 21:10 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta

    % s" [7 ?4 R/ i5 M; I
    / E. Z1 S8 F- s! X* q; I* x文本相似度计算-度量方法6 l* x8 s$ Q2 W; R
    2. 文本相似度计算-距离的度量

    完整机器学习实现代码GitHub" @9 M+ h& V0 w$ j( X6 `$ J
    欢迎转载,转载请注明出处https://www.cnblogs.com/huangyc/p/9786731.html
    ! P' L3 k% b# x" {' X2 g! b  e欢迎沟通交流: 339408769@qq.com



    ) ^5 M& {; j2 D' c; P; ], r0. 目录
    • 1. 前言
    • 2. 相似度计算方式
      • 2.1 余弦相似度
      • 2.2 欧式距离
      • 2.3 曼哈顿距离
      • 2.4 闵可夫斯基距离
      • 2.5 皮尔森相关系数(pearson)
      • 2.6 Jaccard相似性系数4 K4 S& A% K2 J2 \: h3 E
    • 3. 总结
      1 n( l2 {1 ~, ?* R; D; \* d8 A

    9 Q- n) O/ t8 Q# ~& n

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

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

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

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

    回到顶部

    1. 前言

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

    回到顶部

    2. 相似度计算方式

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

    简化问题:假设有两个对象XX、YY,都包括NN维特征,X=(x1,x2,x3,..,xn),Y=(y1,y2,y3,..,yn)X=(x1,x2,x3,..,xn),Y=(y1,y2,y3,..,yn),计算XX和YY的相似性。常用的方法如下:

    9 ]7 {( [+ h  y: A' ?2 ]5 Q8 k
    2.1 余弦相似度

    余弦相似度用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小。相比距离度量,余弦相似度更加注重两个向量在方向上的差异,而非距离或长度上。适合word2vec模型向量化的数据。


    " Z* f0 l( E9 X

    cosθ=∑ni=1xi∗yi∑ni=1x2i∑ni=1y2i−−−−−−−−−−−−−√cosθ=∑i=1nxi∗yi∑i=1nxi2∑i=1nyi2


    5 z$ h/ h5 O  O, G  g) K2.2 欧式距离

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

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

    / v9 l4 {+ [, X1 J9 h/ ^

    d=∑i=1n(xi−yi)2−−−−−−−−−−√d=∑i=1n(xi−yi)2

    . p6 X  d: f  m
    2.3 曼哈顿距离

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

    * M* r$ r$ L; |0 W: Z/ c! q

    d=∑i=1n|xi−yi|d=∑i=1n|xi−yi|


    0 X. k% Y: l5 _& m. {, ^  v- |2.4 闵可夫斯基距离

    大家有没发现欧式距离和曼哈顿距离在形式上比较相近。是的,其实它们是闵可夫斯基距离的特殊化。适合TF-IDF向量化后的数据或者提炼出来的主题模型数据。


    + k' g9 v5 o  `6 i* W1 b

    d=(∑i=1n(xi−yi)p)1pd=(∑i=1n(xi−yi)p)1p


    3 Q, A" G+ r$ v! A2.5 皮尔森相关系数(pearson)

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

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


    9 v; B- b( e" z/ q% {

    PX,Y=cov(X,Y)σXσYPX,Y=cov(X,Y)σXσY


    2 z6 J2 A5 @# Z" X9 j! I  E) |0 u2.6 Jaccard相似性系数

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

    4 q2 I! z, |% _1 T

    J(X,Y)=|X⋂Y||X⋃Y|J(X,Y)=|X⋂Y||X⋃Y|

    回到顶部

    3. 总结

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

    3 f/ Z) L/ D! @
    3. 文本相似度计算-DSSM算法

    完整机器学习实现代码GitHub
    / C5 w8 u8 i, ^: ]欢迎转载,转载请注明出处https://www.cnblogs.com/huangyc/p/9794652.html
    5 U, M  x/ h- L, \2 T/ n欢迎沟通交流: 339408769@qq.com



    # t' \$ O1 b* }1 C0. 目录
    • 1. 前言
    • 2. DSSM原理
      • 2.1 DSSM架构
      • 2.2 DSSM优缺点
          w1 ?& ^8 f. {6 f1 t5 S
      5 A- h/ s# ~! H: e0 V
    ) Q3 y& S, R6 L& f* ^7 t

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

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

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

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

    回到顶部

    1. 前言

    最近在学习文本相似度的计算,前面两篇文章分别介绍了文本的向量化文本的距离度量,这两篇文章的思路主要在机器学习的框架下面,本文准备换一个思路,从深度学习的角度来处理文本相似度的问题。

    本文介绍DSSM(Deep Structured Semantic Models)深度学习架构。

    回到顶部

    2. DSSM原理

    DSSM的原理很简单,通过搜索引擎里Query和Doc的海量的点击曝光日志,用DNN把Query和Doc转化为低纬语义向量,并通过cosine距离来计算两个语义向量的距离,并且根据用户的点击选择Doc当做标签值进行有监督学习,最终训练出语义相似度模型。该模型既可以用来预测两个句子的语义相似度,又可以获得某句子的低纬语义向量表达。

    这里的一个重要的概念是低纬语义向量,它的意思是把一句文本通过一定的方式转换到一个固定维度的空间上,这样就可以对不同句子间计算相似度了。然后我们的任务就是需要去找各种方法在尽量保存文本本身信息的情况下,获得一个低维语义向量。AutoEncoder算法也是一种获得低纬语义向量的方法。


    5 u' ^/ u$ v* `2.1 DSSM架构

    DSSM的架构图如下所示:


      t- z: }2 W& c9 J$ s! [5 P) ^4 {

    我们从下到上的看数据流动的过程。

    输入数据:QQ代表用户的输入,DiDi代表比对的第ii个文档。

    • Term Vector层可以理解为输入层,我们简单的理解成把文本做one-hot处理后的词向量。这一层的矩阵维度在50W左右,矩阵太大,并且太稀疏,不容易训练。
    • Word Hashing层可以理解为数据预处理层,这一层主要是通过n-gram的方式降低矩阵维度。举个例子,假设用letter-trigams来切分单词(3个字母为一组,#表示开始和结束符),boy这个单词会被切为#-b-o,b-o-y,o-y-#。这样做的好处有两个:首先是压缩空间,50万w个词的one-hot向量空间可以通过letter-trigram压缩为一个3w维的向量空间。其次是增强范化能力,三个字母的表达往往能代表英文中的前缀和后缀,而前缀后缀往往具有通用的语义,在通过BOW对文本向量化。
      6 H: W! v! b+ V" D3 a

    这里之所以用 3 个字母的切分粒度,是综合考虑了向量空间和单词冲突:

    . D% S( L5 F6 S) N, w, b  m+ ]

    以50w个单词的词库为例,Bigram的切分粒度的单词冲突为1192(冲突的定义:至少有两个单词的letter-bigram向量完全相同),而TriGram的单词冲突降为22效果很好,且转化后的向量空间3w维不是很大,综合考虑选择TriGram的切分粒度。

    • Multi-layer nonlinear projection这一层就是DNN的处理了。上面的架构图中画了3层DNN结构。做了一个降维操作,3w->300->300->128。

      l1=W1xl1=W1x

      li=f(Wili−1+bi)li=f(Wili−1+bi)

      y=f(WNlN−1+bN)y=f(WNlN−1+bN)

    • Relevance层是把Query的向量和Doc中的所有向量做一个cosine的相似度计算。9 b0 z2 s3 ^, s( j" l

    ' h  F" _9 c! a- ~# X

    P(D|Q)=exp(γR(Q,D))∑di∈Dexp(γR(Q,D))P(D|Q)=exp(γR(Q,D))∑di∈Dexp(γR(Q,D))

    • softmax层把计算出的概率进行归一化输出。
      1 n0 v% z' l) g& |0 _# p$ E

    最终的loss是

      B1 J" y* Y9 \4 h- _8 @  E( e

    L(Λ)=−log∏(Q,D+)P(D+|Q)L(Λ)=−log∏(Q,D+)P(D+|Q)

    + c/ t- z% ?$ \
    2.2 DSSM优缺点

    从整体上看,DSSM还是对传统的机器学习和深度学习的方法进行了组合,先用n-gram进行矩阵压缩,再通过DNN网络进一步压缩,再通过cosine计算相似度,softmax输出归一化的相似度概率。

    • 优点:
      1 e' M6 v  R4 D6 I% E, Y
    • DSSM 用字向量作为输入既可以减少切词的依赖,又可以提高模型的范化能力,因为每个汉字所能表达的语义是可以复用的。
    • 传统的输入层是用Embedding的方式(如Word2Vec的词向量)或者主题模型的方式(如LDA的主题向量)来直接做词的映射,再把各个词的向量累加或者拼接起来,由于Word2Vec和LDA都是无监督的训练,这样会给整个模型引入误差,DSSM采用统一的有监督训练,不需要在中间过程做无监督模型的映射,因此精准度会比较高。
      & z8 L8 t3 A4 v. n7 \1 X$ V* q' r
    • 缺点:# v3 j# X8 M$ N5 l
    • 上文提到 DSSM 采用词袋模型(BOW),因此丧失了语序信息和上下文信息。
    • DSSM采用的是端到端的模型,预测结果不可控。
    • DSSM是弱监督模型,因为引擎的点击曝光日志里Query和Doc的语义信息比较弱。首先搜索引擎有自己的排序算法,排序算法决定了那些Doc显示在第一页。因为第一页的被点击率大大大于后面的Doc的点击率。所以用户点击第一页的概率的置信度不是太高。
      ! s7 p( m+ T# ]( o3 c. g& @
    3 P2 K; P& Q" x0 D& y" R

    0 S1 C3 G! d$ w8 o1 |" _: h+ d) i
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2025-5-10 09:35 , Processed in 0.364863 second(s), 50 queries .

    回顶部