当前课程知识点:互联网大规模数据分析技术 >  第六章 信息检索 >  第16讲 信息检索之TFIDF >  Video

返回《互联网大规模数据分析技术》慕课在线视频课程列表

Video在线视频

下一节:第16讲 信息检索之TFIDF

返回《互联网大规模数据分析技术》慕课在线视频列表

Video课程教案、知识点、字幕

欢迎来到

互联网大规模数据分析技术

的课堂

我是今天的主讲教师李琳

来自武汉理工大学

这一讲我们要学习

信息检索之TFIDF

关于这个名词

是我们今天课堂讲解的主要内容

今天我们的内容

将包含以下四个方面

排序的结果

如何对一个文档进行打分

另外还要关注

两个统计运算的结果

以及我们的打分的规则

以及权重的计算

那么到目前为止

我们的查询都是一种

布尔的查询

也就是我的答案只有两种

1是,2或者不是

这个对一些非常专业的用户来说

它能够准确的表达

自己的信息需求

我只想找到我想要的结果

这个布尔查询是非常方便的

但是对于大多数的用户来说

我使用布尔查询会带来一些问题

要不就会得到大量的结果

要不呢

由于我的查询词选取的不合适

一个结果也没有

在这种情况下

我们希望有一种打分机制

来帮助我们完成

我们把这样一种打分机制

叫做Ranked retrieval

在这里我们对布尔查询

做一个简单的举例

大家看到对于这样一个查询词

Query 1

“standard user dlink 650”

在这里我们可以得到

20万的查询结果

但是当我把这个查询词加长之后

大家看到

一个结果也没有

所以

对于布尔查询来说

所有的单词都是一种与的关系

与的关系导致结果太少

如果把所有的关系

都看成或的关系呢

这个结果又太多了

所以我们考虑到

当我们用查询词、关键词

作为查询的时候呢

我们希望对于结果能有一个排序

告诉我哪些结果

最有可能反映用户的需求

而那些结果的可能

并不能反映用户的需求

所以在这样一种情况下

我们考虑到了

要进行一个叫

ranked retrieval model

当一个系统

能够产生一个排序的结果

大量的结果集合

就不是一个问题了

因为大家都用过搜索引擎

在搜索引擎上面

你输入查询词之后

搜索引擎会给出若干个结果

但是大多数的用户都只关心

哪一页的结果呢

第一页

而在第一页通常只反映了Top10

也就是前10

所以用户当在前十个

第一页的结果当中

没有找到自己的答案的时候

很多人会改变自己的查询词

少部分的人会点第二页第三页

我想能点到第四页第五页的人

是非常少的

在这样的一个情况下

搜索引擎关注的

不是把大量的结果反馈给用户

而是精确的把Top10的结果

反馈给用户

这就成为了

搜索和查询的一个关键的

满足用户的这样一个指标点

那么我们如何来排序呢

我们把排序可以叫rank

也可以叫order

怎么来排序呢

我们希望这样一个排序

在打分值进行归一化处理之后

能够在0和1之间

这个0和1衡量了一个查询词

和一个文档之间的匹配程度

在这里我们用了匹配

也有可能有人解释成

相似度或者叫距离

总之它反映的是

一个查询词和一个文档

他们在满足

用户信息需求上面的程度

那么在现在我们需要一个方法

来给查询词和文档对进行打分

我们先考虑

只有一个查询词的情况

很显然

如果这个查询词出现在文档里面

它必须有一个打分

没有的话就是0

does not occur

那么这个词就是0

那么出现的情况怎么办呢

那么我们有一个最直观的思想

在这里有这样一句话

The more frequent

the query term in the document

the higher the score should be

也就是说一个单词

在这个文档当中出现的越频繁

那么这个文档

可能和这个查询词越相关

那么我们需要一种什么样的机制

来衡量呢

数个数

对吧

数一个查询词

在一个文档当中的个数

