读书人

【转】mahout施用kmeans进行文本聚类2

发布时间: 2012-08-08 14:32:45 作者: rapoo

【转】mahout应用kmeans进行文本聚类2之——实例分析

转:http://blog.csdn.net/aidayei/article/details/6674135

?

在Mahout_in_Action这本书中,给了一个文本的聚类实例,并提供了原始输入数据,下面结合例子说明

作为聚类算法的主要应用场景 - 文本分类,对文本信息的建模也是一个常见的问题。在信息检索研究领域已经有很好的建模方式,就是信息检索领域中最常用的向量空间模型

词频 - 逆向文本频率 (Term Frequency Inverse Document Frequency, TF-IDF):它是对 TF 方法的一种加强,字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在所有文本中出现的频率成反比下降。举个例子,对于“高频无意义词汇”,因为它们大部分会出现在所有的文本中,所以它们的权重会大打折扣,这样就使得文本模型在描述文本特征上更加精确。在信息检索领域,TF-IDF 是对文本信息建模的最常用的方法。

对于文本信息的向量化,Mahout 已经提供了工具类,它基于 Lucene 给出了对文本信息进行分析,然后创建文本向量。下面给出了一个例子,分析的文本数据是路透提供的新闻数据。将数据集下载后,放在“src/test/input”目录下。数据集下载地址:http://www.daviddlewis.com/resources/testcollections/reuters21578/

1. 将路透的数据解压缩,Mahout 提供了专门的方法

File inputFolder = new File("src/test/input");   File outputFolder = new File("src/test/input-extracted");   ExtractReuters extractor = new ExtractReuters(inputFolder, outputFolder);   extractor.extract(); 

?2. 将数据存储成 SequenceFile

mahout直接进供了seqdirectory方法来将字符文本转成SequenceFile,可以直接bin/mahout seqdirectory -h,查看一下这个命令的帮助,将输入和输出参数设好,这里的输入就直接用上一步提取出的文本,目录在"src/test/input-extracted"

3.将 SequenceFile 文件中的数据,基于 Lucene 的工具进行向量化

mahout直接提供了seq2sparse命令来转向量,可以直接bin/mahout seq2sparse -h,查看一下这个命令的帮助,输入为第二步的输出

生成的向量化文件的目录结构是这样的:

读书人网 >开源软件

热点推荐