Machine Learning: Clustering and Similarity: Retrieving Documents

来源:互联网 发布:51单片机控制舵机 编辑:程序博客网 时间:2024/06/05 19:22

Retrieving documents of interset

问题描述:
根据你目前所阅读,感兴趣的文章,找到相似的文章。
所需解决难题:

  • 如何度量相似性?
  • 如何去搜索文章?

Word count representation for measuring similarity

这里有一段文字,对每个单词进行统计,比如下面:

Measuring similarity
例如,有如下两篇文章,我们对每个单词进行统计:

对应的单词出现次数相乘,得到一个数值,姑且称它为相似度吧。(我第一次见相似度大于1的,不怎么习惯)
两篇文章的相似度还是比较大的,从图片中也可以看出,都是关于足球的,所以相似度大也不足为奇吧

再来看一个例子:


很明显,风格都不一样。从计算方面来看,也符合,相似度为0.

但有的时候,碰到文章长短不一的情况。

Issues with word counts -Doc length

解决方法,归一化:


Prioritizing important words with tf-idf

Common words 表示常见,即文章中经常出现的单词。 rare words 表示生僻的单词

生僻的单词完全被大量的常用单词给淹没了,所以应该设法增加这些生僻词的重要性,因为通常这些词才真正描述了这篇文章的独特之处。
我们要做的是设法增加这些词的权重及等价地为了强调那些仅在部分文档中出现的词 ,对每个单词 ,我们根据其出现在语料库中的文档数减少其权重。

现在的问题是,我们只想要强调生僻词吗? 我们无疑不想强调常用词 像 the ,a ,it 所有此类的单词。但是我们想要包含的是与文章内容相关的词,不仅包括单词Messi ,还有可能是单词足球 soccer 场地 field及 进球goal ,所有这些描述我们在看的关于这项运动的文章的单词, 甚至可以跟描述其他运动的文章中的词区别开, 一篇关于篮球的文章可能有basketball ,篮筐(hoop) 前场 ,后场(court)等单词 ,在这种情况下, 我们想要强调那些我称之为关键词的单词。

在文挡中出现频率非常高 所以跟我们在读的文档相关的单词,称之为局部常见; 同时我们希望这些词在语料库中相对少见 ,所以称之为全局罕见 。描述所谓关键词的特征 就是某种局部出现率和全局罕有率的权衡 。

TF-IDF document representation
TF-IDF 表达式:

这里写图片描述

举例:

假设在我们考虑的文章中(假设一共有64篇)单词”the” 一共出现1000次,单词”Messi”出现5次,经过TF-IDF(逆向文件频率,上述公式)处理,”the”的词频变为0,Messi的词频为4

当我们计算出这个特定文档的词频和逆向文件频率来得到这个文档的新的表示时 ,我们仅仅简单地将这两个向量相乘 ,这里有些数字 在单词the的位置 数字是0 后面还有某些数 然后 ,单词Messi的权重将会增加至20, 同样地 ,对词汇表中其他单词 ,我们可以做类似计算 ,但这里我想说的是 ,常用词如the的权重 减小了 而生僻词或潜在的重要单词的权重增加了。


Retrieving similar documents

问题描述:
某人正在阅读一篇文章 ,我们假设他很喜欢这篇文章, 我们想给他推荐阅读其他文章 ,对此 ,特别地 ,最热门的一种方法叫做 最近邻域搜索 ,我们有查询文档 也就是正在读的这篇文章 以及语料库 ,也就是我们搜索其中来推荐新文章的 所有文章的总和 。为了实现最近邻域搜索 ,我们需要定义一个距离 ,此量用来衡量我们之前提过的 相似度, 这个算法的输出是一个相关文章的集合 。

算法流程:
这是只推荐一个文章:


若是需要推荐K个文章,则需要返回一个容量为K的队列即可。


Clustering documents

问题描述:
我们现在有大量的文章,需要用某种方法对其进行分类,当有人读到关于体育的文章时,我们只需要从体育类的文章中搜索,对读者进行相关推荐,而不是搜索所有文章。

假设我们已经有文章的标签:


那么问题只是一个监督学习问题。

但是,如果没有这些标签呢,没有那些”sports,word news”等标签呢?那么问题就变为了一个非监督学习问题。那么这就是一个典型的 聚类问题,关于聚类的扩展阅读可以参见 Coursera机器学习-第八周-Unsupervised Learning(K-Means)
随便选择一个K个中心点,进行迭代计算,直至失真代价函数值不变即停止。PS:中心点的位置是不断变化的,取的是该聚簇中所有点的坐标平均值(可具体参加上述文章链接,强烈建议)

如何判断一个点是属于哪个聚簇呢?


点离哪个聚簇近就归并到哪个聚簇即可。

0 0
原创粉丝点击