以及它匹配的个数

我们最简单情况呢

有一个指标叫做Jaccard

Jaccard是表示

两个集合的重叠程度

当我有一个集合A

又有一个集合B

那么这两个集合它们的重叠程度

有多少呢

是用A和B的交集

去除以A和B的并集

所以在这个里面

一个文档和它自身来说

它的相似度就是1

一个文档如果和另外一个文档

没有一个单词是重复的

那么它的相似度就是0

所以这样一种打分机制

给了一个最简单的方式查找

两个文档它们单词的重叠程度

那比如说在这个例子当中

我有一个查询词叫

ides of march

有一个document1

有一个document2

那么这个查询词和document1

和document2的相似度

是怎么计算的呢

大家可以看

查询词有三个单词

文档1有四个单词

那么它们重叠的个数有多少呢

我们找一找,只有这一个

那么我的分子就是1

我们两个它的并集有多少呢

总共有多少个单词呢

123456这个是重复的

所以是1/6

我们再看一下

这个query和document2

它们的重复的单词的个数

有多少呢

还是重复的march

那么所以它重复的个数是1

它们两个并集的总数是多少呢

12345

所以从这样一个例子

我们可以看到

query和document2

更为相似一些

那么大家思考一下

发现了觉得很奇怪

query查询词和两个文档

重复的单词都只有一个

但是document2的相似度

在Jaccard计算下却要高一些

这是因为document2要短一些

所以它们总的集合的分母

它就要少一些

这样一种情况的我们学者发现

并不适合排序

也就是说我会偏向于短的文章

让我们来看一下

有没有更好的排序方法

我们回忆一下

在前面的课程当中

所学过的单词文档矩阵

在前面的文档矩阵当中

我们用1来代表

这个单词出现在这篇文章当中

我们用0来代表没有出现

现在我们把这个出现

和不出现用一个次数

大家还记得wordcount这样一个

MapRreduce的计算的例子

每个单词在文章当中

出现了多少次

我是可以通过计算算出来的

比如Antony这个单词

在这样一本书当中出现了73次

没有出现我仍然用0

这样的话每一个文档

也就是我们这一列

就可以表示成一个向量

73,157,27,10,0,,0,0

这就是一个向量

那么表示成向量之后呢

大家会发现

其实它也有一个问题

大家看我ppt上的这个例子

John is quicker than Mary

Mary is quicker than John

如果按照刚才的

向量的方式来组织

它是1111,它也是1111

两个是一模一样的

但是实际上

大家从语义上可以看出

这两个句子是完全相反的意思

这就是我们叫的词袋模型

词袋模型只考虑有没有这个词

不考虑词出现的顺序

这是它的一个缺点

在这里我们暂时不在这门课当中

讨论如何改进它

我们就用这样一个词袋模型

就不考虑位置来

解决这样一个排序的问题

刚才我们看到了一个单词

在文档中出现的次数

我们用一个专门的词语来描述它

我们把它叫做term frequency

我们简称TF

我们想用这个TF来打分行不行

可以

如果一个文档当中

含有这个单词出现的10次

那么肯定会比这个文档中

只含这个单词1次的文档

它要更接近于我的查询词

所以次数能够反映查询词

和文档之间的相关的问题

在这里面我们给出这样一个公式

TF打分越多越好

但是大家注意一下

在这里我采用了log函数

就是说

由于这个次数可能量太大了

我们把它稍微降一下

比如说通过log函数的变化

10就变成了2

1000就变成了4

所以这样当你有一个单词

你有一个文本

在计算一个查询词

和文档的相似度的时候

我们就对每一个单词

在文章中出现的次数进行累加

这个累加的个数就是你查询词

和文档重叠的单词的个数

这是刚才我们讲的TF

但是在TF当中

我们又注意到了一个问题

统计次数

在我的单词当中

会有很多这样一些单词

我们叫stop word

