文本相似计算是进行文本聚类的基础,和传统结构化数值数据的聚类方法类似,文本聚类是通过计算文本之间"距离"来表示文本之间的相似度并产生聚类。文本相似度的常用计算方法有余弦定理和Jaccard系数。但是文本数据与普通的数值数据或类属数据不同,文本数据是一种半结构化数据,在进行文本挖掘之前必须要对文本数据源进行处理,如分词、向量化表示等,其目的就是使用量化的数值来表达这些半结构化的文本数据。使其适用于分析计算。

进行文本数据挖掘或信息检索的时候,会对文本进行分词处理,经过分词处理以后,一个文本的表示就变为由若干关键词(Token)来表示的多维向量。可表示为:d(t1,t2,…,tn)d表示被处理的文档,tn表示在d中出现过至少一次的关键词。在文本挖掘过程中会处理大量的文档,记为d1,d2,…,dm。经分词后,这些文档的向量表示就变为:dm(t1,t2,…,tn)m表示文档个数、n表示某个文档中关键词的个数。下面的例子中有两个包含若干关键词的文档,在本文的后面会一直使用这个例子所提供的数据。

d1 (A, B, C, C, S, D, A, B, T, S, S, S, T, W, W)

d2(C, S, S, T, W, W, A, B, S, B)

在了解了文档的向量表示以后再来看看TFIDF加权统计方法(在一些简单的处理方法中,可以只通过词频来计算文本间的相似度,不过当某个关键词在两篇长度相差很大的文本中出现的频率相近时会降低结果的准确性)。TFIDF是一种加权技术,它通过统计的方法来计算和表达某个关键词在文本中的重要程度。TFIDF是由两部分组成,一部分是TF(Token Frequency),表示一个词在文档中出现的次数,即词频。另一部分是IDF(Inverse Document Frequency),表示某个词出现在多少个文本中(或者解释为有多少个文本包含了这个词),即逆向文档频率,通常由公式IDFtlog((1+|D|)/|Dt|),其中|D|表示文档总数,|Dt|表示包含关键词t的文档数量。TFIDF的值就是由这两部分相乘得到的,还要指出的是TFIDF不是指某一个特定的公式,而是表示了一系列基于基本TFIDF方法变形(分别对TFIDF这两部分进行处理)的公式的集合,而TFIDFtd=tftd*ln(idft)(t关键词在文本d中的词频乘以t的逆向文档频率的自然对数)是被多数系统证明是最有效的一个公式。现在来看看上面那个例子中给出的数据,由例子给出的数据可得到词频矩阵如下:

d1

d2

A

2

1

B

2

2

C

2

1

D

1

0

S

4

3

T

2

1

W

2

2

通常需要把词频数据正规化,以防止词频数据偏向于关键词较多即较长的文本。如某一个词在文档d1中出现了100次,在d2中出现了100次,仅从词频看来这个词在这两个文档中的重要性相同,然而再考虑另一个因素,就是d1的关键词总数是1000,而d2的关键词总数是100000,所以从总体上看,这个词在d1和d2中的重要性是不同的。因此就需要对词频做正规化处理。正规化处理的方法是用词频除以所有文档的关键词总数,将上面的词频矩阵进行正规化处理后,结果如下表:

d1

d2

A

0.08

0.04

B

0.08

0.08

C

0.08

0.04

D

0.04

0.00

S

0.16

0.12

T

0.08

0.04

W

0.08

0.08

文档中关键词总数=25

然后再计算每个关键词对应的逆向文档频率即IDF的值。如下表所示:

ln

A

0.4

B

0.4

C

0.4

D

1.1

S

0.4

T

0.4

W

0.4

最后将正规化后的词频与IDF值相乘,结果如下:

d1

d2

A

0.032

0.016

B

0.032

0.032

C

0.032

0.016

D

0.044

0.000

S

0.064

0.048

T

0.032

0.016

W

0.032

0.032

在得到TFIDF权值以后就可以利用这些数据利用余弦定理Jaccard系数来计算文本之间的相似度以实现文本聚类等标准的文本挖掘算法了。

参考:

http://www.cnblogs.com/SmartBizSoft/archive/2009/05/14/1457161.html

http://zh.wikipedia.org/w/index.php?title=TF-IDF&variant=zh-cn

