在文本聚类之前,首先要做的是文本的向量化。该过程涉及到分词,特征抽取,权重计算等等。Mahout 提供了文本向量化工具。由于Mahout 向量化算法要处理的文件是Hadoop SequenceFile ,需要将普通的文本文件转成SequenceFile格式,然后在向量化。
一、序列化
API
SequenceFilesFromDirectory.main(args); |
|
--input (-i) |
文件存放路径 |
-output (-o) |
输出文件路径 |
--overwrite (-ow) |
是否清空输出目录 |
--charset (-c) |
默认UTF-8 |
示例
String [] arg ={"-i","forclusters","-o","se","-ow"}; SequenceFilesFromDirectory.main(arg); |
二、向量化
API
SparseVectorsFromSequenceFiles.main(args); |
|
--minSupport (-s) |
词的最小支持度 |
--analyzerName (-a) |
Lucene分词器类权限命名 |
--chunkSize (-chunk) |
块大小 |
--output (-o) |
输出目录 |
--input (-i) |
输入目录 |
--minDF (-md) |
文档的最小DF值 |
--maxDFPercent (-x) |
最大DF频率 |
--weight (-wt) |
权重,TFIDF,或TF |
--minLLR (-ml) (Optional) |
最小log-Likelihood |
--numReducers (-nr) |
reduce个数 |
--maxNGramSize (-ng) |
最大n-gram数 |
--overwrite (-ow) |
是否覆盖outPut下的文件 |
--sequentialAccessVector(-seq) (Optional) |
是否输出为sequentialAccessVector |
--namedVector(-nv) (Optional) |
是否输出为namedVector |
--logNormalize(-lnorm) (Optional) |
输出结果向量取log |
--stopWordsFile (-sw) |
停用词词典文件路径 |
示例
String [] args ={"-i",”/seq”, "-o",”/vec” "-a","org.apache.lucene.analysis.cn.smart .SmartChineseAnalyzer", "-md",4), "-ow","-ng",4), "-wt",”TFIDF”, "-nr",4), "-sw",”/stopwprds.txt” }; SparseVectorsFromSequenceFiles.main(args); |
输出结果
名称 |
Key类型 |
Value类型 |
说明 |
tokenized-documents |
文档名(org.apache.hadoop.io.Text) |
词数组(org.apache.mahout. common.StringTuple) |
分词后的的文本,每条记录代表一篇文档 |
dictionary.file-0 |
单词(org.apache.hadoop.io.Text) |
单词id (org.apache.hadoop. io.IntWritable) |
文本集的特征词词典 |
wordcount |
单词(org.apache.hadoop.io.Text) |
词频 (org.apache.hadoop. io.LongWritable) |
特征词词频统计 |
tf-vectors |
文档名(org.apache.hadoop.io.Text) |
文档的tf向量(org.apache.mahout. math.VectorWritable) |
每篇文档的Tf向量 |
df-count |
单词id (org.apache.hadoop.io.IntWritable) |
单词的文档频率(org.apache. hadoop.io.LongWritable) |
每个单词的文档频率,即包含这个单词的文档个数 |
frequency.file-0 |
单词id (org.apache.hadoop.io.IntWritable) |
单词的文档频率(org.apache. hadoop.io.LongWritable) |
仍是文档频率,只是对df-count中的文件进行分块 |
tfidf-vectors |
文档名(org.apache.hadoop.io.Text) |
文档的tfidf向量(org.apache.mahout.math.VectorWritable) |
每篇文档的Tfidf向量 |