NLPJob

标签热度

机器学习 coursera 斯坦福大学 公开课 斯坦福 深度学习 自然语言处理 python 数据科学 andrew ng 数学 nlp 数据分析 数据挖掘 神经网络 大数据 计算机科学 英语 算法 deep learning 统计学 课件 数据可视化 机器学习公开课 机器学习笔记 google 机器学习视频 计算机 商业 推荐系统 数据结构 r语言 java 密码学 udacity 金融 免费电子书 电子书 公开课笔记 计算机视觉 商务英语 学术英语 python数据可视化 机器学习课程 机器人 ted 文本挖掘 r 视频 领导力 java编程 回归模型 excel 深度学习课程 mysql cousera公开课 统计 大数据公开课 ted公开课 ted演讲 线性回归 javascript mit 概率图模型 金融市场 tensorflow 学习英语 物联网 大数据专项课程 python入门 大数据课程 英语写作 英语学习 算法课程 强化学习 高级机器学习 kaggle 文本分析 机器学习资料 函数式编程 scala 游戏设计 cousera 机器学习系统 机器人公开课 开源代码 人工智能 普林斯顿大学 machine learning 线性代数 代价函数 软件工程 伯克利 管理 市场营销 财务会计 沃顿商学院 网页开发 网站开发 web开发 网络安全 python数据科学 商业分析 非对称密码学 对称密码学 应用密码学 大规模数据科学 英语听说 概率 机器学习基石 python机器学习 算法公开课 源代码 数学思维 社交网络分析 微积分公开课 杜克大学 机器学习公开课视频 公开课视频 coursera公开课视频 coursera公开课 贝叶斯 信息论 离散数学 宾夕法尼亚大学 neural networks 伯克利大学 密歇根大学 成本函数 梯度下降 云计算 编译器 自动机 cs101 daphne koller spark 软件 会计 英语交流 商业策略 风险管理 资产管理 地理信息系统 gis 卷积神经网络 面向对象编程 序列模型 移动应用开发 数据库 计算机通信 敏捷开发 高级商务分析 商务分析 商务英语课程 c语言 c++ 数据管理 投资 计算原理 计算基础 推荐系统导论 学术英语写作 android应用开发 android开发 android 机器人课程 机器人学 数据科学竞赛 yandex 深度学习公开课 深度学习书籍 数据集 机器学习资源 分布式 微积分 大规模机器学习系统 统计推断 数据科学公开课 游戏 数学思维公开课 机器学习课件 数学公开课 微积分公开课视频 微积分公开课下载 mit微积分 mit公开课 龙星计划 神经网络公开课 coursera视频 斯坦福公开课 windows ios udacity公开课 无人驾驶汽车 人机交互公开课 人机交互 正则化 过拟合 逻辑回归 模型思维 网易公开课 acl net 逻辑 cmu 情感分析 我爱公开课 引言 普林斯顿 经济 saas 52opencourse 逻辑导引 图模型 chirs manning dan jurafsky ppt 编码 时间序列 go语言课程 go语言 工程师 语法 区块链基础 区块链 网页设计 软件开发 商务基础 运营管理 商务 机器学习实战 数据系统 投资管理 swift 计算机安全与系统管理 系统管理 计算机安全 seo策略 seo工具 seo 组织领导力 css3 html5 会计基础 c sharp 英语沟通 并发 并行 全栈开发 数据仓库 商业智能 投资策略 金融基础 数据工程 python零基础 安全系统 现代密码学 硬件安全 软件安全 网络安全基础 递归神经网络 信息检索 云计算网络 云计算应用 云计算基础 云计算概念 分组交换网络 局域网 创意写作 写作 数学基础 台湾大学 基因序列 生物信息学 斯坦福算法课程 软件架构 软件设计 java程序设计 r语言基础 图论 组合数学 python数据表示 python基础 深度学习专项课程 游戏设计与开发 游戏开发 游戏设计概念 游戏设计艺术 angular 恐龙古生物学 恐龙 古生物学 推荐系统评价 jquery 英语语法 c# 高级算法 算法专项 iot python专项课程 python入门课程 商务英语交流技巧 商务英语交流 python社交网络分析 python文本挖掘 机器学习专项 金融价值 金融决策 金融公开课 数据结构与算法 大数据机器学习 大数据分析 商业与金融建模 金融建模 学术英语听说 数据分析工具 编程入门 编程 编程基础 算法思维 计算机基础 秘钥管理 hdfs 数据工程师 hive 3d交互设计 3d建模 虚拟现实 vr 洛桑联邦理工学院 函数式编程入门 数据科学课程 数据科学专项课程 学术英语课程 学术英语写作课程 斯坦福算法专项课程 斯坦福算法 python数据分析 英文简历 英文面试 英文写作 贝叶斯方法 商业分析技术 大数据建模 数据获取 数据清洗 文本挖掘课程 聚类分析 python公开课 python课程 主成分分析 深度学习资料 词意消歧 词义消歧 推荐系统入门 python书籍 机器学习算法 数据结构课程 图像处理 贝叶斯方法实战 深度学习源代码 sibyl p2p 机器学习书籍 数据结构资料 凸优化 推荐系统入门资料 数据科学导论 可视化 机器学习开源工具包 jane mcgonigal 公开课社区 挖课 courseminer 文本情感分析 多变量微积分 社会计算 数学分析公开课 概率图模型公开课 百度 吴恩达 香港科技大学 函数式语言 scala公开课 class2go coursera无法连接 coursera打不开 keith devlin 数学思维简介 社交网络 余凯 张潼 机器人视频 robert sedgewick 算法上 多伦多大学 莱斯大学 华盛顿大学 佐治亚理工学院 神经网络视频

