首页 > 其他分享 >常见文本相似度计算方法简介:总结

常见文本相似度计算方法简介:总结

时间:2024-06-06 10:01:15浏览次数:15  
标签:term 简介 距离 文档 计算方法 相似 文本 向量

原文:文本相似度计算方法

文本相似度计算方法:有2个关键组件,即【文本表示模型(文本切分粒度、特征构建方法)】和【相似度度量方法】。

文本表示模型:将文本表示为计算机可以计算的数值向量,也就是提供特征。

相似度度量方法:负责基于前面得到的数值向量计算文本之间的相似度。

 

文本相似度计算方法分为【有监督】和【无监督】两类。

有监督方法,就是用朴素贝叶斯分类器之类的有监督模型来判断文本相似性或者计算相似度。这类方法要求有一定数量的标注语料,构建的代价比较高;由于训练语料通常无法做得很大,模型的泛化性不够,实际用起来会有点麻烦;距离计算环节的复杂度会比较高。

无监督方法,就是用欧氏距离等方法,直接计算文本之间的距离或者相似度。这类方法的特点是:不需要标注语料,特征工程或者参数估计可以使用很大的数据;很多方法对语言的依赖比较小,可以应对多语种混杂的场景;距离计算环节复杂度较低。

通常来说我们首先考虑无监督模式。

 

 

文本切分粒度

n-gram:n-gram越长,词表越大。quadgram,由于内存消耗较大、特征很稀疏,我们的工作会很难开展。一般来说,bigram的效果就挺好了。

【分词】:分词的目的是将文本切分为有句法意义的一个个小单元,便于人和机器理解文本的内容。分词的优势是,在字符相关性较小的位置进行切分、造成的信息损失比较小。由于分词降低了文本的相关性,可以提升一些带有独立性假设的模型。

【句法分析】:粗暴版句法分析(比如用“第一个名词+第一个动词+第二个名词”这个规则处理)。正经句法分析(提取“主+谓+宾”)。

【主题模型】:可以使用主题模型来提取文本的主题,用主题词来表示文本。

 

 

特征构建方法(是用数值向量表示文本的内容)

TF与TF-IDF(term frqeuncy向量):文本里的term之间相互独立,根据term的频率制定向量,比如两个文档中相同term词比较多,导致两篇文档比较相似。换句话说,TF对文档的区分能力比较低。地址层级就是把每个层级的term词进行向量化

词向量和句向量
simhash(敏感哈希算法):它会把一篇文档映射为一个长度为64、元素值为0或1的一维向量。这样我们就可以使用某种距离计算方式,计算两篇文本的距离和相似度了。一般来说,与simhash配合的是海明距离。对文本的“相同”与否特别敏感:当两篇文档相同时,相似度为1;当其中一篇略有不同,相似度会有明显降低。因此非常适合用来判断两篇文档内容是否相同。另外simhash的计算比较简单,速度上有一定优势。

 

 

相似度度量方法

【欧氏距离】:(求两点距离公式)(社会主义工资绝对平等)欧式距离是最符合我们直觉的一种距离度量方式。它认为事物的所有特征都是平等的。两个实例在所有维度上的差异的总和,就是二者的距离。
余弦距离】:(勾股定理)(两个文本作比较,把一个文本当做基准,求另一个文本和这个基准值的差异)当文本特征维度比较高的时候,在余弦距离的视角下,文本之间的区分度越来越小。这导致我们在设定“是否相同”的阈值时,遇到困难。因此余弦距离比较适用于文本较短,也就是特征维度较低的场景。
在gis中用的是两个文本字符的并集集合,来算出两个文本针对与该并集每个字符的频率,形成两个向量;

【Jacard相似度】:(交集/并集)杰卡德相似度一般被用来度量两个集合之间的差异大小。杰卡德距离的思想非常简单:两个集合共有的元素越多,二者越相似;为了控制距离的取值范围,我们可以增加一个分母,也就是两个集合拥有的所有元素。

【海明距离】:两篇文档的特征向量里,相等的维度越多,相似度就越大。
【最小编辑距离】:将字符串A不断修改(增删改)、直至成为字符串B,所需要的修改次数代表了字符串A和B的差异大小。当然了,将A修改为B的方案非常多,选哪一种呢?我们可以用动态规划找到修改次数最小的方案,最小编辑距离比较适合判断字面上的相似性,对文本字语义上的相似性无能为力。

 


