导航:首页 > 源码编译 > 文件相关性算法

文件相关性算法

发布时间:2023-01-06 09:14:04

❶ 文本相似度算法

TF是指归一化后的词频,IDF是指逆文档频率。给定一个文档集合D,有d1,d2,d3,......,dn∈D。文档集合总共包含m个词(注:一般在计算TF−IDF时会去除如“的”这一类的停用词),有w1,w2,w3,......,wm∈W。我们现在以计算词wi在文档dj中的TF−IDF指为例。
TF的计算公式为:
TF=freq(i,j) / maxlen(j)
在这里freq(i,j) 为wi在dj中出现的频率,maxlen(j)为dj长度。

TF只能时描述词在文档中的频率,但假设现在有个词为”我们“,这个词可能在文档集D中每篇文档中都会出现,并且有较高的频率。那么这一类词就不具有很好的区分文档的能力,为了降低这种通用词的作用,引入了IDF。
IDF的表达式如下:
IDF=log(len(D) / n(i))
在这里len(D)表示文档集合D中文档的总数,n(i)表示含有wi这个词的文档的数量。

得到TF和IDF之后,我们将这两个值相乘得到TF−IDF的值:
TF−IDF=TF∗IDF
TF可以计算在一篇文档中词出现的频率,而IDF可以降低一些通用词的作用。因此对于一篇文档我们可以用文档中每个词的TF−IDF组成的向量来表示该文档,再根据余弦相似度这类的方法来计算文档之间的相关性。

BM25算法通常用来做搜索相关性评分的,也是ES中的搜索算法,通常用来计算query和文本集合D中每篇文本之间的相关性。我们用Q表示query,在这里Q一般是一个句子。在这里我们要对Q进行语素解析(一般是分词),在这里以分词为例,我们对Q进行分词,得到q1,q2,......,qt这样一个词序列。给定文本d∈D,现在以计算Q和d之间的分数(相关性),其表达式如下:

Score(Q,d)=∑ti=1wi∗R(qi,d)
上面式子中wi表示qi的权重,R(qi,d)为qi和d的相关性,Score(Q,d)就是每个语素qi和d的相关性的加权和。

wi的计算方法有很多,一般是用IDF来表示的,但这里的IDF计算和上面的有所不同,具体的表达式如下:

wi=IDF(qi)=logN−n(qi)+0.5n(qi)+0.5
上面式子中N表示文本集合中文本的总数量,n(qi)表示包含qi这个词的文本的数量,0.5主要是做平滑处理。

R(qi,d)的计算公式如下:

R(qi,d)=fi∗(k1+1)fi+K∗qfi∗(k2+1)qfi+k2
其中

K=k1∗(1−b+b∗dlavgdl)
上面式子中fi为qi在文本d中出现的频率,qfi为qi在Q中出现的频率,k1,k2,b都是可调节的参数,dl,avgdl分别为文本d的长度和文本集D中所有文本的平均长度。

一般qfi=1,取k2=0,则可以去除后一项,将上面式子改写成:

R(qi,d)=fi∗(k1+1)fi+K
通常设置k1=2,b=0.75。参数b的作用主要是调节文本长度对相关性的影响。

❷ 文本算法是什么意思

在文本信息空间内寻找任何两个最相关的文本信息,并将之简并成一个文本信息,从而实现信息数量的收缩。
简并算法的实现通过比较整个信息空间内的所有文本的相关性(相识性),得到相互之间的相关性后两两(注)进行配对。配对的要求是这两个文本信息的相关性最大,例如A 找到了文档B,那么B 也一定找到最相关的文档就是A 。

注,某些情况A 最相近的文档是C ,那么B 而B 最相关的文档也是C ,存在一种情况,A,B,C 三者之间自恰,就是构成空间信息最近的一个三角形。

得到了最相似文档后,将只进行平均化,或者简单的迭加。

信息空间中独立信息的数量会减少到原来的一半以下,然后重复实现1 的过程,在进行兼并。

