发布网友 发布时间:2024-10-23 09:57
共1个回答
热心网友 时间:2024-11-03 18:43
在自然语言处理领域,文字和句子间的距离计算算法是基础且关键的,广泛应用于新闻分类、文本聚类、风险控制、舆情分析等领域。这些算法的性能很大程度上取决于距离矩阵,如kmeans中的距离矩阵、KNN的距离评估算法等。尽管学界已有诸如bag-of-words(BOW)、TF-IDF等经典方法用于距离计算,但这些方法存在缺陷,如距离矩阵稀疏、忽略语义信息等问题。
例如,“奥巴马在伊利诺伊州对媒体发表讲话”和“总统在芝加哥向媒体致意”两句话,虽然未出现完全相同的词,但语义上非常相似。传统距离评估方法很难捕捉这种语义相似性。尽管LDA、LSI等研究尝试改进语义表示,但效果并不理想。
2013年,Google团队提出的word2vec算法对自然语言处理领域具有里程碑意义。该算法尝试解决词本身与语义的关联关系。既然词可以通过语义表示,那么句子或段落之间的距离计算是否也可以借鉴这种方式呢?本文将参考相关文献,探讨和介绍WMD(Word Mover's Distance)算法。
一、WMD(Word Mover's Distance)的直观理解
将两段文字的每个字通过word2vec算法映射到embedding空间,然后在其中找到对应词语,计算每一对词在embedding空间中的距离,所有词对的距离之和即为WMD。如何确定对应词语是WMD需要解决的问题。
二、WMD的算法详解基本原理
1. word2vec将词映射到embedding空间
提供词的embedding映射表,将每个词映射到d维embedding空间。
2. 使用nBow(normalized bag-of-words)表示待比较的一段文字,为向量
3. 定义Word Travel Cost
将每对词的距离定义为word2vec空间的笛卡尔距离表示
4. 定义两段文本之间的距离
允许将一个文档中的任意词转换为另一个文档中的任意词,得到转移矩阵,计算Travel cost
5. 优化加速
根据三角不等式,'centorid' distance(WCD)是WMD的下界。放宽约束可找到更紧密的下界。