词的权重计算及应用

标签: 权重 计算 应用 | 发表时间:2013-03-26 23:34 | 作者:zhongyangzhong
出处:http://blog.csdn.net

    本文讨论如何计算词权重(即特征向量)和向量空间模型及其应用。本文的“文档”是指查询对象,它们可以使一条条单独的记录或者是一本书的各章,还可以是一个网页,或者xml文件等。

1 归一化

    在讨论词权重和向量空间模型前需要先了解下归一化的概念。归一化(normailization)方法有两种形式。第一种形式是把数变为(0,1)之间的小数,方便计算。第二种是把有量纲(量纲是指单位)表达式变为无量纲表达式,这样归一化后统一了单位,方便比较,而且归一化后比较的数值才有意义。

2 词权重表示TF-IDF

    词频-逆文档频率(term frequency-inverse document frequency,TF-IDF) 的概念被公认为信息检索中最重要的发明。在搜索、文献分类和其他相关领域有广泛的应用。

    在计算机中光有词是不能计算的,需要把词转换为数字,这个数字能代表该词对文档中的重要程度,这个数字就是词的权重。权重的设定必须满足下面两个条件:

1)一个词预测主题能力越强,权重就越大,反之,权重就越小。我们在网页中看到“云计算”这个词,或多或少地能了解网页的主题。我们看到“应用”一次,对主题基本上还是一无所知。因此,“云计算“的权重就应该比”应用“大。

2) 应删除词(如的等停顿词)的权重应该是零。

2.1 词频

    如果用词项t在文档d中出现的次数来表示词频,那么包含某些词多的文档应该比包含它们少的文档相关。当然,这个办法有一个明显的漏洞,就是长的文档比短的文档占便宜,因为长的文档总的来讲包含的关键词要多些。 因此我们需要根据文档的长度,对关键词的次数进行归一化,也就是用关键词的次数除以文档的总字数。我们把这个商称为词的频率(term frequency,TF)

2.2逆文档频率

    如果一个关键词只在很少的文档中出现,我们通过它就容易锁定搜索目标,它的权重也就应该大。反之如果一个词在大量文档中出现,我们看到它仍然不很清楚要找什么内容,因此它应该小。概括地讲,假定一个关键词t在Dt个文档中出现过,那么Dt越大,t的权重越小,反之亦然。在信息检索中,使用最多的权重是逆文档频率(Inversedocument frequency 缩写为IDF),它的公式为

IDF=log(D/Dt)

其中D是全部文档数。比如,我们假定中文文档数是D=10亿,应删除词“的”在所有的文档中都出现,即 Dt=10亿,那么它的IDF=log(10亿/10亿)= log(1) = 0。假如专用词“云计算”在两百万个文档中出现,即Dw=200万,则它的权重IDF=log(500) =6.2。又假定通用词“应用”,出现在五亿个文档中,它的权重IDF= log(2)则只有 1。也就只说,在文档中找到一个“云计算”的比配相当于找到九个“应用”的匹配。

2.3 TF-IDF权重计算

对于每篇文档中的每个词(一般是指关键字及特征向量),可以将其TF和IDF组合在一起形成每个词最终的权重,计算公式如下

TF-IDF=TF*IDF

TF-IDF按照如下的方式对文档d中的词项t赋予权重:

(1)当t只在少数几篇文档中多次出现时,权重取值最大(此时能够对这些文档提供最强的区分能力);

(2)当t在一篇文档中出现次数很少,或者在很多文档中出现,权重取值次之(此时对最后的相关度计算作用不大);

(3)如果t在所有文档中都出现,那么权重取值最小。