信息最后简并到唯一的一个信息,就是整个信息文本的平均值。

画出信息树的结构,就能够根据要进行规模不同大小的聚类进行自动聚类了。

❸ 经典检索算法:BM25原理

本文cmd地址: 经典检索算法:BM25原理

bm25 是一种用来评价搜索词和文档之间相关性的算法,它是一种基于 概率检索模型 提出的算法,再用简单的话来描述下bm25算法:我们有一个query和一批文档Ds,现在要计算query和每篇文档D之间的相关性分数,我们的做法是,先对query进行切分,得到单词$q_i$,然后单词的分数由3部分组成:

最后对于每个单词的分数我们做一个求和,就得到了query和文档之间的分数。

讲bm25之前,我们要先介绍一些概念。

BIM(binary independence model)是为了对文档和query相关性评价而提出的算法,BIM为了计算$P(R|d,q)$,引入了两个基本假设:

假设1
一篇文章在由特征表示的时候,只考虑词出现或者不出现,具体来说就是文档d在表示为向量$vec x=(x_1,x_2,...,x_n)$,其中当词$t$出现在文档d时,$x_t=1$,否在$x_t=0$。
假设2
文档中词的出现与否是彼此独立的,数学上描述就是$P(D)=sum_{i=0}^n P(x_i)$
有了这两个假设,我们来对文档和query相关性建模:

接着因为我们最终得到的是一个排序,所以,我们通过计算文档和query相关和不相关的比率,也可得文档的排序,有下面的公式:

由于每个 xt 的取值要么为 0 要么为 1,所以,我们可得到:

我们接着做下面的等价变换:

其中N是总的文档数,dft是包含t的文档数。

以上就是BIM的主要思想,后来人们发现应该讲BIM中没有考虑到的词频和文档长度等因素都考虑进来,就有了后面的BM25算法,下面按照

3个部分来介绍bm25算法。

,也就是有多少文档包含某个单词信息进行变换。如果在这里使用 IDF 的话,那么整个 BM25 就可以看作是一个某种意义下的 TF-IDF,只不过 TF 的部分是一个复杂的基于文档和查询关键字、有两个部分的词频函数,还有一个就是用上面得到的ct值。

tf-idf中,这个信息直接就用“词频”,如果出现的次数比较多,一般就认为更相关。但是BM25洞察到:词频和相关性之间的关系是非线性的,具体来说,每一个词对于文档相关性的分数不会超过一个特定的阈值,当词出现的次数达到一个阈值后,其影响不再线性增长,而这个阈值会跟文档本身有关。

在具体操作上,我们对于词频做了”标准化处理“,具体公式如下:

其中,tftd 是词项 t 在文档 d 中的权重,Ld 和 Lave 分别是文档 d 的长度及整个文档集中文档的平均长度。k1是一个取正值的调优参数,用于对文档中的词项频率进行缩放控制。如果 k 1 取 0,则相当于不考虑词频,如果 k 1取较大的值,那么对应于使用原始词项频率。b 是另外一个调节参数 (0≤ b≤ 1),决定文档长度的缩放程度:b = 1 表示基于文档长度对词项权重进行完全的缩放,b = 0 表示归一化时不考虑文档长度因素。

如果查询很长,那么对于查询词项也可以采用类似的权重计算方法。

其中,tftq是词项t在查询q中的权重。这里k3 是另一个取正值的调优参数,用于对查询中的词项tq 频率进行缩放控制。

于是最后的公式是:

gensim在实现bm25的时候idf值是通过BIM公式计算得到的:

然后也没有考虑单词和query的相关性。

此处 EPSILON 是用来表示出现负值的时候怎么获取idf值的。

总结下本文的内容:BM25是检索领域里最基本的一个技术,BM25 由三个核心的概念组成,包括词在文档中相关度、词在查询关键字中的相关度以及词的权重。BM25里的一些参数是经验总结得到的,后面我会继续介绍BM25的变种以及和其他文档信息(非文字)结合起来的应用。