文本向量表示及TFIDF词汇权值相关推荐

  1. Data Mining Machine Learning 之文本预处理 文档关键值权值Java TF-IDF算法实现 (四)

    IDF weighting(Inverse Document Frequency)** 逆文档频率权重 Suppose a token t IDF(t) = log(ND/NDt) ND表示 the ...

  2. 用TFIDF给特征词赋权值

    0  背景             在上一篇的用CHI检验的文章中我们已经获得了特征词,这些特征词在某一篇文章中出现的频率是不一样的,也可以说词与词的重要性是不一样的.为了标示特征词语的重要程度,就必 ...

  3. NLP文本相似度(TF-IDF)

    前言 我们在比较事物时,往往会用到"不同","一样","相似"等词语,这些词语背后都涉及到一个动作--双方的比较.只有通过比较才能得出结论, ...

  4. 深度学习 vs. 大数据:神经网络权值的版权属于谁?

     深度学习 vs. 大数据:神经网络权值的版权属于谁? width="22" height="16" src="http://hits.sinaj ...

  5. java二叉树求权值_二叉树中的权值是什么?

    展开全部 二叉树中的权值就是对叶子结点赋予的一个有意义的数量值. 一棵深度为k,且有2^k-1个节点的二叉树,32313133353236313431303231363533e58685e5aeb93 ...

  6. The Minimum Cycle Mean in a Digraph 《有向图中的最小平均权值回路》 Karp

    文件链接 Karp在1977年的论文,讲述了一种\(O(nm)\)的算法,用来求有向强连通图中最小平均权值回路(具体问题请参照这里) 本人翻译(有删改): 首先任取一个节点 \(s\) ,定义 \(F ...

  7. 【bzoj2770】YY的Treap 权值线段树

    题目描述 志向远大的YY小朋友在学完快速排序之后决定学习平衡树,左思右想再加上SY的教唆,YY决定学习Treap.友爱教教父SY如砍瓜切菜般教会了YY小朋友Treap(一种平衡树,通过对每个节点随机分 ...

  8. poj3686(最小权值完美匹配)

    开始理解的有点简单了,也是看了其他的博客之后发现问题的: 题意:因为每一个物件都是受前一个物件的时间限制,所以假设某台机器加工了k个订单,那么用时为t1 + (t1 + t2) + (t1 + t2 ...

  9. HDU6346(最小权值完美匹配)

    题意:满足 xi+yj≤ai,j(1≤i,j≤n) 的约束下最大化∑ni=1xi+∑ni=1yi, 思路:采用最大权值完美匹配算法:但是现在这里是求最小权值完美匹配问题,所以只需要将权值取反最后在取反 ...

最新文章

  1. java rest 序列化_http请求/restful/序列化反序列化/JSON
  2. MySQL事务autocommit自动提交
  3. Pycharm+PyQt5环境配置
  4. wxWidgets:wxDirDialog类用法
  5. 实现一个正则表达式引擎in Python(二)
  6. linux内核spi总线驱动分析,Linux下的SPI总线驱动(三)
  7. java 进度条jsp,jsp进度条_jsp技巧
  8. 用hibernate类实现数据库的基本操作
  9. Leetcode算法题(C语言)14--颠倒整数
  10. SAP License:整理的SAP参数文件
  11. html 京东购物车样式,js京东简单购物车增减功能
  12. 微软亚洲研究院2017年笔试编程题
  13. C#中的事件(event)
  14. Chromium网页CPU光栅化原理分析
  15. 安装VS2022后报错 _CRT_SECURE_NO_WARNINGS
  16. C#: 实现幻数判断的完整源代码
  17. 第三章 Python基础——文件操作函数
  18. 新兴前端框架 Svelte 从入门到原理
  19. 哈工大刘宏伟《计算机组成原理》课程框架总结
  20. 微信小程序能实现盈利的7大流量主广告组件及其分成模式概览

热门文章

  1. [云炬创业学笔记]第二章决定成为创业者测试15
  2. [云炬创业基础笔记]第五章创业机会评估测试12
  3. USTC English Club Note20171023(2)
  4. 科大星云诗社动态20210330
  5. 云炬随笔20210803
  6. 量变的一种坏结果是变质——以身说法结合实例论量与质,过程与结果2017-12-20
  7. 学长毕业日记 :本科毕业论文写成博士论文的神操作20170331
  8. 为什么开了数据不能上网_Doinb和LCK选手双排为什么不能开语音?Doinb深夜道出实情...
  9. matlab 计算程序运行的时间
  10. 注册表文件修改打开程序的简单示例