如何计算文档相似性

2024-06-18 03:38
文章标签 文档 计算 相似性

本文主要是介绍如何计算文档相似性,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近课题需要,整理一下文档相似性的一些研究,主要是参考知乎上面的回答和52nlp的相关文章。以备后期综述使用。具体还需要好好细读链接。

主要思路

  1. 01/one hot representation,BOW+tf-idf+LSI/LDA体系.
  2. docsim方法:gensim包,使用corpora.Dictionary(text),把所有单词取一个set(),并对set中每一个单词分配一个id号的map,dictionary.doc2bow(doc),把文档doc变成一个稀疏向量,[(0,1),(2,3)]表明id为0,2的词分别出现了1次和2次,其他未出现。Similarity相似度查询。结果比较稳定。
  3. word-embedding,使用NN思想,word2vec只能得到词向量,比较词之间的相似度,通过简单的加权、tag加权、tf-idf加权等方式得到文档向量。
  4. doc2vec,在word2vec模型中加入了段落向量,两者对比,word2vec加权方式丢失了最重要的句子结构信息,doc2vec保留了这种信息。
  5. 句法树加权,使用LSH,sciket-learn提供了lsh的实现,比较适合短文本。lshf = LSHForest(random_state=42),lshf.fit(x_train.toarray())
    主要参考用docsim/doc2vec/LSH比较两个文档之间的相似度和知乎Batman回答

一些知乎上的观点

  • 使用word2vec做,对于短句子有效。对于词之间的相关信息,无法表达。
  • 用LSI/LSA做,基于SVD分解方式,句子中词的顺序不会影响相似度结果。句子结构信息不敏感。
  • 目前的模型对长句子绝大部分不能work,短句子中文语境下,通过适当的调参(对结果影响比较显著的,我觉得有window size和min count),word2vec的结果还比较能看,doc2vec的结果一直都比较差,尤其是比较长一点儿的句子/文章。
  • 在文档级别上,我觉得doc2vec的robust程度还不足以支撑一个产品,稳健性程度不如LSI,或者简单的tf-idf。

一些比较好的网站

  1. gensim官方教程翻译
  2. word2vec使用教程
  3. 52nlp系列
  4. 中英文维基百科语料上的Word2Vec实验
  5. 如何计算两个文档的相似度:gensim lda 课程图谱例子
  6. 语义分析的一些方法,分为上中下三篇,介绍文本基本处理:分词、语言模型;文本语义分析:topic model ,词向量、句向量、卷积神经网络、文本分类;图片语义分析:图片分类、训练深度神经网络的tricks,非常棒的资料!
  7. sentence2vec

一些可参考论文

  1. 《Destributed Representation of sentences and documents》讲doc2vec
  2. 《Parsing Natural scenes and natural recursive neural networks》句法树
  3. ICML2015的论文《From word embeddings to document distances》提出一种计算doc相似度的方式,大致思路是将词之间的余弦距离作为ground distance,词频作为权重,在权重的约束条件下,求WMD的线性规划最优解。
  4. 《Convolutional Neural Netowrk for Modelling Sentence》简单的word2vec 相加除以词个数,叫做mean-pooling,是不能反映词序信息的,可以预训练向量,然后再上一个CNN卷积神经网络。
  5. 《From Word Embeddings To Document Distances》:主要是将计算机影像领域的EMD(earth mover’s distance)算法的思想,结合word2vec模型,移植到NLP领域,提出了一个文本距离的衡量概念:WMD(word mover’s distance),通过word2vec模型,可以计算出所有词语的n维词向量(用于评价词与词之间的相似度),再用词袋模型(Bag Of Words)得到词语在文章中的词频(看作一个词语在文章中的权重),那么问题就转化成为了如何在最小代价的情况下,将文章A的所有词单元“搬运”到文章B对应词单元中,因此变成了一个transportation optimization的问题。在短文本的处理上会比较好。-知乎 陈昊
  6. 《Distributed Representations of Sentences and Documents》Mikolov 14年发表的。实用性一般。 参考意义不大,只要还停留在word2vec的框架内,就无法model到语法结构对句子相似度的影响。
  7. 《How to generate a good word embedding》:语料大使用CBOW,语料小用skip-gram,影响相似度的因素:模型、语料、参数。评价指标:语义特征、用作特征、用作初始值。导读