BM25 算法浅析

搜索之 BM25 和 BM25F 模型

经典搜索核心算法:BM25 及其变种

信息检索导论

❹ 文本相似度-bm25算法原理及实现

BM25算法,通常用来作搜索相关性平分。一句话概况其主要思想:对Query进行语素解析,生成语素qi;然后,对于每个搜索结果D,计算每个语素qi与D的相关性得分,最后,将qi相对于D的相关性得分进行加权求和,从而得到Query与D的相关性得分。
BM25算法的一般性公式如下:

其中,Q表示Query,qi表示Q解析之后的一个语素(对中文而言,我们可以把对Query的分词作为语素分析,每个词看成语素qi。);d表示一个搜索结果文档;Wi表示 语素qi的权重 ;R(qi,d)表示 语素qi与文档d的相关性得分

下面我们来看如何定义 。判断 一个词的权重 ,方法有多种,较常用的是IDF。这里以IDF为例,公式如下:

其中,N为索引中的 全部文档数 ,n(qi)为 包含了qi的文档数。
根据IDF的定义可以看出,对于给定的文档集合, 包含了qi的文档数越多,qi的权重则越低 。也就是说,当很多文档都包含了qi时,qi的区分度就不高,因此使用qi来判断相关性时的重要度就较低。
我们再来看语素qi与文档d的相关性得分 。首先来看BM25中相关性得分的一般形式:

其中,k1,k2,b为 调节因子 ,通常根据经验设置,一般k1=2,k2=1,b=0.75;fi为 qi在d中的出现频率 ,qfi为 qi在Query中的出现频率 。dl为 文档d的长度 ,avgdl为 所有文档的平均长度 。由于绝大部分情况下,qi在Query中只会出现一次, 即qfi=1 ,因此公式可以简化为:

从K的定义中可以看到,参数b的作用是 调整文档长度对相关性影响的大小 b越大,文档长度的对相关性得分的影响越大 ,反之越小。而 文档的相对长度越长,K值将越大,则相关性得分会越小 。这可以理解为,当文档较长时,包含qi的机会越大,因此,同等fi的情况下,长文档与qi的相关性应该比短文档与qi的相关性弱。
综上,BM25算法的相关性得分公式可总结为:

分段再分词结果

列表的每一个元素是一个dict,dict存储着 一个文档中每个词的出现次数

存储每个词的idf值

['自然语言', '计算机科学', '领域', '人工智能', '领域']与每一句的相似度

https://github.com/jllan/jannlp/blob/master/similarity/bm25.py

❺ BM25算法解析

                                                                         

参考文档: http://luokr.com/p/7

ElasticSearch相关度是根据打分机制来计算的。对于每一条搜索结果都会计算出相应的得分,分数越高,代表相关度越高。BM25算法是ElstaticSearch默认的打分算法。

BM25算法通常用来作为搜索相关性评分:对查询经进行语素解析,生成语素气;然后,对于每个搜索结果d,计算每个语素气与d的相关性得分,最后,将气相对于d的相关性得分进行加权求和,从而得到查询与d的相关性得分。

BM25:

首先解析公式前半段:

科普:IDF又叫做逆向文档频率,意思就是    对于给定的文档集合(意思就是公文索引库),包含该关键字的文档越多,该关键字的权重越低(对于整个索引库来说,该关键字出现的次数越多,说明此关键字的参考价值越低);

其中,Q表示查询,补气(就是把一句搜索的话分成若干个关键词)标识Q解析之后的一个语素(对中文而言,我们可以把对查询的分词作为语素分析,每个词看成语素补气);d标识一个搜索结果文档(就相当与一条搜索出来的公文),无线表示语素气的权重。

IDF(逆向文档频率)计算公式如下:

其中,N为索引中的全部文档数,N(QI)为包含了气(也就是关键字)的文档数。

再来看关键词与文档d的相关性得分R(气,d),也就是BM25算法的后半部分

