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)

pyLDAvis Visualization

推断是用吉布斯抽样做的,而且不是很快。该实现不用于生产。 但如果你必须对很多文本进行分类,你可以尝试使用在线学习。使用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()))

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java错误:局部变量JAR可能尚未初始化   java是消除匿名类、降低内存泄漏风险的一种好技术(使用数据保持器)   任务“:app:compiledBugkotlin”java的安卓执行失败。木卫一。IOException   Java如何在Spring Boot中增加grpc服务器的消息大小   java在写入文件时无意的线程同步   使用HashMap作为Java字典的翻译器   Java:有没有更有效的方法将JFrame元素写入数组   sql server大表查询导致Java OutOfMemory   java Springbatch修改我的应用程序,以便将JobParameters传递给我的安装程序   java Quartz调度程序开始和结束时间   java映像未出现在JFrame中   java如何使用JFrame。pack()正确吗?   java Play 2.5@Transactional readOnly被忽略?   java Android工具栏没有显示任何内容   java部署maven项目   java找不到合适的方法。放置(字符串)   java如何获取Spark MLlib模型。将响应预测为文本值是/否?