比如说the

比如说a

比如说an

比如说of

这样的词会大量的在文档中出现

而且这种词的出现

它比一些有意义的实词

出现的概率频率会非常高

它会在整个打分

就会占一个很大的比重

如何解决它们呢

所以我们借助这样一个思想

来考虑一下另外一个指标

叫做Document frequency

也就是说一个单词

大量地出现在不同的文档中

说明这个单词对某些文档来说

它并不是那么重要

因为你也有我也有他也有

它并不能

很唯一地去代表这个文档

总结的一句话就是

a document containing this term

is very likely to be relevant

to the query arachnocentric

比如说我们考虑一个查询词

这样一个单词

是很少见的

如果在某个文档当中

包含这样一个单词

那说明和查询词是非常相关的

所以怎么来体现一个单词

rare in the collection呢

也就是说并不是很多文档

都包含这个词

只有少数的文档包含它

正好你又要查询这个词

这些少数的文档

虽然由于其它词频并不高

也有可能成为我的结果

在这样一个情况下

我们来考虑这样一些词

比如说

high,increase, line

这样一些词在集合当中太频繁了

不光是a,the那个方式

可以通过去除停用词来完成

但是high, increase, line

这样的词

你不能去掉它

它还是有意思的

所以在这样的情况下

我们如何降低这样一些词

在排序当中的比重呢

也就是说越高越不好

TF是说的越多越好

对于这样的方式

我们需要给它做一个处理

我们把这样一个集合当中

包含这个单词文档的个数

叫做Document frequency

简称DF

越多越不好我们怎么来体现呢

大家看到这个符号没有

除,做分母

你越多就越不好

这个单词在这样一个集合当中

出现的文档的个数越多

那么越不好

为了避免被除之后小数太小

我们加了一个N

这个N就是我们整个集合的文档个数

所以这样一个权重的

我们把它叫做IDF

我们有了TF

知道了一个单词在集合当中

出现的次数越多越好

我们有了IDF知道了一个单词

如果集合当中

包含它的文件数太多了也不好

那我们来看一下

这个IDF它的一些计算

比如我们有100万个文档

像animal这个单词

它出现在了100个文件集合当中

那么我们除的时候

就用100万去除以100

再取一个log的对数

这样的话我们就得到了它的值

大家看一下

IDF对于什么样的查询词

会有影响呢

比如说我的查询词只有一个

就是iPhone

那么它有没有影响呢

这个对于排序来说

是没有太大影响的

它有影响的是多个查询词

比如说

我有两个单词组成的查询词

IDF的权重会使得这个单词

capricious的重要性

要多于person

为什么呢

如果person

在文档当中出现了100次

这个单词capricious

也出现了100次

但是在整个集合当中

person这个单词太普遍了

而这个单词capricious

相对来说次数略少

所以在整个计算当中

这个少量出现的单词所占的权重

会比较大

这里我们来看一下

在这个例子当中

我们有insurance

Collection Frequency也就是

在整个集合当中出现了10440

但是只有3997个文档包含它

那么try这个词呢

同样它也出现了这么多次

但是有八千多个文档包含它

大家就可以看到

这样一些常见的词

它实际上按照我们刚才IDF处理

就要降低它的比重

怎么把TF和IDF进行组合呢

我们用了简单的乘法

用TF去乘以IDF

这个IDF指的DF倒数

大家可以看到在这个里面

我用了一个1

这个加1是为了避免在log当中

出现0,因为出现0

log是没有办法计算的

其实在这个公式当中

我们也有一小点问题

因为DF有可能为0

一个数去除以0会变得无穷大

所以实际上在写的过程当中

在编程的过程当中

你们要把它写上,加一个1

这样来处理

这样的话

我们就对每一个单词的权重

进行了一个简单的打分

也就是TFIDF的由来

它中间是乘号的关系

实际上这种打分机制增强了一些