不同相似度计算方法的特点和优缺点

gis文本命中aoi,用ES中地址库对应层级的分词来 模糊 匹配 目标地址

 

 

 

 

 

 

 

 

标签:term,简介,距离,文档,计算方法,相似,文本,向量
From: https://www.cnblogs.com/itqinls/p/18234527

相关文章

  • JPEG图片的解码与压缩简介
    JPEG图片的解码\压缩流程一、解码:1:创建并初始化一个JPEG解码对象(解码对象是一个结构图对象)/*Step1:allocateandinitializeJPEGdecompressionobject*//*overrideerror_exit.*//*NowwecaninitializetheJPEGdecompressionobject.*/jpeg_......
  • 深度学习 - PyTorch简介
    基础知识1.PyTorch简介PyTorch的特点和优势:动态计算图、易用性、强大的社区支持、与NumPy兼容。安装和环境配置:安装和验证PyTorch:pipinstalltorchtorchvision验证安装:importtorchprint(torch.__version__)运行结果:1.9.0#具体版本可能不同配置虚拟......
  • Redis 常用的数据结构简介与实例测试【Redis 系列二】
    〇、都有哪些数据结构?Redis提供了较为丰富的数据类型,常见的有五种:String(字符串),Hash(哈希),List(列表),Set(集合)、Zset(有序集合)。随着Redis版本的更新,后面又支持了四种数据类型:BitMap(2.2版新增)、HyperLogLog(2.8版新增)、GEO(3.2版新增)、Stream(5.0版新增)。本文将对以上数据类型,通......
  • 最像真人的语音转文本ChatTTS本地部署+Colab部署+跳坑指南
    1.WindowsChatTTSUI:https://github.com/jianchang512/ChatTTS-ui/releases/tag/v0.85v0.85完整包下载(2.7G含模型)百度网盘下载: https://pan.baidu.com/s/1RntYLT6UNd8_ew2osy8d1A?pwd=by14123网盘下载:https://www.123pan.com/s/03Sxjv-oEyB3.htmlhuggingfacelink: h......
  • 【SVG 生成系列论文(九)】如何通过文本生成 svg logo?IconShop 模型推理代码详解
    SVG生成系列论文(一)和SVG生成系列论文(二)分别介绍了StarVector的大致背景和详细的模型细节。SVG生成系列论文(三)和SVG生成系列论文(四)则分别介绍实验、数据集和数据增强细节。SVG生成系列论文(五)介绍了从光栅图像(如PNG、JPG格式)转换为矢量图形(如SVG、EPS格式)的关......
  • C++ 强制类型转换运算符简介
    C++提供了四种强制类型转换运算符:static_cast、reinterpret_cast、const_cast和dynamic_cast。这些运算符各自具有特定的用途,适用于不同的类型转换需求。本文将详细介绍这四种运算符及其应用场景,并讨论它们在向上转换中的使用方法。1.static_caststatic_cast用于在编译时执......
  • k8s简介
    Kubernetes的架构Kubernetes遵循客户端-服务器架构,其中主服务器安装在一台机器上,节点安装在单独的Linux机器上。它遵循主从模型,使用主服务器管理跨多个Kubernetes节点的Docker容器。主服务器及其控制的节点(工作节点)构成“Kubernetes集群”。开发人员可以在Kubernetes......
  • 一键云部署:资源编排 ROS 轻松部署文本转语音系统 ChatTTS
    ChatTTS是专门为对话场景设计的文本转语音模型,例如LLM助手对话任务。它支持英文和中文两种语言。最大的模型使用了10万小时以上的中英文数据进行训练。ChatTTSwebUI&API为ChatTTS提供了网页界面和API服务。资源编排服务(ResourceOrchestrationService,ROS)是阿里云提供基......
  • 笔记2:张量简介
    张量生成方法转自:https://www.cnblogs.com/miraclepbc/p/14329476.html张量的形状及类型张量的计算张量的梯度手写线性回归张量生成方法张量的形状及类型张量的计算张量的梯度手写线性回归......
  • 一周万星的文本转语音开源项目「GitHub 热点速览」
    上周的热门开源项目让我想起了「图灵测试」,测试者在不知道对面是机器还是人类的前提下随意提问,最后根据对方回复的内容,判断与他们交谈的是人还是计算机。如果无法分辨出回答者是机器还是人类,则说明机器已通过测试,具有人类的智力水平。​虽然现在大模型的回答还充满AI“味”,可......