tfidf与bm25
2024-10-21 14:21:28
https://www.cnblogs.com/johnnyzen/p/11298273.html
前言
本文主要是对TF-IDF和BM25在公式推演、发展沿革方面的演述,全文思路、图片基本来源于此篇公众号推文《搜索中的权重度量利器: TF-IDF和BM25》,侵删。
一 术语
- TF: Term Frequency,词频;衡量某个指定的词语在某份【文档】中出现的【频率】
- IDF: Inverse Document Frequency,逆文档频率;一个词语【普遍重要性】的度量。
- TF-IDF = TF*IDF
一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。TF-IDF加权的各种形式常被搜索引擎应用,作为文件与用户查询之间相关程度的度量或评级。 -----《TF-IDF 百度百科》
TFIDF的主要思想是:如果某个词或短语在一篇文章中出现的频率TF高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。
- BM25
- 应用:BM25相关度打分,基于BM25与TextRank的单文档自动文摘(经Rouge评测,效果较为优异)
bm25 是一种用来评价搜索词和文档之间相关性的算法,它是一种基于概率检索模型提出的算法
二 TF-IDF
- <1>传统的TF-IDF
- 【TF】词汇word的词频(TF)值
TFScore=tf=指定词汇word在第i份文档documents[i]中出现的次数文档documents[i]的长度TFScore=tf=指定词汇word在第i份文档documents[i]中出现的次数文档documents[i]的长度
+ 【IDF】词汇word的逆文档频率(IDF)值
IDFScore=log(文档集documents的总数指定词word在文档集documents中出现过的文档总数)IDFScore=log(文档集documents的总数指定词word在文档集documents中出现过的文档总数)
+ <span class="important">【TF-IDF/关联度计算】</span>词汇word与某份文档documents[j]的关联度得分(TF-IDF)
TFIDF(word|docuements)=Similarity(word|documents)TFIDF(word|docuements)=Similarity(word|documents)
Similarity(word|documents)=TFScore∗IDFScoreSimilarity(word|documents)=TFScore∗IDFScore
+ 短语sentence与某份文档documents[j]的关联度得分(TF-IDF)
sentence=[word1,word2,...,wordi,...,wordn]sentence=[word1,word2,...,wordi,...,wordn]
TFIDFsentence(word|docuements)=TFIDFword1+TFIDFword2+...+TFIDFwordi+...+TFIDFwordnTFIDFsentence(word|docuements)=TFIDFword1+TFIDFword2+...+TFIDFwordi+...+TFIDFwordn
- <2>早期Lucence版的TF-IDF
- 【TF】
TFScore=sqrt(tf)TFScore=sqrt(tf)
+ 【IDF】
IDFScore=log(文档集documents的总数指定词word在文档集documents中出现过的文档总数+1)IDFScore=log(文档集documents的总数指定词word在文档集documents中出现过的文档总数+1)
+ 【filedNorms】fieldNorms:对文本长度的归一化(Normalization)
fieldNorms=(1sqrt(文档documents[j]的长度))fieldNorms=(1sqrt(文档documents[j]的长度))
+ <span class="important">【TF-IDF/关联度计算】</span>
TF−IDF(word|docuements)=Similarity(word|documents)TF−IDF(word|docuements)=Similarity(word|documents)
Similarity(word|documents)=TFScore∗IDFScore∗fieldNorms
最新文章
- composer安装yii2问题总结
- Memcache学习整理
- Seafile内部云盘
- springMVC中ajax的使用
- [Windows Phone] APP上架,遇到错误2001的解决方案。(Error:2001)
- Hibernate4集成 Annotation使用教程
- sonar runner 2.4
- 怎么在spring官网上下载spring的jar包, 源代码和文档?
- NetMQ(ZeroMQ)Client =>; Server =>; Client 模式的实现
- golang byte转string 字节数组转字符串的问题
- Python新手学习基础之条件语句——elif语句
- WIFI网络访问(一)
- 更新cydia“sub-process/usr/libexec/cydia/cydo returned anerror code(2)”是怎么回事?
- PyCharm 使用简介
- Vue.js 实战总结
- 用泛型创建SqlServerHelper类实现增删改查(一)
- 类ArrayList
- javascript的加减乘除结果会有误差,在两个浮点数相加的时候会比较明显。以下函数返回较为精确的计算结果
- win7安装Ubuntu变双系统以及删除Ubuntu分区操作
- 如何在vue中全局引入stylus文件的公共变量