《从Lucene到Elasticsearch:全文检索实战》学习笔记五
今天我给大家讲讲tf-idf权重计算
tf-idf权重计算:
tf-idf(中文词频-逆文档概率)是表示计算词项对于一个文档集或语料库中的一份文件的重要程度。词项的重要性随着它在文档中出现的次数成正比,会随着它在文档集中出现的频率成反比。如果一个词项在一遍文档中出现的频率非常高,说明其比较重要,如果这个词项在其他文档中出现的频率也高,那么说明这个词有可能是比较通用的。
tf代表词项频率,如果要计算指定词项的词频,统计该词在整篇文档中出现的次数就可以了。如果一篇3000字的文档中词语“足球”出现了3次,我很难判定这片文章和足球相关,但是一篇100字但微博中通用出现三次“足球”。基本可以断定微博内容和足球有关,为了削弱文档长度但影响,需要将词频标准化,计算公式如下

另外,词频标准化的方法不止一种,Lucene中采用了另外一种词频标准化方法:

文档频率df表示包含指定词的所有文档数目。df通常比较大,把它映射到一个较小的取值范围,用逆文档频率(idf)来表示‘:

从上面公式中可以看出分母越大,说明该词越常见,逆文档频率越小。分母中文档数加1是进行平滑处理,防止所有文档都不包括某个词时分母为0的情况发生。词项的权重用TF-IDF来表示,计算公式如下:

通过tf-idf可以把文档表示成n维的词项权重向量

《从Lucene到Elasticsearch:全文检索实战》学习笔记五的更多相关文章
- 干货 |《从Lucene到Elasticsearch全文检索实战》拆解实践
1.题记 2018年3月初,萌生了一个想法:对Elasticsearch相关的技术书籍做拆解阅读,该想法源自非计算机领域红火已久的[樊登读书会].得到的每天听本书.XX拆书帮等. 目前市面上Elast ...
- 《从Lucene到Elasticsearch全文检索实战》的P184页
curl -XPOST "http://localhost:9200/_bulk?pretty" --data-binary @books.json 这句话在书中是以crul的命令 ...
- Redis in Action : Redis 实战学习笔记
1 1 1 Redis in Action : Redis 实战学习笔记 1 http://redis.io/ https://github.com/antirez/redis https://ww ...
- C#可扩展编程之MEF学习笔记(五):MEF高级进阶
好久没有写博客了,今天抽空继续写MEF系列的文章.有园友提出这种系列的文章要做个目录,看起来方便,所以就抽空做了一个,放到每篇文章的最后. 前面四篇讲了MEF的基础知识,学完了前四篇,MEF中比较常用 ...
- (转)Qt Model/View 学习笔记 (五)——View 类
Qt Model/View 学习笔记 (五) View 类 概念 在model/view架构中,view从model中获得数据项然后显示给用户.数据显示的方式不必与model提供的表示方式相同,可以与 ...
- java之jvm学习笔记五(实践写自己的类装载器)
java之jvm学习笔记五(实践写自己的类装载器) 课程源码:http://download.csdn.net/detail/yfqnihao/4866501 前面第三和第四节我们一直在强调一句话,类 ...
- Learning ROS for Robotics Programming Second Edition学习笔记(五) indigo computer vision
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...
- Typescript 学习笔记五:类
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- ES6学习笔记<五> Module的操作——import、export、as
import export 这两个家伙对应的就是es6自己的 module功能. 我们之前写的Javascript一直都没有模块化的体系,无法将一个庞大的js工程拆分成一个个功能相对独立但相互依赖的小 ...
- muduo网络库学习笔记(五) 链接器Connector与监听器Acceptor
目录 muduo网络库学习笔记(五) 链接器Connector与监听器Acceptor Connector 系统函数connect 处理非阻塞connect的步骤: Connetor时序图 Accep ...
随机推荐
- 尚硅谷面试第一季-17Redis 在项目中的使用场景
数据类型 使用场景 String 比如说 ,我想知道什么时候封锁一个IP地址.Incrby命令 Hash 存储用户信息[id,name,age] Hset(key,field,value) Hset( ...
- jquery easyui的应用-2
有两个版本: freeware edition, commercial edition easyui的 datagrid 实际上是一个table, 其数据来源 通过 url属性来从后台的php页面 获 ...
- promise封装的ajax
var myNewAjax=function(url){ return new Promise(function(resolve,reject){ var xhr = new XMLHttpRequ ...
- Linux下调试.Net core(1):lldb的安装
windows下,我们对于.net程序发生Crash,资源泄露,死锁等问题的分析,有神器windbg,那现在我们的.net core程序运行在linux上时,该怎么进行对对Core Dump文件进行分 ...
- 1、代理服务器及haproxy基础
1.web站点架构 前端一台主机提供app server,当用户请求到达时,如果要存储结构化数据,就需要找一台主机做database server.当业务达到一定程度时,要把web server.存储 ...
- Linux Sphinx 安装与使用
一.什么是 Sphinx? Sphinx 是一个基于SQL的全文检索引擎,可以结合 MySQL,PostgreSQL 做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序 更容易实现专业化 ...
- MyBatis mapper parameterType
1. 传入简单类型 JAVA代码: public User get(Long id) { return (User) getSqlSession().selectOne("com.liu ...
- 使用metrics统计接口tps
metrics的简单介绍 metrics是一种性能指标工具,有很多开源工具使用之来来作为其性能监控,如Hadoop,Kafka,Spark,JStorm等. metrics使用最主要有三个东西: Me ...
- linux软件管理之源码包管理
源码包管理tarball ====================================================================================tar ...
- 关于Djanggo的环境变量
templates是Django指定的T目录,pycharm下templates的图标会变亮,static则可以改动.下面STATIC_URL可以指定,STATICFILES_DIRS则指定了temp ...