您现在的位置是:首页 > 数码 > 

LP篇【01】tfidf与bm25介绍与对比

2025-07-25 22:14:05
LP篇【01】tfidf与bm25介绍与对比 上一篇:自然语言处理【LP】遇上电商——专栏导读 下一篇:LP篇【02】白话Word2vec原理以及层softmax、负采样的实现 一、tfidf介绍 词频(TF) = 某个词在文章中的出现次数 / 文章总词数,逆文档频率(IDF)

LP篇【01】tfidf与bm25介绍与对比

上一篇:自然语言处理【LP】遇上电商——专栏导读 下一篇:LP篇【02】白话Word2vec原理以及层softmax、负采样的实现

一、tfidf介绍

词频(TF) = 某个词在文章中的出现次数 / 文章总词数,逆文档频率(IDF) = log(语料库的文章总数/包含该词的文章总数1),tfidf=tf*idf。举个例子一下子就明白了。如语料库包含以下三篇文章(什么是语料库可百度):

第一篇:张一山与杨紫疑似相恋

第二篇:C罗又一次完成了帽子戏法,这就是足球的魅力

第三篇:恭喜TES创历史记录,在s10的世界总决赛上完成了让二追三

首先是对每篇文章进行分词且过滤停用词得doc_lis=[[张一山,...,相恋],[C罗,...,魅力],[恭喜,...,让二追三]],然后依次计算每个词的tfidf。TF(张一山)=1/4(“与”作为停用词过滤掉了所以是4)  IDF(张一山)=log(/11),所以tfidf=TF*IDF=1/4*log/2=0.25*0.405=0.1,按照这个方式依次计算就能得到所有词的tfidf,最终的结果如下表:

文章\词张一山杨紫...完成让二追三
第一篇0.10.100
第二篇0000
第三篇00tfidf值tfidf值

这张表的shape应该(总词数,总文章数),因此tfidf的应用可以有:1、文章关键词提取(可以提取tfidf值前几个作为关键词)2、文章分类,这个矩阵直接输入到项lsvm,lr等模型(当然要打好label)、用LDA或SVD进行降维(为什么要降维,因为语料库的总词数是非常多的,所以每篇文章的向量是非常稀疏的),再当做文章的embeding  4、把tfidf或idf值当做每个词的权重

tfidf算法的优点:简单,快速,如果语料库是不变的话,可以提前离线计算好语料库中所有词的tfidf值(这在实际应用中非常重要的,后面有这个应用的举例)

缺点:1、仅以“词频”度量词的重要性,后续构成文档的特征值序列,词之间各自独立,无法反映序列信息 2、tfidf得到是一个稀疏而庞大的矩阵,需要采用降维方式,才方便做后续的文本任务,而降维可能会损失一些信息,同时降维的也会提高模型的复杂度,而失去了原本快速的优点 、tfidf得到的embedings再输入后续的模型,做文本分类、文本匹配等任务,在效果上通常会差于采用词向量模型训练得到的embedding。

二、bm25

bm25 是一种用来评价搜索词和文档之间相关性的算法,用简单的话来描述下bm25算法:我们有一个query和一批文档Ds,现在要计算query和每篇文档D之间的相关性分数。这种场景的应用就有很多:1、电商中计算搜索词query与商品的之间的相关性 2、知乎搜索中搜索词query与回答之间的相关性 、匹配式智能客服中,用户问题与答案之间的相关性等。那bm25算法是怎样计算query与文档之间的相关性的呢?BM25算法计算相关性的一般性公式如下:

其中,Q表示Query,qi表示Q分词之后的每个单词;d表示一个文档;Wi表示词qi的权重;R(qi,d)表示词qi与文档d的相关性得分。所以query中每个词与文档的相关性的加权和就是query与文档的相关性得分。而求query中每个词的权重就可以使用上面所讲的tfidf,但常常只用idf(后面会讲为什么只用idf的原因),而这里采用idf的公式为:

其中n(qi)是文档包含词qi的文档数,是文档总数,和上面的idf计算公式有点不同,但思路是相同的。而求R(qi,d)的公式为如下:

其中,k1,b为调节因子,通常根据经验设置,一般k1=2,b=0.75;fi为qi在d中的出现频率,dl为文档d的长度,avgdl为所有文档的平均长度。总的来讲就是R(qi,d)与这个词在该文档中出现的频率呈正相关,与该文档的长度呈负相关。最终Score(Q,d)的公式为:

同样下面我举例计算一下,同样假如有三个文档如下:

第一篇:张一山与杨紫疑似相恋

第二篇:C罗又一次完成了帽子戏法,这就是足球的魅力

第三篇:恭喜TES创历史记录,在s10的世界总决赛上完成了让二追三

用户输入的query是“足球相关新闻”,下面我来计算一下和哪篇最相关。首先分此后query=[足球,相关,新闻]

