biterm主题模型
biterm的Python项目详细描述
Biterm主题模型
这是一个简单的python实现 Biterm Topic Model。 该模型在短文本分类中是准确的。 它在整个语料库中对词的共现模式进行显式建模,解决了文档级稀疏词的共现问题。
只需通过以下方式安装:
pip install biterm
加载一些短文本并通过sklearn对其进行矢量化。
fromsklearn.feature_extraction.textimportCountVectorizertexts=open('./data/reuters.titles').read().splitlines()[:50]vec=CountVectorizer(stop_words='english')X=vec.fit_transform(texts).toarray()
从课文中获取词汇和位。
frombiterm.utilityimportvec_to_bitermsvocab=np.array(vec.get_feature_names())biterms=vec_to_biterms(X)
创建一个btm并通过位来训练它。
frombiterm.cbtmimportoBTMbtm=oBTM(num_topics=20,V=vocab)topics=btm.fit_transform(biterms,iterations=100)
使用pyldavis保存主题图并探索结果!(另请参见simple_btml.py)
frombiterm.btmimportoBTMbtm=oBTM(num_topics=20,V=vocab)topics=btm.fit_transform(biterms,iterations=100)
推断是用吉布斯抽样做的,而且不是很快。该实现不用于生产。 但如果你必须对很多文本进行分类,你可以尝试使用在线学习。使用cython版本可以稍微加快性能。
importnumpyasnpimportpyLDAvisfrombiterm.cbtmimportoBTMfromsklearn.feature_extraction.textimportCountVectorizerfrombiterm.utilityimportvec_to_biterms,topic_summuary# helper functionsif__name__=="__main__":texts=open('./data/reuters.titles').read().splitlines()# vectorize textsvec=CountVectorizer(stop_words='english')X=vec.fit_transform(texts).toarray()# get vocabularyvocab=np.array(vec.get_feature_names())# get bitermsbiterms=vec_to_biterms(X)# create btmbtm=oBTM(num_topics=20,V=vocab)print("\n\n Train Online BTM ..")foriinrange(0,len(biterms),100):# prozess chunk of 200 textsbiterms_chunk=biterms[i:i+100]btm.fit(biterms_chunk,iterations=50)topics=btm.transform(biterms)print("\n\n Visualize Topics ..")vis=pyLDAvis.prepare(btm.phi_wz.T,topics,np.count_nonzero(X,axis=1),vocab,np.sum(X,axis=0))pyLDAvis.save_html(vis,'./vis/online_btm.html')print("\n\n Topic coherence ..")topic_summuary(btm.phi_wz.T,X,vocab,10)print("\n\n Texts & Topics ..")foriinrange(len(texts)):print("{} (topic: {})".format(texts[i],topics[i].argmax()))