其中,K1为调节因子,b=0.75,avgdl为所有文档的平均长度,dl为文档d的长度,从K的定义中可以看出,参数b的作用是调整文档长度对相关性影响的大小,b越大,文档长度的对相关性得分影响越大,而文档相对长度越长,K值将越大,则相关性的分会越小。

总结:

影响ElasticSearch得分因素:

     1.词频,搜索关键词在文档d中出现的次数成正比

     2.逆向文档频率,搜索关键词在索引库中出现的次数成反比

     3.文档d的长度成反比

     4.搜索语句在文档d中的匹配度成正比

❻ 如何计算两个文档的相似度

如何计算两个文档的相似度
winmerge用这个
操作步骤为:
FC——文件比较命令
1.功能:比较文件的异同,并列出差异处。
2.类型:外部命令
3.格式:FC[盘符:][路径名]〈文件名〉[盘符:][路径名][文件名][/A][/B][/C][/N]
4.使用说明:
(1)选用/A参数,为ASCII码比较模式;
(2)选用/B参数,为二进制比较模式;
(3)选用/C参数,将大小写字符看成是相同的字符。
(4)选用/N参数,在ASCII码比较方式下,显示相异处的行号。

❼ 相关性分析的算法有那些

就是一个简单的pearson相关系数,但是前提是两组变量呈正态性,做散点图显示存在相关性。如果不是正态总体可以用spearnman相关系数。
模型就是一个简单的直线相关。可以求出相关系数,亦可以做简单的直线回归。

❽ 计算机如何理解事物的相关性-文档的相似度判断

生活中,我们经常会对比两个事物的 相关性 ,也可以叫做 相似度

人类会根据自己的经验,很容易的判断两件事物是否相似,或者相似度是多少。那如何让 计算机 也能够进行这样的判断呢?

我们都知道,计算机并没有思维,它只能理解数字。所以,如果想让计算机理解我们现实世界中的事物,必须先把现实事物转换成数字。

空间向量模型假设,任何事物都可以转换成 N 维空间中的一个点 ,这个点称为 向量 ,然后通过计算 向量之间的距离或夹角 ,来判断向量的之间相关性,进而判断事物之间的相关性。

什么是向量

向量代表了事物的特征。

向量是相对标量而言,标量只是单个数字,没有方向性。向量也叫矢量,由一组数字构成,具有方向性。

例如,用下图中的 x 表示向量,其中 n 表示向量的维度:

两个向量所对应的两点之间的距离就是向量的距离,距离可以描述不同向量在向量空间中的差异,也就是现实事物之间的差异。

常用的计算距离的方法有四种:

其中使用最多的是欧氏距离,下面一一介绍。

麦哈顿距离

麦哈顿距离 可以理解为街道距离,或者出租车距离。

可以看到下图中,从A 点到B 点,不管是走 1线路 还是 2线路 ,距离都是一样的,这个线路的距离就是麦哈顿距离。

二维空间中的两个点 A(x1, x2) 和 B(y1, y2) ,麦哈顿距离的计算公式为:

n 维空间中的两个点 A(x1...xn) 和 B(y1...yn) ,麦哈顿距离的计算公式为:

欧式距离

欧式距离 也叫欧几里得距离,比较好理解,就是直线距离。

如下图,A 点到B 点的直线距离就是欧式距离。

对于二维空间中的两个点 A(x1, x2) 和 B(y1, y2) ,欧式距离的计算公式为:

对于 n 维空间中的两点 A(x1...xn) 和 B(y1...yn) ,欧式距离的计算公式为:

切比雪夫距离

切比雪夫距离 可以类比为在方格中走格子,怎样走的格子数最少。

如下图中,从A 格子走到B 格子,先斜线走,再直线走,最终走的 格子数 就是切比雪夫距离。

对于二维空间中的两个点 A(x1, x2) 和 B(y1, y2) ,切比雪夫距离的计算公式为:

上面公式的含义是, ∣x1 − y1∣ 和 ∣x2 − y2∣ 两者的最大者。