3 向量空间模型

    通过用TF-IDF表示词的权重,就可以把文档看成是一个向量(vector),其中的每个分量都对应词典中的一个词,分量值为词的权重值(可用TF-IDF计算,也有其他方法计算权重值)。当某词在文档中没有出现时,其对应的分量值为0。这种向量形式对于评分和排序十分重要。一系列文档在同一向量空间中的表示被称为向量空间模型(vector space model,简称VSM),它是信息检索领域一系列相关处理的基础,比如文档的评分、文档的分类及聚类。

    用向量空间模型,一组文档的集合可以看成向量空间中的多个向量,每个词对应一个坐标轴,文档在每个坐标轴上的值是对应词的权重Weight。那么文档d对应的向量为



4 应用

4.1 文档相关性

(1)简单的文档相关性计算,可以用文档中的每个词的权重(TF-IDF)加权求和,即

  TF 1*IDF 1 + TF 2*IDF 2 +... + TF N*IDF N。

(2)用余弦定理判断文档相似度

    学过向量代数的人都知道,向量实际上是多维空间中有方向的线段。 如果两个向量的方向一致,即夹角接近零,那么这两个向量就相近。而要确定两个向量方向是否一致,这就要用到余弦定理计算向量的夹角了。可以用余弦定理判定文档的相似度。
    余弦定理对我们每个人都不陌生,它描述了三角形中任何一个夹角和三个边的关系,换句话说,给定三角形的三条边,我们可以用余弦定理求出三角形各个角的角度。假定三角形的三条边为 a, b 和 c,对应的三个角为 A, B 和 C,那么角 A 的余弦为

如果我们将三角形的两边 b 和 c 看成是两个向量,那么上述公式等价于

其中分母表示两个向量 b 和 c 的长度,分子表示两个向量的内积。

同样在向量空间下,可以用余弦定理对两篇文档的相似度进行计算,如下图



举一个具体的例子(这个例子来自《数学之美》),假如文章 X 和文章 Y 对应向量分别是x1,x2,...,x64000 和y1,y2,...,y64000,那么它们夹角的余弦等于,



余弦定理应用

1)分类

如果两篇文档的特征向量相近,则对应的文档内容相似,它们应当归在一类,反之亦然。

2)推荐搜索

如果在某个系统中,用户确定一篇文档然后查找与之相似的我的那个,那么上面的文档相似度计算就非常有用。在一些搜索引擎的返回结果当中有时就看到这种搜索方式,比如一些搜索引擎的more like this(类似网页)按钮,这些现象在我们现实生活中非常常见,如网上购物,搜索引擎会自动向用户推荐商品,即所谓的推荐搜索。下图是亚马逊根据用户浏览记录推荐的书


当然,工程实现上还会用到很多处理算法,但是基本思想是用余弦定理评定相关性。

3)查询结果排名

将文档表示成向量的一个令人信服的理由是可以将查询表示成向量。可以将查询看成一篇极端的文档来处理,因此,可以哦通过计算给定的查询向量和每个文档向量的相似度来对符合查询结果的文档进行排名,最终的结果可以选择排名靠前的一些文档。下图queryVector为查询向量。


    搜索引擎常用的文档排名算法有Google的PageRank。PageRank的核心思想:在互联网上,如果一个文档被很多其他文档所链接,说明它受到普遍的承认和信赖,那么它的排名就高。一个文档的排名是来自于所有指向这个文档的其他文档的权重(这些文档的本身排名)之和。如果结合文档排名算法,那么给定一个查询,有关文档的综合排序大致由相关性和文档排名的乘积决定。

     开源全文检索库Lucene的排名和打分算法可见  Lucene打分公式的数学推导





参考文献

Introduction to Information Retrieval,信息检索导论, Christopher D.Manning /  Hinrich SchützePrabhakar Raghavan 

数学之美,吴军

Lucene in Action

作者:zhongyangzhong 发表于2013-3-26 23:34:46 原文链接
阅读:126 评论:0 查看评论

相关 [权重 计算 应用] 推荐:

词的权重计算及应用

- - CSDN博客互联网推荐文章
    本文讨论如何计算词权重(即特征向量)和向量空间模型及其应用. 本文的“文档”是指查询对象,它们可以使一条条单独的记录或者是一本书的各章,还可以是一个网页,或者xml文件等.     在讨论词权重和向量空间模型前需要先了解下归一化的概念. 归一化(normailization)方法有两种形式.

