专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

文本获取与搜索引擎中的TF,TF-IDF

coursera课程 text retrieval and search engine 第二周 推荐。

什么是TF

TF(term frequency),根据出现的次数作为权重,出现一次,权值加1。但是仅使用这种方式无法区分重要的词和非重要的词,比如the

什么是DF

DF(document frequency),包含关键词的文档的个数

什么是IDF

IDF(inverse document frequency),指的是一个单词如果在更多的文档中出现,那么IDF值越低,关系可用下图表示

93_1.png

TF-IDF 模型

即使用TF*IDF。
假如TF不计算频率,按最简单的来,有就算1[y={0,1}]。 以下面文档为例,假如想搜索”news about presidential campaign”,文档库中一共有3个文档

93_2.png很明显presidential出现次数多,那篇文章应该更重要,那么可以加上次数做考虑,使用向量空间模型,假设查询为q=( 93_3.png,…, 93_4.png),文档为d=( 93_5.png,…, 93_6.png),那么二者的相似性为 sim(q,d)=q*d= 93_7.png 93_8.png+…+ 93_9.png 93_10.png,还是以上面的文档为例可得到

93_11.png

d4更相关可以得到认同,但是d3和d2却一样,有点无法接受,因为presidential的重要性很明显应该比about更重要,也就是说,不同词的权重是不一样的,在所有文档中出现的越多的词,应该重要性越低,可以算上IDF,假设 每个单词的IDF对应如下

93_12.png再计算各个文档的相关度为: 93_13.png对于d5文档来说,很明显它关于food可能更多,只是campaign出现的次数非常多,这也不合理,假如使用TF表示在文档中出现的次数,那么根据文档中出现的次数相比,这是一个线性模型[y=x],问题在于,如果假设一个单词出现的过多(而没有有关键字中某些其它重要的词),显得权重过大,因而引入了TF Transformation,我们希望能够随着词出现的次数增加,TF能够变大,但是又不能无限的变大,几种常见的TF如下

93_14.png

对于这种增长的速率,如果能够加入人工的调控是最好的了,据此发现,最好的是BM25

93_15.png可以看到它的上界是k+1,也就是增长的速率是可调控的,同时,也会提现词频出现越多越重要的这个特性。此时的排序函数为

93_16.png其中c(w,q)表示在查询语句中,词w的出现次数;c(w,d)表示在文档中词出现次数;df(w)表示包含关键字的文档的个数,即TF*IDF。

为什么长文档需要正规化?

一般说来,长文档更有可能包含更多的词汇,因此它会以相对疏散的方式匹配到查询关键字,但真实主题却不是查询的关键字。这样看来,需要更好的方式来对长文本做出”惩罚”。另外需要考虑到的是,长文档可能存在两种情况,1是仅仅用了过多的词,2是有很多描述主题的内容,这是不希望有惩罚的。总的来说是希望惩罚有一个度,一种策略是使用“摆动长度正规”

93_17.png

使用双ln是为了达到次线性转换(随着TF增加,权值增长相对更慢) 此时的排序函数为

93_18.png这里b是一个变量,当b=0,文档长度被忽略,当b非0,|d|(文档长度)越大,权值反而越小,也就得到了”惩罚”长文档的目的,当文档太短时,如果包含查询关键字,很有可能主题就是这些,起到适当的激励作用

文本获取(TR)的一般架构

93_19.png

  • tokenization:词提取,确定好词的边界,把相近意思的词映射到同一个
  • index :将文档转换成易于检索的数据结构,一般使用倒排索引(用一个字典存储文档的部分统计信息,比如当前词一共出现在了多少个文档,出现了多少次,这些文档分别是那些文档,那些位置,等等)

Zipf定理

定理表明,一个词出现的频率和他的排序是一个常量

93_20.png

文章永久链接:https://tech.souyunku.com/47243

未经允许不得转载:搜云库技术团队 » 文本获取与搜索引擎中的TF,TF-IDF

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们