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

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

第16讲 信息检索之TFIDF在线视频

下一节:第18讲 Web搜索之链接分析

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

第16讲 信息检索之TFIDF课程教案、知识点、字幕

欢迎来到

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

的课堂

我是今天的主讲教师李琳

来自武汉理工大学

今天我们开始第17讲

信息检索之相似度排序

这节课的内容我们包含

向量空间模型

余弦相似度计算

以及我们

对余弦相似度计算的一个总结

回忆一下

在上一节课我们提到了TFIDF

通过TFIDF的计算

我们能得到如下的这样一个矩阵

TF

一个单词在文档中出现的次数

IDF

一个集合当中

有多少个文档包含这个单词

通过这样一种运算

我们可以得到这样一个

实数的矩阵

也就是说每一个文本我都表示成

这样一种向量的模式

同样

当你输入一个查询词的时候

把查询词看见一个短的文本

它也能表示成一个向量

在这样的情况下

我们就有一个高维的向量

这个向量的长度

也就是单词的个数

词典当中有多少个单词

也就决定了我有多少维度的数据

我们把查询词看成向量之后呢

我们可以来处理这样一个查询词

我们把查询词看成是

空间中的向量

然后计算它在空间中的相似度

或者是距离

这个相似度和距离

正好是一个相反的关系

所以这个我们可以灵活的来使用

怎么来计算

空间中向量之间的关系呢

首先我就会想到空间距离

大家都学过数学当中的欧式距离

对不对

欧式距离

空间中两点之间的距离

大家还记不记得在数学当中

我们有x轴,我们有y轴

我们有两个点

那么怎么计算

这两点之间的距离呢

假设这是(x1,y1)

这个是(x2,y2)

很显然大家都学过

两点之间的距离就是

x1减x2的平方

加上y1减y2的平方

开根号

这就是两点之间的距离

我们把它叫欧氏距离

欧氏距离在这个里面

我们通过大量的数据分析和运算

或者历史数据的这样一个实验

发现它是一个bad idea

也就说不好

为什么呢

因为欧氏距离对于特别长的向量

它的距离会特别大

因为大家会看到越长

我要累加的量就越多

自然我这个值就大了

但是文章的长短

并不能说明越长就越不相关

所以这个时候的我们需要寻找

更适合文本相似度计算的指标

在这里

让我们直观的看一下欧式距离

刚才我讲的

d1很短

d2很长

还有d3

所以在欧氏距离计算的时候

自然会认为

这个单词和d2不相关

但是从这样一个图直观上来说

大家会觉得怎么样呢

会觉得d2和q是什么

挨得很近

你看

它(q)和d1还挨得远一些

它和第d3挨得更远

但是d3最短可能运算的结果

会导致

这个查询词q和d3非常相关

这就和我们的实际情况

并不太符合了

在刚才这个图我们看到

我们就用夹角来取代距离

我们两个向量之间的夹角越小

表明我们这两个向量越相关

The angle between the two

documents is 0

corresponding to maximal similarity

也就是说

两个文档向量它已经夹角为0

说明这两个文档

是几乎完全相关的

所以我们的idea就变成了

我们对文档打分的时候

用夹角来进行打分

怎么来进行夹角的打分呢

夹角,那用角度吗

我们习惯是对一个文档和查询词

进行打分是按照它们的相似度

那么夹角和相似度

是一个什么关系呢

这个时候我们考虑用Cosine

夹角的cosine值来代表

因为夹角为0的情况下

它的cosine值为多少呢? 1

夹角为0代表两个向量完全一样

这个时候它的相似度最大,为1

那么当两个相似度的夹角

达到九十度的时候

也就是这两个向量是垂直的

那么它的相似度是为0

这样我们发现cosine

这样一个方式能够很容易地

帮助我们来计算

两个文档之间的相似度

所以在我们的计算当中

决定采用cosine

同时我们注意到

欧氏距离的一个问题

它由于对于越长的文档

它相对来说距离会越大

所以我们对于文档的长度

要做一个归一化的处理

这个就叫做

Length normalization

这个Length normalization

我们用L2 norm

就是这样一种情况

对每一个向量的分量的平方

求和再开根号

这样的话的最终我们

得到这样一个计算的公式

和上一节课所讲的

TFIDF的打分计算不一样

我们在这里

大家看到每个q上面

我标了一个箭头

每个d上面我也标了一个箭头

代表我把q和d都看成了什么

向量

向量之间我做一个点积

再去除以

每个向量的这样一个长度

所以实际上计算的时候

就是q1乘以d1

q2乘以d2

q3去乘以d3

也就是我们两个交集的单词

的个数逐一对应相乘

同时分母是作为归一化的

两个向量的夹角余弦

就这样的计算来得到了

所以cos(q,d)is the cosine