关键词权重计算算法:TF-IDF

- - 标点符
TF-IDF(Term Frequency–Inverse Document Frequency)是一种用于资讯检索与文本挖掘的常用加权技术. TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度. 字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降.

用户满意度指标权重计算方法

- - 阿里巴巴(中国站)用户体验设计部博客
用户满意度调查是用户体验工作中重要一项活动. 在了解整体满意度、一级指标满意度、二级指标满意度外,还需要了解下一级指标对上一级指标的权重,帮助确定各个方面的工作优先级,为产品优化改进方向提供决策依据. 下文将简单介绍一下几种满意度指标权重的计算方法. 指标权重可以更合理的评分用户满意度,指导用户体验优化方向.

实时计算应用场景

- JHavaC - yiihsia[互联网后端技术]_yiihsia[互联网后端技术]
实时计算的概念很难定义,每个人对这四个字的理解可能都不同. 个人观点主要分为两块:数据的实时入库和数据的实时计算. 数据实时入库的时候,一般都需要对原始数据做一定的处理再入库. 能在这个步骤计算尽量在这里完成. 这个类似数据的预算后入库,然后提供直接读取服务. 然而有一些对数据的计算并不能通过预算解决全部问题,比如搜索.

Cgroups在云计算中的应用

- - 博客园_知识库
  云计算是目前计算机业界热门的方向,Cgroups作为一种有效的资源管理方案在云计算中得到越来越大的应用. 下面简要介绍一下Cgroups在云计算中一些应用,欢迎补充.   首先,我们看一下Cgroups的娘家Google(Cgroups最早是Google工程师提出的). 在推出PaaS产品GAE几年后,Google终于推出了自己的IaaS的产品Google Compute Engine,跟Amazon进行全面的竞争.

云计算在科研和教学中的应用

- - CSDN博客云计算推荐文章
        云计算在加快研发速度、加强合作和丰富教育手段方面有很大潜能. 教育者、研发管理人员、IT总监和研发人员需要意识到和充分利用云在研究、教学和学习方面的潜能. 他们可以通过部署公有云、私有云和混合云来补充他们当前的计算基础设施. 实际上,一个最新的调查显示有一些人已经通过拥抱云计算获得了收益.

云计算环境下的应用架构设计

- - 博客园_知识库
  作者从云计算环境下应用的特点出发,分析了在云计算环境下应用程序开发设计的一些新变化. 根据这些特点,本文提出一个“自我感知应用”(Self-Sensing Application)的新概念,接着以Windows Azure平台为例阐述如何实现自我感知应用.   多年来应用程序开发者和架构师们都在努力设计一种既能够在功能上满足当前业务需求,又能够适应用户需求发生变化或者能够在可预见的将来适应环境变化的应用.

基于弹性计算平台——构建高可用、可扩展的应用

- - 酷勤网-挖经验 [expanded by feedex.net]
酷勤网 � 程序员的那点事. 前不久,Facebook宣布投资10亿美元收购仅成立15个月的移动照片分享应用Instagram,消息传出时,人们不仅惊叹于这笔巨额的交易,更为这支13个人的小团队感到不可思议. Instagram的Android版客户端发布时,24小时内下载量超过100万,高峰期达到每分钟2000次,是下载量最大的Android应用之一.

实时计算框架 Flink 在教育行业的应用实践

- - U刻
如今,越来越多的业务场景要求 OLTP 系统能及时得到业务数据计算、分析后的结果,这就需要实时的流式计算如 Flink 等来保障. 例如,在 TB 级别数据量的数据库中,通过 SQL 语句或相关 API 直接对原始数据进行大规模关联、聚合操作,是无法做到在极短的时间内通过接口反馈到前端进行展示的. 若想实现大规模数据的 “即席查询”,就须用实时计算框架构建实时数仓来实现.