对于 n 维空间中的两点 A(x1...xn) 和 B(y1...yn) ,切比雪夫距离的计算公式为:

闵可夫斯基距离

闵可夫斯基距离 也叫做闵氏距离,它并不是一种单独的距离,而是上面三种距离的统一。

对于二维空间中的两个点 A(x1, x2) 和 B(y1, y2) ,闵可夫斯基距离的计算公式为:

对于 n 维空间中的两点 A(x1...xn) 和 B(y1...yn) ,闵可夫斯基距离的计算公式为:

根据 p 取值的不同,闵可夫斯基距离表示不同的距离:

向量也是有大小的,向量的大小就是向量的长度。

向量的长度也叫 向量的模 ,它是向量所对应的 点到空间原点的距离 ,通常使用 欧氏距离 来表示向量的长度。

数学中有一个概念叫做 范数 ,范数常被用来衡量向量的长度。

范数有4 种,分别对应向量的4 种距离:

向量的夹角经常用 余弦值 表示。

对于二维空间中的两个点 A(x1, x2) 和 B(y1, y2) ,余弦的计算公式为:

对于 n 维空间中的两点 A(x1...xn) 和 B(y1...yn) ,余弦的计算公式为:

夹角的余弦取值范围是 [-1, 1] ,那么:

我们可以将向量的距离与夹角展现在同一个 N 维坐标系中,如下:

向量的余弦取值范围是 [-1, 1] ,余弦值越大,表示越相似,正好与相似度成正比。

对于向量之间的距离,通常用 欧式距离 ED表示, ED 越小,表示越相似,与相似度成反比,而且 ED 的取值范围非常大。

所以通常会将欧式距离进行 1/(ED+1) 归一化 处理,用 ED' 表示。 ED' 的取值范围是 [0, 1] ,并且与相似度成正比:

应用空间向量模型的机器学习算法有 K 近邻(KNN)分类、K 均值(K-Means) 聚类 等。

为了让计算机能够判断现实事物的相似度,我们引出了 空间向量 的概念。

下面我们来看如何使用空间向量,来判断 文档相似度

比如,现在我们有两个中文句子,要判断这两个句子的相似度:

要想将文档转换成向量,首先需要对文档进行分词。

分词

我们可以使用 jieba 对这两个句子进行分词,结果如下:

可以得到所有词的集合:

计算每个句子的分词的词频:

从而可以得到词频向量:

上文中,我们介绍了,可以通过向量的 距离 或者 余弦夹角 来度量向量之间的相似度。这里我们使用余弦夹角来计算。我们知道 N 维空间的余弦公式为:

从而可以计算余弦夹角为:

可以看到,最终算出的余弦夹角为 0.85 ,比较接近 1 ,说明这两个句子还是很相近的。

本篇文章主要介绍了以下几点:

(本节完。)

推荐阅读:

决策树算法-理论篇-如何计算信息纯度

决策树算法-实战篇-鸢尾花及波士顿房价预测

朴素贝叶斯分类-理论篇-如何通过概率解决分类问题

朴素贝叶斯分类-实战篇-如何进行文本分类

❾ BM25算法

bm25 是一种用来评价搜索词和文档之间相关性的算法,它是一种基于 概率检索模型 提出的算法,再用简单的话来描述下bm25算法:我们有一个query和一批文档Ds,现在要计算query和每篇文档D之间的相关性分数,我们的做法是,先对query进行切分,得到单词,然后单词的分数由3部分组成:

最后对于每个单词的分数我们做一个求和,就得到了query和文档之间的分数。

讲bm25之前,我们要先介绍一些概念。

BIM(binary independence model)是为了对文档和query相关性评价而提出的算法,BIM为了计算,引入了两个基本假设:

假设一:二元假设

所谓二元假设,类似于布尔模型的表示方法,一篇文章在由特征表示的时候,以特征“出现”和“不出现”两种情况来表示,也可以理解为相关不相关。

假设二:词汇独立性假设