similarity of

这两个向量在这样一个计算当中

我们不但将夹角转换成了

0、1的这样的数字

同时我们还对向量的长度

做了归一化的处理

避免地出现长度越长

它的距离越大的这样一个问题

cosine这样一个指标

在排序当中的就得到了广泛应用

这样一个向量之间的乘法

我们实际上有一个专业的名字叫

dot product

叫做点积

熟悉这样一个运算的同学

就会发现它实际上就是一个点积

通过这样一个处理之后呢

我们得到一个归一化

长度归一化的向量之间夹角余弦

来作为我们最终排序的

这样一个结果

我们简要地写了

大家注意一下

如果你采用cosine作为查询词

和文档之间匹配程度的排序的话

你就用q箭头

d箭头中间加一个点

大家就明白了

它是用点积来完成

这样一个排序的工作

我们还是用刚才那个例子

来表示一下经过归一化处理之后

用cosine的夹角来表示文档

和查询词的相似度的关系

大家可以看到在这个例子当中

我的查询词

是用这样一个向量表示

表示我的文档1

文档2和文档3

都进行了归一化的处理

所以在这样的归一化的处理当中

我们两个的夹角越小

余弦值越大

我们俩就越相关

我们俩的夹角越大

余弦值越小

我们的相关性就要少一些

这样的话非常有效地

解决了文档和查询词之间的

相关度的问题

接下来我们举一个例子来看一下

我们有三个文档

SaS、PaP还有WH

在这个文档当中

我们有这样一些词

affection、jealous、gossip

Wuthering

在SaS当中affection这个词

出现了115次

PaP这个词出现了58次

WH出现了20次

这种是Term frequencies

然后我们对Term frequencies

做一个log的这样一个处理

得到这样一个结果

然后我们再对长度归一化之后呢

得到这样一个结果

长度的归一化

还记得我刚才那个ppt上面

演示的长度的归一化

是对每一个向量进行平方之后

取和再加开根号

在这里我只用了TF IDF

并没有用到DF

但是不影响对这个例子的演示

这样我们每一个文档呢

就形成了一个向量

每一个文档就形成了一个向量

那么接下来我们看一下

两个文档之间的相似度

该怎么算呢

点积,你刚才不是说了吗

向量做点积

那就是对应的元素相乘再相加

0.789×0.832

0.515×0.555+0.335×0

0×0

三个文档之间任意两个文档之间

的相似度都采用点积

对应元素相乘并相加

我们最终得到了这样一个结果

从这样一个结果我们发现

SaS和PaP它之间的相似度

是最高的达到了0.94

把这样一个问题

交给大家去课后思考一下

为什么SaS和PaP之间的相似度

要大于SaS和WH呢

刚才我们通过例子学习了如何

完成点积的cosine相似度计算

在这里我给出了一个cosine

计算的伪代码

大家看一下

在这个里面我们有乘法

我们有累加

然后完成了这样一个计算

大家在最后可以看到

用这个值去除以了一个长度

也就是我们的归一化的处理

最后将cosine值最高的K个文档

返回给用户

这个代码交给大家课后

再仔细的去阅读

在整个计算当中的TF IDF

起到了一个权重的作用

在这里面我们列出了各种各样

对TF IDF进行处理的数学方法

比如说我们前面讲到的1+logTF

这里也有的系统用这样一种方式

也有的人用这样一种方式

对于IDF我们讲解了

用N作为分子去除以DF的方式

那么也有些人会用这样的方式

来进行处理

所以这样一些变种

实际上都是为了更好适应

不同的数据和不同的系统

大家可以在实际当中去测试一下

哪种TF IDF的变换更适合你的数据

我们可以看到

对向量空间的模型的打分

我们总结出来有这样几个步骤

一、将你的查询词表示成向量

二、将每一个文档也表示成向量

三、计算两个向量之间的

cosine相似度

最后将文档按照相似度进行排序

那还记不记得我们前面讲过

Hadoop和Spark的排序

Spark的排序远远快于Hadoop

所以排序

是各种大数据运算的一个基本

在这里我们也需要用到排序

按照相似度来排序

最终将TopK的结果返回给用户

TopK的结果返回给用户之后

用户实际上得到的是

最接近于答案的结果

但不一定代表就是用户想需要的

这个里面当然还有很多的问题

需要我们解决

比如说如何计算

cosine相似度更加快

另外还要考虑cosine相似度

是不是真正的就能反映

用户的查询需求得到了满足呢

这个问题

还值得我们去商量和考究

这就是今天这节课的主要内容

感谢同学们的观看

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

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

-第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讲 信息过滤评价体系

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

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

自我提升练习

-综合编程题

第16讲 信息检索之TFIDF笔记与讨论

也许你还感兴趣的课程:

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