这篇关于如何计算文档相似性的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1071200

相关文章

使用EasyPoi快速导出Word文档功能的实现步骤

《使用EasyPoi快速导出Word文档功能的实现步骤》EasyPoi是一个基于ApachePOI的开源Java工具库,旨在简化Excel和Word文档的操作,本文将详细介绍如何使用EasyPoi快速... 目录一、准备工作1、引入依赖二、准备好一个word模版文件三、编写导出方法的工具类四、在Export

利用Python操作Word文档页码的实际应用

《利用Python操作Word文档页码的实际应用》在撰写长篇文档时,经常需要将文档分成多个节,每个节都需要单独的页码,下面:本文主要介绍利用Python操作Word文档页码的相关资料,文中通过代码... 目录需求:文档详情:要求:该程序的功能是:总结需求:一次性处理24个文档的页码。文档详情:1、每个

C++读写word文档(.docx)DuckX库的使用详解

《C++读写word文档(.docx)DuckX库的使用详解》DuckX是C++库,用于创建/编辑.docx文件,支持读取文档、添加段落/片段、编辑表格,解决中文乱码需更改编码方案,进阶功能含文本替换... 目录一、基本用法1. 读取文档3. 添加段落4. 添加片段3. 编辑表格二、进阶用法1. 文本替换2

Python实现自动化删除Word文档超链接的实用技巧

《Python实现自动化删除Word文档超链接的实用技巧》在日常工作中,我们经常需要处理各种Word文档,本文将深入探讨如何利用Python,特别是借助一个功能强大的库,高效移除Word文档中的超链接... 目录为什么需要移除Word文档超链接准备工作:环境搭建与库安装核心实现:使用python移除超链接的

C#实现一键批量合并PDF文档

《C#实现一键批量合并PDF文档》这篇文章主要为大家详细介绍了如何使用C#实现一键批量合并PDF文档功能,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言效果展示功能实现1、添加文件2、文件分组(书签)3、定义页码范围4、自定义显示5、定义页面尺寸6、PDF批量合并7、其他方法

Python实现精确小数计算的完全指南

《Python实现精确小数计算的完全指南》在金融计算、科学实验和工程领域,浮点数精度问题一直是开发者面临的重大挑战,本文将深入解析Python精确小数计算技术体系,感兴趣的小伙伴可以了解一下... 目录引言:小数精度问题的核心挑战一、浮点数精度问题分析1.1 浮点数精度陷阱1.2 浮点数误差来源二、基础解决

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo

使用Python实现Word文档的自动化对比方案

《使用Python实现Word文档的自动化对比方案》我们经常需要比较两个Word文档的版本差异,无论是合同修订、论文修改还是代码文档更新,人工比对不仅效率低下,还容易遗漏关键改动,下面通过一个实际案例... 目录引言一、使用python-docx库解析文档结构二、使用difflib进行差异比对三、高级对比方

Python自动化处理PDF文档的操作完整指南

《Python自动化处理PDF文档的操作完整指南》在办公自动化中,PDF文档处理是一项常见需求,本文将介绍如何使用Python实现PDF文档的自动化处理,感兴趣的小伙伴可以跟随小编一起学习一下... 目录使用pymupdf读写PDF文件基本概念安装pymupdf提取文本内容提取图像添加水印使用pdfplum

Python从Word文档中提取图片并生成PPT的操作代码

《Python从Word文档中提取图片并生成PPT的操作代码》在日常办公场景中,我们经常需要从Word文档中提取图片,并将这些图片整理到PowerPoint幻灯片中,手动完成这一任务既耗时又容易出错,... 目录引言背景与需求解决方案概述代码解析代码核心逻辑说明总结引言在日常办公场景中,我们经常需要从 W