文本相似计算是进行文本聚类的基础,和传统结构化数值数据的聚类方法类似,文本聚类是通过计算文本之间"距离"来表示文本之间的相似度并产生聚类。文本相似度的常用计算方法有余弦定理和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),表示某个词出现在多少个文本中(或者解释为有多少个文本包含了这个词),即逆向文档频率,通常由公式IDFt=log((1+|D|)/|Dt|),其中|D|表示文档总数,|Dt|表示包含关键词t的文档数量。TFIDF的值就是由这两部分相乘得到的,还要指出的是TFIDF不是指某一个特定的公式,而是表示了一系列基于基本TFIDF方法变形(分别对TF和IDF这两部分进行处理)的公式的集合,而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系数来计算文本之间的相似度以实现文本聚类等标准的文本挖掘算法了。

基于TFIDF的文档表示法相关推荐

  1. 基于javaGUI的文档识别工具制作

    基于javaGUI的文档识别工具制作 对于某些文本,其中富含了一些标志,需要去排除,以及去获得段落字数,以下是我个人写的一个比较简单的文档识别工具,含导入文件.导出文件以及一个简单的识别功能. 1.功 ...

  2. 基于云的文档管理软件/文档管理系统(DMS)

    基于云的文档管理软件 由于违反法规而导致的安全漏洞.数据丢失.版本管理等难题和诉讼已经变得非常普遍,以至于这一切都感觉像是"正常"的现象.使用文档管理系统,可以让您避免这些麻烦.安 ...

  3. sphinx:基于 Python 的文档生成工具

    sphinx:基于 Python 的文档生成工具 Motivation 对于软件开发来说,文档是软件可维护性的重要保障.sphinx 是一款文档生成工具,以 restructuredText 为标记语 ...

  4. 基于MFC多文档多视图结构的OGRE指北针程序

    基于MFC多文档多视图结构的OGRE指北针程序 0.前沿 作者: 化凡 QQ: 371691096 Mail:zhixu_07@163.com 1.  功能描述 本程序作为OGRE和MFC结合,欲实现 ...

  5. Java基于springmvc实现文档预览(openoffice+swftools+flexpaper)(排坑记录)

    Java基于springmvc实现文档预览(openoffice+swftools+flexpaper)(排坑记录) 本文代码来源已在末尾标注,写本文的目的在于记录自己在实践过程中遇到的问题及解决方案 ...

  6. 基于云的文档管理系统:DocuWare Cloud

    云文档管理软件:DocuWare Cloud 一流的云文档管理软件和工作流自动化内容服务,适用于任何规模的团队和公司--在多租户云平台上交付. DocuWare Cloud 可在订阅的基础上为不同规模 ...

  7. C++项目:基于boost在线文档实现的搜索引擎(二)

    C++项目:基于boost在线文档实现的搜索引擎(二) 索引模块 索引模块的描述 正排索引与倒排索引的建立 正排索引 倒排索引 jieba分词,正排查找,倒排查找 jieba分词 索引查找 索引的测试 ...

  8. 缺陷管理-基于企业微信文档设计的一个缺陷管理文档

    基于企业微信文档设计的一个缺陷管理文档 虽然禅道.jira很好用,但对于开发周期较短的项目,将项目部署到禅道或jira中会有些许繁琐(老板讲的,不是我认为的).既然无法要求团队使用什么工具,那就改变自 ...

  9. 基于MFC单文档的画图程序(小项目)

    基于MFC单文档的画图程序 前言 学习了一年多的MFC和Qt,对其基本用法已经熟练掌握,迫不及待的想实战一波,但是心急吃不了热豆腐,我还是踏踏实实的找一些既能复习以前知识的单子又不消耗我太多时间(最近 ...

最新文章

  1. 20个经典要诀学好英语
  2. 南大庄建军计算机学院讲座,教师成果 - 南京大学 - 电子信息专业国家级实验教学示范中心...
  3. 【Android 组件化】路由组件 ( 组件间共享的服务 )
  4. 电脑如何测网速_Macbook Pro怎么查看网速Mac怎么测网速?
  5. 21 个非常有用的 .htaccess 提示和技巧
  6. idea中@Data标签getset不起作用
  7. Linux 系统如何调整时区和时间
  8. docker Redis集群
  9. 电子计算机诞生于1946年第几台,人类第一台电子计算机诞生于1946年2月
  10. Java--Socket客户端,服务端通信
  11. 服务器运行多个jdk版本_如何使用中央管理服务器运行多个查询
  12. 将多张图片缩小合为一张图片(千图成像)
  13. linux 解压 7z 分卷压缩文件,linux分卷压缩与解压缩
  14. 获取微信好友头像,对其进行相应操作
  15. 方程组在原点附近解matlab,Matlab计算题:求解下列非线性方程组在原点附近的根: 9x^2 + 36y^2 + 4z^2 =36 X^2 -2y^2- 20z =0 16x –...
  16. 机器学习:Leaning without Forgetting -- 增量学习中的抑制遗忘
  17. python房价预测模型_python随机森林房价预测
  18. apk闪退_安卓手机经常闪退怎么办?安卓手机闪退解决办法
  19. 「数据一致性」理解分布式系统中的一致性
  20. 关于Eslint语法检查报“error Extra semicolon semi”错误的解决办法

热门文章

  1. 【_ 記 】Java Calendar类详解(今年 本月 今日 去年 上月 昨日)
  2. 手把手教你如何重建二叉树(超精彩配图)
  3. 想剑网三妹子最多服务器,224人一起捏刘亦菲?剑网三妹子刚进游戏,就整了个花木兰出来...
  4. WordPress页面编辑器插件--Elementor
  5. 每日一诗词 ——满江红·写怀
  6. 2021年全国职业院校技能大赛高职组“软件测试”赛项—“阶段二竞赛任务书”
  7. html文本框椭圆,怎么用css画椭圆?
  8. rabbitmq消息ACK确认机制及发送失败处理
  9. 王爽老师版汇编语言课程设计2
  10. 微信的秘密-python可视化微信好友信息