非常见词在整个集合当中的

这样一个重要性的权衡

整个打分

我们用这样的公式来进行表示

score就是一个打分

查询词和文档集合的打分

要做一个累加

这个累加多少次

取决于查询词和文档

重叠单词的个数

每一个单词

在文章当中出现的频率

去乘以这一个集合当中

有多少个文档包含它的倒数

也就是我们的IDF

形成了最终的打分

在这里我用了一个简化的形式

也就是这个TF就可以用我们

刚才这个幻灯片用的log(1+TF)

IDF可以用logN/DF

那这只是一个简化的表达形式

在实际的使用当中

我们会有很多种的变形

等会我们看到

所以我们对刚才所讲的问题

和前面的做一个贯通的话

从最开始的1、0

有没有的矩阵到计数

多少次,这样一个矩阵

到最后

我们用TFIDF来表示一个单词

在这篇文章当中的重要性

其实1也是一种重要性

七十八十九十次数

也是一种重要性

TFIDF它也是一种重要性

通过这样的处理之后

我们得到的这个文档集合的向量

就不再是70、80、90、0、0、0

而是这样一种经过一些运算

所得到的这样一些结果

也就是我们说的是实数值

这就是我们今天所讲的

TFIDF的基本概念

在下面的课程当中

我们会跟大家学习

如何用TFIDF来进行运算

来得到我的排序结果

今天的课程就到这里

谢谢大家

互联网大规模数据分析技术课程列表:

第一章 大数据与数据挖掘概述

-第1讲 大数据与数据挖掘概述

--第1讲 大数据与数据挖掘概述

第二章 关联规则

-第2讲 频繁项集和关联规则的基本概念

--第2讲 频繁项集和关联规则的基本概念

-第3讲 Apriori算法

--第3讲 Apriori算法

-第4讲 Apriori算法的改进与兴趣度度量

--第4讲 Apriori算法的改进与兴趣度度量

第三章 分类算法

-第5讲 分类的基本概念

--第5讲 分类的基本概念

-第6讲 决策树

--第6讲 决策树

-第7讲 简单贝叶斯分类

--第7讲 简单贝叶斯分类

第四章 聚类算法

-第8讲 聚类的基本概念

--第8讲 聚类的基本概念

-第9讲 K-Means & K-Medoids Clustering

--第9讲 K-Means & K-Medoids Clustering

-第四章 聚类算法--习题

第五章 大数据平台与技术

-第10讲 大数据处理平台Hadoop

--第10讲 大数据处理平台Hadoop

-第11讲 MapReduce编程

--第11讲 MapReduce编程

-第12讲 大数据处理平台Spark

--第12讲 大数据处理平台Spark

-第13讲 NoSQL数据库

--第13讲 NoSQL数据库

第六章 信息检索

-第14讲 Web信息检索简介

--第14讲 Web信息检索简介

-第15讲 信息检索之倒排索引

--第15讲 信息检索之倒排索引

-第16讲 信息检索之TFIDF

--Video

-第17讲 信息检索之相似度排序

--第16讲 信息检索之TFIDF

第七章 Web链接分析

-第18讲 Web搜索之链接分析

--第18讲 Web搜索之链接分析

-第19讲 Web搜索之PageRank

--第19讲 Web搜索之PageRank

-第20讲 Lucene信息检索平台

--第20讲 Lucene信息检索平台

-第七章 Web链接分析--习题

第八章 推荐系统

-第21讲 推荐系统简介

--第21讲 推荐系统简介

-第22讲 推荐系统之协同过滤

--第22讲 推荐系统之协同过滤

-第23讲 Mahout数据挖掘平台

--第23讲 Mahout数据挖掘平台

-第24讲 信息过滤评价体系

--第24讲 信息过滤评价体系

-第八章 推荐系统--习题一

-第八章 推荐系统--习题二

自我提升练习

-综合编程题

Video笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。