很久之前就下了wiki中文预料,当时就只做了word2vec。可以做做其他的。
wiki这么大个语料,先从文档相似度入手。给定一篇文档(新闻、报告…),能知道关键讲的什么,并能给出wiki中相关文章
预处理
首先是原始数据的处理,。
处理参见http://www.52nlp.cn/%E4%B8%AD%E8%8B%B1%E6%96%87%E7%BB%B4%E5%9F%BA%E7%99%BE%E7%A7%91%E8%AF%AD%E6%96%99%E4%B8%8A%E7%9A%84word2vec%E5%AE%9E%E9%AA%8C/comment-page-1 做了点改动,在Python里面分词然后编码为utf8再写入。 在Mac上繁简转换也报错zht2zhs.ini not found or not accessible.,这里需要替换为-c t2s.json。
原文分了几部分,现在把繁简转换、编码、分词放在一起。
from gensim.corpora import WikiCorpus
import jieba
data = WikiCorpus(input_file, lemmatize=False, dictionary={})
output = open(output_file, "w")
def cut(str):
return " ".join(jieba.cut(str))
def t2s(line):
return opencc.convert(b"".join(line).decode("utf-8"), config='t2s.json')
for line in iter_data:
title = opencc.convert(line[0].decode("utf-8"), config='t2s.json')
output.write(title + " " + cut(t2s(line)) + "\n")
其次是停用词处理,这里就用idf筛选无效词。小于1的直接去掉。
看看全语料idf 最低10个
词 | idf |
---|---|
外部 | 0.9452591183849574 |
于 | 0.9193400953235863 |
年 | 0.7146749405249633 |
在 | 0.40104916099974064 |
为 | 0.53836286894243 |
有 | 0.9470858426929526 |
与 | 0.8071514075471966 |
的 | 0.11320240832637747 |
是 | 0.39737973543304406 |
和 | 0.7625961050858583 |
LDA分析
使用Python的gensim跑LDA好慢,只用了一个CPU,不知道哪里没配对。
然后换Spark 机器学习包,参数默认,1000个主题。
先用CountVectorizerModel做词映射,然后再带入训练。
因为Spark的配置,要把单机集群打开,电脑跑的好有压力, task的shuffle数据都是5G左右,而且还报OOM。
只能稍微调整一下GC参数,内存调大,减小线程数。
再次运行
出现问题,使用online学习在初始化Gamma矩阵的时候OOM。
换个姿势再次运行
然后调整到em, 跑了半天然后报OOM,而且中间电脑还报磁盘不足,这货OOM的时候居然占用了接近100G的大小的磁盘。
看是警告
WARN executor.Executor: 1 block locks were not released by TID = 257:
解决方法
https://github.com/apache/spark/pull/16513
恩,很好,warn配置就看不到这个日志了。
Spark需要重新编译一下在做优化。
todo
换回Python
1000个topic -> 跑了一天,被kill
800一样
500还是会被kill
300跑了24小时终于在默认参数下训练成功,接下来看看会出现怎样的效果。
['街晓丽', 0.16883524276409045], ['箕谷出入口', 0.044981322867586021], ['外掠', 0.043425382369214643], ['程郁', 0.028774685263776044], ['省任', 0.017550910601273804], ['张谦', 0.015162879821680651], ['沙特尔大教堂', 0.014366676056815682], ['七时许', 0.013898498684258647], ['赛柏', 0.013064417051134406], ['距守', 0.012563470338417518]]
['本线京', 0.091848252447655571], ['舍房', 0.052179806138415025], ['innocencedvd', 0.040138455318138873], ['海虎海虎', 0.022987491370894297], ['图安', 0.016916751048292468], ['beforethefall', 0.015540284156943928], ['knack', 0.015196176172706913], ['夏楚', 0.013777510037363919], ['藤田前', 0.013539043739846126], ['侯连海', 0.013537722693614876]]
['冲激响应', 0.050817908915583063], ['中用', 0.030291944174676098], ['赵伯符', 0.028189822972599945], ['贡镛', 0.027951312265465034], ['藤谷律子', 0.027408486954757779], ['zosteropslateralissilvereye', 0.022611700310877784], ['今船', 0.020082149024269857], ['汉川', 0.018645902540263774], ['wannafeatcostibobsinclarshaggyneblagodaren', 0.018175209773727292], ['h³m', 0.013444719683365629]]
看不懂,词云也不用做了。
热点词
todo
文档主题抽取
todo
相似文档筛选
todo