数据集选的是20_newsgroups,我按7:3分的训练集和测试集。
总的流程如下:
这里把数据集中的每一条文本都表示成TFTDF向量,用训练集的TFTDF向量来训练模型,用测试集的TFTDF向量进行分类测试,最后统计测试准确率。
###初始化
|
|
###预处理函数
完成对文档的分词,去停用词,词干提取,同义词替换的工作,需要安装一个自然语言处理的第三方库nltk。当然,每个节点都需要安装。预处理的基本步骤如下:
这里的同义词替换做的非常简单,只是从单词的第一个同义词集里取出第一个同义词。这么做有时会产生歧义,因为单词在不同的语义下有不同的同义词集,只取第一个同义词集即限定了仅仅使用单词的第一个语义。
###导入训练集
###构建单词映射哈希表,tfidf模型
训练集和测试集都需要使用这个哈希表,它的大小根据不同单词的数量来设置,一般取2的n方,在前期数据探索的时候需要计算一下不同单词的数量。
###标注训练集
|
|
###导入测试集
|
|
###将测试集转换成tfidf向量
|
|
###标注测试集
|
|
训练朴素贝叶斯模型并计算准确率
|
|
0.803298634582
###训练多元逻辑回归模型并计算准确率
|
|
0.812897120454
如果有兴趣,可以随便拿一份新闻组文本来测试一下,给自己一个更为直观的感受。
|
|
'comp.sys.mac.hardware'
###总结spark上如何将文档转换成tfidf向量
|
|
###相关阅读
https://en.wikipedia.org/wiki/Tf%E2%80%93idf
https://en.wikipedia.org/wiki/Natural_Language_Toolkit