原文:文本相似度计算方法
文本相似度计算方法:有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