所谓独立性假设,是指文档里出现的单词之间没有任何关联,任一个单词在文章中的分布率不依赖于另一个单词是否出现,这个假设明显与事实不符,但是为了简化计算,很多地方需要做出独立性假设,这种假设是普遍的。

在以上两个假设的前提下,二元独立模型即可以对两个因子P(D|R)和P(D|NR)进行估算(条件概率),举个简单的例子,文档D中五个单词的出现情况如下:{1,0,1,0,1} 0表示不出现,1表示出现。用Pi表示第i个单词在相关文档中出现的概率,在已知相关文档集合的情况下,观察到文档D的概率为:

对于因子P(D|NR),我们假设用Si表示第i个单词在在不相关文档集合中出现的概率,于是在已知不相关文档集合的情况下,观察到文档D的概率为:

于是我们可以得到下面的估算

可以将各个因子规划为两个部分,一部分是在文档D中出现的各个单词的概率乘积,另一部分是没在文档D中出现的各个单词的概率乘积,于是公式可以理解为下面的形式

对公式进行一下等价的变换,可得:

为了方便计算,对上述公式两边取log,得到:

那么如何估算概率Si和Pi呢,如果给定用户查询,我们能确定哪些文档集合构成了相关文档集合,哪些文档构成了不相关文档集合,那么就可以用如下的数据对概率进行估算:

根据上表可以计算出Pi和Si的概率估值,为了避免log(0),对估值公式进行平滑操作,分子+0.5,分母+1.0

代入估值公式得到:

这个公式代表的含义就是,对于同时出现在查询Q和文档D中的单词,累加每个单词的估值结果就是文档D和查询Q的相关性度量,在预先不知道哪些文档相关哪些文档不相关的情况下,可以使用固定值代替,这种情况下该公式等价于向量空间模型(VSM)中的IDF因子,实际证明该模型的实际使用结果不好,但是它是BM25模型的基础。
后来人们发现应该讲BIM中没有考虑到的词频和文档长度等因素都考虑进来,就有了后面的BM25算法。

BIM(二元假设模型)对于 单词特征 ,只考虑单词是否在 doc中出现过 ,并没有考虑 单词本身的相关特征 ,BM25在BIM的基础上引入单词在查询中的权值,单词在doc中的权值,以及一些经验参数,所以BM25在实际应用中效果要远远好于BIM模型。

BM25由3部分组成:

在第二部分中K因子代表了文档长度的考虑,dl是文档的长度,avdl是文档的平均长度,k1和b是调整参数,b为0时即不考虑文档长度的影响,经验表明b=0.75左右效果比较好。但是也要根据相应的场景进行调整。b越大对文档长度的惩罚越大,k1因子用于调整词频,极限情况下k1=0,则第二部分退化成1,及词频特征失效,可以证明k1越大词频的作用越大。

在我们不知道哪些文档相关,哪些文档不相关的情况下,将相关文档数R及包含查询词相关文档数r设为0,那么第一部分的BIM公式退化成:

就是IDF因子的定义,N是总文档数,n是查询词的tf信息,0.5是平滑因子。

阅读全文

与文件相关性算法相关的资料

热点内容
钢筋是怎么加密的 浏览:441
二分查找算法php 浏览:518
php产品对比 浏览:641
解压伤感图片 浏览:476
python判断周几 浏览:17
数据文档加密保管 浏览:168
app会员如何运营 浏览:860
工行app登录名如何改 浏览:25
window怎么登陆服务器 浏览:992
Python取ID对应的值 浏览:633
现在我的世界什么服务器最混乱 浏览:764
美国好的源码出售 浏览:326
苹果ipad文件夹怎么添加文字 浏览:485
腾讯云连接自己的服务器地址 浏览:218
硕士英语综合教程pdf 浏览:46
分段加密的安全性 浏览:507
咪咕直播为什么没有适配安卓系统 浏览:172
php模版大全 浏览:102
没车能解压吗 浏览:634
php开发oa系统源码 浏览:759