当前课程知识点:互联网大规模数据分析技术 > 第六章 信息检索 > 第17讲 信息检索之相似度排序 > 第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讲 大数据与数据挖掘概述
-第2讲 频繁项集和关联规则的基本概念
-第3讲 Apriori算法
-第4讲 Apriori算法的改进与兴趣度度量
-第5讲 分类的基本概念
-第6讲 决策树
--第6讲 决策树
-第7讲 简单贝叶斯分类
-第8讲 聚类的基本概念
-第9讲 K-Means & K-Medoids Clustering
--第9讲 K-Means & K-Medoids Clustering
-第四章 聚类算法--习题
-第10讲 大数据处理平台Hadoop
-第11讲 MapReduce编程
-第12讲 大数据处理平台Spark
-第13讲 NoSQL数据库
-第14讲 Web信息检索简介
-第15讲 信息检索之倒排索引
-第16讲 信息检索之TFIDF
--Video
-第17讲 信息检索之相似度排序
-第18讲 Web搜索之链接分析
-第19讲 Web搜索之PageRank
-第20讲 Lucene信息检索平台
-第七章 Web链接分析--习题
-第21讲 推荐系统简介
-第22讲 推荐系统之协同过滤
-第23讲 Mahout数据挖掘平台
-第24讲 信息过滤评价体系
-第八章 推荐系统--习题一
-第八章 推荐系统--习题二
-综合编程题