第一篇中:idf(足球)=log(-00.5)/(00.5),idf(相关)=log(-00.5)/(00.5),idf(新闻)=log(-00.5)/(00.5)

                  R(足球,第一篇)=0*(21)/(0K)=0,R(相关,第一篇)=0,R(新闻,第一篇)=0,所以

                  Score(“足球相关新闻”,第一篇)=0

同理可以计算和第二篇的相似性得分,最终可以发现和第二篇相似性得分最高。

下面我就解释下只用idf做权重的原因:

       

写成这样Score(Q,d)=,你就会发现bm25公式的后面其实就是tfidf的一个改良版,所以不是tfidf乘后面。所以你会发现bm25其实就是把query中每个词,在每篇文档中的tfidf(改良后的)值求和即为该query与该文档的相似性得分。为什么说是改良版,后者会比传统的tfidf效果要好吗?

传统的TF值理论上是可以无限大的。而BM25与之不同,它在TF计算方法中增加了一个常量k,用来限制TF值的增长极限。下面是两种计算方法中,词频对TF Score影响的走势图。从图中可以看到,当tf增加时,TF Score跟着增加,但是BM25的TF Score会被限制在0~k1之间。它可以无限逼近k1,但永远无法触达它。这在业务上可以理解为某一个因素的影响强度不能是无限的,而是有个最大值,这也符合我们对文本相关性逻辑的理解。 

bm25的算法的优缺点:

优点:可以方便线下做离线先计算好文档中出现的每一个词的idf并保存为一个字典,当用户搜了一个query,直接分词然后查字典就能得到这个词的idf,如果字典中没有idf值无意义,因为R=0。同于tfidf。

缺点:同于tfidf

#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/shuma/857300.html

相关标签:无
上传时间: 2024-02-10 11:35:48
留言与评论(共有 18 条评论)
本站网友 常州租房网
6分钟前 发表
tfidf得到是一个稀疏而庞大的矩阵,需要采用降维方式,才方便做后续的文本任务,而降维可能会损失一些信息,同时降维的也会提高模型的复杂度,而失去了原本快速的优点
本站网友 maya成人论坛
11分钟前 发表
首先分此后query=[足球,相关,新闻] 第一篇中:idf(足球)=log(-00.5)/(00.5),idf(相关)=log(-00.5)/(00.5),idf(新闻)=log(-00.5)/(00.5)                   R(足球,第一篇)=0*(21)/(0K)=0,R(相关,第一篇)=0,R(新闻,第一篇)=0,所以                   Score(“足球相关新闻”
本站网友 田中邦卫
6分钟前 发表
tfidf得到的embedings再输入后续的模型,做文本分类
本站网友 bt电驴
2分钟前 发表
从图中可以看到,当tf增加时,TF Score跟着增加,但是BM25的TF Score会被限制在0~k1之间
本站网友 中国松阳
25分钟前 发表
文章关键词提取(可以提取tfidf值前几个作为关键词)2
本站网友 月经期间怎么减肥
2分钟前 发表
为什么说是改良版,后者会比传统的tfidf效果要好吗? 传统的TF值理论上是可以无限大的
本站网友 联想a65游戏下载
5分钟前 发表
下面我就解释下只用idf做权重的原因:         写成这样Score(Q
本站网友 周黎明
16分钟前 发表
d)的公式为: 同样下面我举例计算一下,同样假如有三个文档如下: 第一篇:张一山与杨紫疑似相恋 第二篇:C罗又一次完成了帽子戏法,这就是足球的魅力 第三篇:恭喜TES创历史记录,在s10的世界总决赛上完成了让二追三 用户输入的query是“足球相关新闻”,下面我来计算一下和哪篇最相关
本站网友 高淳宾馆
4分钟前 发表
知乎搜索中搜索词query与回答之间的相关性
本站网友 如何利用网络赚钱
9分钟前 发表
d)=,你就会发现bm25公式的后面其实就是tfidf的一个改良版,所以不是tfidf乘后面
本站网友 烤匠
5分钟前 发表
总的来讲就是R(qi,d)与这个词在该文档中出现的频率呈正相关,与该文档的长度呈负相关
本站网友 亚奥理事会
20分钟前 发表
这在业务上可以理解为某一个因素的影响强度不能是无限的,而是有个最大值,这也符合我们对文本相关性逻辑的理解
本站网友 青木瓜
26分钟前 发表
而BM25与之不同,它在TF计算方法中增加了一个常量k,用来限制TF值的增长极限
本站网友 多维
5分钟前 发表
本站网友 山西大智慧下载
9分钟前 发表
bm25 bm25 是一种用来评价搜索词和文档之间相关性的算法,用简单的话来描述下bm25算法:我们有一个query和一批文档Ds,现在要计算query和每篇文档D之间的相关性分数
本站网友 郑州房价走势
25分钟前 发表
所以query中每个词与文档的相关性的加权和就是query与文档的相关性得分
本站网友 哈尔滨租房网
11分钟前 发表
缺点:同于tfidf