Text Summarization

Keyword Extraction

Text Processing

Word Similarity

Best Coursera Course

+4 投票
分类:信息检索 | 用户: (170 分)
标签修改 用户:

首先,log很容易让人联想到熵和简化计算,而此处无疑是前者。

这里不妨扩展下楼主的问题:TF*IDF的科学依据是什么?或者如何科学解释tf*idf,为什么tf*idf可以成为信息检索领域文档关键词行之有效的权重量化方法?

记得在读研期间也曾想追根溯源,找到tf*idf的科学解释,而绝大部分书本上给出的文字解释 “TF:衡量词对描述文档内容的能力大小,IDF:衡量词区分其所在文档与其他文档的能力”。刚开始如 @52nlp 一样找到了吴军老师google黑板报的《数学之美 系列九 -- 如何确定网页和查询的相关性》,可惜文中仅给出了TF*IDF的历史背景以及结论(亦可见@52nlp 给出的解释),相信大家看后还是一头雾水,至少我是。因为其略去了太多中间过程,好在最近出版的《数学之美》 实体书中吴军老师在延伸阅读部分给出了较详细的解释,但是,个人感觉还不够严谨。

关于TF*IDF的解释,我认为解释最到位、最直观的是梁斌博士的《走进搜索引擎》,详细如下:

假定一个文档就是信息源,该文档包含T1,T2,T3,...,Tn共n个词汇,每个词汇出现了N1,N1,N3,...,Nn次,词汇在文档集中出现的文档频率(词汇的发生概率)分别为D1,D2,D3,...,Dn,那么传输一个这样的文档需要多少编码长度呢?

假设每个词汇的出现相互独立,并且不考虑出现的先后顺序(即把文档看作bag of words,信息检索模型中常见)。因此由这些词汇组成的文档的概率为:X=D1^N1*D2^N2*D3*N3* ... *Dn^Nn。那么,对具有这种概率的事件进行编码,需要的编码长度为(依据为自信息:任意随机事件的自信息量定义为该事件发生概率的对数的负值,设事件x的概率为p(x),那么其自信息定义为I(x)=-log(p(x)),也可以理解为某个概率的事件进行编码所需要的最小编码长度):

-log(X)=-log(D1^N1*D2^N2*D3*N3* ... *Dn^Nn)

          =-N1*log(D1) - N2*log(D2) - N3*log(D3) - ... -Nn*log(Dn)

即这篇文档理论上能够最大极限地被压缩到-log(X)比特,并且数学上可以证明这样的压缩形式是极限压缩。

另外,也可以这样理解,对于关键词Ti,文档频率为Di,这个关键词的编码长度为-log(Di),因此在文档中出现Ni次,所以,共需要编码长度为-Ni*log(Di)。而整个文档的编码长度为sum(-Ni*log(Di)),其中1<=i<=n,与上面的式子相同。

接下来,考察该文档中每个词的平均编码长度(与之对应的是熵的概念,因为在信息论中自信息量是一个随机变量,不能用来作为整个信源的信息测度,所以引入平均自信息量,即熵,定义为H(X)=sum(-pi*log(pi))),即整个文档需要的编码长度除以总词数,即:log(X)/sum(Ni),即-N1*log(D1) - N2*log(D2) - N3*log(D3) - ... -Nn*log(Dn) / (N1+N2+N3 + ... + Nn)

