本文利用gensim进行LDA主题模型实验,第一部分是基于前文的wiki语料,第二部分是基于Sogou新闻语料。
1. 基于wiki语料的LDA实验
上一文得到了wiki纯文本已分词语料 wiki.zh.seg.utf.txt,去停止词后可进行LDA实验。
importcodecsfrom gensim.models importLdaModelfrom gensim.corpora importDictionary
train=[]
stopwords= codecs.open('stopwords.txt','r',encoding='utf8').readlines()
stopwords = [ w.strip() for w in stopwords ]
fp= codecs.open('wiki.zh.seg.utf.txt','r',encoding='utf8')for line infp:
line=line.split()
train.append([ wfor w in line if w not instopwords ])
dictionary=corpora.Dictionary(train)
corpus= [ dictionary.doc2bow(text) for text intrain ]
lda= LdaModel(corpus=corpus, id2word=dictionary, num_topics=100)
同时gensim也提供了对wiki压缩包直接进行抽取并保存为稀疏矩阵的脚本 make_wiki,可在bash运行下面命令查看用法。
python -m gensim.scripts.make_wiki
#USAGE: make_wiki.py WIKI_XML_DUMP OUTPUT_PREFIX [VOCABULARY_SIZE]
python-m gensim.scripts.make_wiki zhwiki-latest-pages-articles.xml.bz2 zhwiki
运行时间比较久,具体情况可以看gensim官网,结果如下,mm后缀表示Matrix Market格式保存的稀疏矩阵:
-rw-r--r-- 1 chenbingjin data 172M 7月 1 12:10zhwiki_bow.mm-rw-r--r-- 1 chenbingjin data 1.3M 7月 1 12:10zhwiki_bow.mm.index-rw-r--r-- 1 chenbingjin d