在这个平均编码长度中,每个关键词都做出了不同的贡献。我们将关键词在文档中的重要性量化为对平均编码长度的贡献上。不难得出如下结论:越是出现次数多(词频高)且罕见的词汇(文档频率低)的关键词对平均编码长度大小的贡献越大。

假设K=sum(Ni),对于关键词Ti而言,它对平均编码长度的贡献为:-Ni*log(Di) / K,即 Ni / k * log(1/Di),其中Ni / K为在文档中关键词Ti的词频(TF,Term Frequency),log(1/Di)=log(|D| / |{j: Ti 出现在文档dj中}|)为文档中关键词Ti的文档频率倒数的对数式,称为逆文档频率(IDF,Inverse Document Frequency),这就是经典的TF*IDF。

这里把文档看作信息源,需要通过信道传输,而首要工作就是编码,文档的最小编码长度即为自信息量,平均编码长度为熵,而每个关键词对文档的编码都有不同的贡献,根据贡献的大小量化其重要性,即TF*IDF。

拓展:

由于TF*IDF未考虑词的位置,以及web页面中的HTML标记等信息,所以在实际应用中有很多变形,大家如果有好的实践经验,不妨在此分享和讨论?smiley

汇总如下后面怎么没有了?
sorry,正在写,如上

1个回答

+1 投票

可以参考吴军老师的《数学之美》,在“如何确定网页和查询的相关性“这一章讲到了idf的历史,关于为什么是log,也做了相关的解释:

TF/IDF(term frequency/inverse document frequency) 的概念被公认为信息检索中最重要的发明。在搜索、文献分类和其他相关领域有广泛的应用。讲起 TF/IDF 的历史蛮有意思。IDF 的概念最早是剑桥大学的斯巴克-琼斯[注:她有两个姓] (Karen Sparck Jones)提出来的。斯巴克-琼斯 1972年在一篇题为关键词特殊性的统计解释和她在文献检索中的应用的论文中提出IDF。遗憾的是,她既没有从理论上解释为什么权重IDF 应该是对数函数log(D/Dw)(而不是其它的函数,比如平方根),也没有在这个题目上作进一步深入研究,以至于在以后的很多文献中人们提到 TF/IDF时没有引用她的论文,绝大多数人甚至不知道斯巴克-琼斯的贡献。同年罗宾逊写了个两页纸的解释,解释得很不好。倒是后来康乃尔大学的萨尔顿 (Salton)多次写文章、写书讨论 TF/IDF 在信息检索中的用途,加上萨尔顿本人的大名(信息检索的世界大奖就是以萨尔顿的名字命名的)。很多人都引用萨尔顿的书,甚至以为这个信息检索中最重要的概 念是他提出的。当然,世界并没有忘记斯巴克-琼斯的贡献,2004年,在纪念文献学学报创刊 60 周年之际,该学报重印了斯巴克-琼斯的大作。罗宾逊在同期期刊上写了篇文章,用香农的信息论解释 IDF,这回的解释是对的,但文章写的并不好、非常冗长(足足十八页),把一个简单问题搞复杂了。其实,信息论的学者们已经发现并指出,其实 IDF 的概念就是一个特定条件下、关键词的概率分布的交叉熵(Kullback-Leibler Divergence)(详见上一系列)。这样,信息检索相关性的度量,又回到了信息论

补充:多谢fandy的解释,这个问题很有意思,我也只是引用了《数学之美》中的内容,但是对于其中所提及的论文没有考证,以下是几篇相关的论文,先放到这里,欢迎大家讨论:

1.  斯巴克-琼斯 1972年在一篇题为关键词特殊性的统计解释和她在文献检索中的应用的论文中提出IDF: A statistical interpretation of term specificity
and its application in retrieval

2. 2004年,在纪念文献学学报创刊 60 周年之际,该学报重印了斯巴克-琼斯的大作。罗宾逊在同期期刊上写了篇文章,用香农的信息论解释 IDF: Understanding Inverse Document Frequency: On theoretical arguments for IDF

3. Inverse Document Frequency (IDF): A Measure of Deviations from Poisson

4. Interpreting TF-IDF term weights as making relevance decisions

用户: (3.2k 分)
修改于 用户:
谢谢你!
...