带引导潜在dirichlet分配的主题建模

guidedlda的Python项目详细描述


GuidedLDA:具有潜在dirichlet分配的指导主题建模图片::https://readthedocs.org/projects/guidedlda/badge/?版本=最新
:目标:http://guidedlda.readthedocs.io/en/latest/?徽章=最新
:alt:文档状态

…图片::https://badge.fury.io/py/guidedlda.svg
:目标:https://badge.fury.io/py/guidedlda
:alt:package version



``guidedlda``或``seedlda``使用折叠gibbs采样实现潜在的dirichlet分配(lda)。`` guidedlda``可以通过为每个主题设置一些种子词来指导。这将使主题向那个方向集中。

您可以在"文档"中阅读有关guidedlda的更多信息<;https://guidedlda.readthedocs.io>;` `.


installation
----

::


如果pip install不起作用,请尝试t下一步:




https://github.com/vi3k6i5/guidedlda
cd guidedlda
sh build_dist.sh
python setup.py sdist
pip install-e.

如果上述步骤也不起作用,请提出"问题<;https://github.com/vi3k6i5/guidedlda/issues>;"`_关于工作站的操作系统版本、python版本、体系结构等的详细信息,我会尽快修复它。

Getting Started
----

``guidedlda.guidedlda``实现潜在的dirichlet分配(lda)。该接口遵循scikit-learn中的

"示例代码"lt;https://github.com/vi3k6i5/guidedlda/blob/master/examples/example_seeded_lda.py>;` ` `.


下面的输入"x"是一个文档项矩阵(可以接受稀疏矩阵)。代码块::python

>;>import numpy as np
>;>import guidedlda

>;>x=guidedlda.datasets.load戋u data(guidedlda.datasets.nyt)
>;>vocab=guidedlda.datasets.load戋vocab(guidedlda.datasets.nyt)
>;>word2id=dict((v,id x)表示idx,v表示枚举(vocab))

>>;>;x.shape
(84473012)


>;>;x.sum()
1221626
>;>;无种子的正常lda
>;>;model=guidedlda.guidedlda(n_topics=5,n_iter=100,随机状态=7,refresh=20)
>;>model.fit(x)
info:guidelda:n_documents:8447
info:guidelda:vocab_size:3012
info:guidelda:n_words:1221626
info:guidelda:n_topics:5
info:guidelda:n廑iter:100
警告:guidelda:document term中的所有零列找到矩阵
信息:guidelda:<;0>;对数似然性:-11489265
信息:guidelda:<;20>;对数似然性:-9844667
信息:guidelda:<;40>;对数似然性:-9694223
信息:guidelda:<;60>;对数似然性:-9642506
信息:guidelda:<;80>;对数似然性:-9617962
信息:指南dLDA:<;99>;日志可能性:-9604031

>;>;主题词=模型。主题词
>;>;n顶部词=8
>;>;对于i,枚举中的主题词(主题词):
>;>;主题词=np.array(vocab)[np.argsort(topic_dist)][:—(n_top_words+1):-1]
>;>print('topic{}:{}。format(i,''.join(topic_words))
topic 0:公司百分比市场商业计划支付价格上涨
topic 1:游戏团队赢球季第二开始
topic 2:生活孩子写男人学校的女人n父亲家庭
主题3:开放式小房子音乐转为大型播放
主题4:州政府官方政治状态发布领导案例

,"秒","胜利"],
>>gt;['percent'、'company'、'market'、'price'、'sell'、'business'、'stock'、'share',
>>gt;['music'、'write'、'art'、'book'、'world'、'film',
>;['political'、'government'、'leader'、'officer'","州","国家","美国","案件","法律","警察","指控","警官","杀人","逮捕","律师"]]

>;>model=guidedlda.guidedlda(n_topics=5,n_iter=100,random_state=7,refresh=20)

>;>;>在枚举(seed_topic_list)中:
>;>st中的单词:
>;>seed_topics[word2id[word]]=t_id

>;>model.fit(x,seed_topics=seed_topics,seed_confidence=0.15)
info:guidelda:n_documents:8447
info:guidelda:vocab_size:3012
信息:guidelda:n_单词:1221626
信息:guidelda:n_主题:5
信息:guidelda:n_iter:100
警告:guidelda:在文档术语矩阵中找到所有零列
信息:guidelda:<;0>;日志可能性:-11486362
信息:guidelda:<;20>;日志可能性:-9767277
信息:guidelda:<;40>;日志可能性:-9663718
信息:guidelda:<;60>;日志可能性:-9624150
信息:guidelda:<;80>;日志可能性:-9601684
信息:guidelda:<;99>;日志可能性:-9587803



>;>;topic庘word=model.topic庘word庘
>;>;对于i,topic庘dist i n enumerate(topic庘word):
>;>;topic庘words=np.array(vocab)[np.argsort(topic庘dist)][:-(n庘top庘words+1):-1]
>;>;打印('topic{}:{})。格式(i,,.join(topic
主题0:游戏玩家团队赢得赛季玩家第二分开始胜利
主题1:公司百分比市场价格业务销售高管薪酬计划销售
主题2:游戏人生男性音乐场所写作转女性旧书
主题3:官方政府国家政治领导人Sue案例成员国
主题4:学校儿童城市计划问题学生国家学习家庭组

文档主题分布应重新检索为:``doc_topic=model.transform(x)`.

代码块::python

>;>;doc_topic=model.transform(x)
>;>;对于范围(9)内的i:print("top topic:{}document:{}"。format(doc_topic[i].argmax(),
',join(np.array(vocab)[list(reVersed(x[i,:].argsort())[0:5]))
热门话题:4文档:植物,增长,食物,日益增长,动物
热门话题:3文档:解释,生活,国家,公民,国家
热门话题:2文档:事物,解决,问题,机器,携带
热门话题:2文档:公司,权威,Opera,Artic,Director
热门话题:3个文档:合作伙伴、律师、律师、客户、起诉
热门话题:2个文档:滚动、放置、即将、治疗、评分
热门话题:3个文档:城市、药品、计划、佣金、报告
热门话题:1个文档:公司、漫画、系列、案例执行
主题:3文档:子、场景、指控、情节、攻击


保存模型以供制作或以后运行:

…代码块::python

>;>;从6。移动import cpickle as pickle
>;>;取消注释下一步,如果您想减轻模型对象的重量,此步骤将删除模型中的一些矩阵。
>;>;>;您将能够使用模型。转换(x)与前面的方法相同。
>;>;>;您将无法使用model.fit_transform(x_new)
>;>;>;model.purge_extra_matrix()
>;>;使用open('guidelda_model.pickle','wb')作为文件句柄:
>;pickle.dump(model,file_handle)
>;>加载模型预测
>;>;使用open('guidedlda_model.pickle','rb')作为文件句柄:
>;>;model=pickle.load(file_handle)
>;>;doc_topic=model.transform(x)



要求
----


-numpy
-pbr

caveat
----

``guidedlda``用于指导lda。通常情况下,我们从lda模型中得到的主题并不能让我们满意。GuidedLDA可以使主题朝我们希望的方向移动。我们已经为50万份文件进行了生产训练(我们有一台大机器)。我们已经对数百万个主题进行了预测,并手动检查了数千个主题(我们对结果感到满意)。

HCAI完全是用C语言编写的,MaleTyi是用Java编写的。与"guidedlda"不同,hca一次可以使用多个处理器。mallet和hca都实现了比标准潜在dirichlet分配更健壮的主题模型。

(2003)``和`普里查德
等人。(2000)使用折叠gibbs抽样的推论在
"griffiths and steyvers(2004)"中描述。《Jagadeeesh Jagarlamudi、Hal Daume III和Raghavendra Udupa(2012)》中描述了指导性LDA,文档:http://guided lda.readthedocs.org
-源代码:https://github.com/vi3k6i5/guidedlda/
-问题跟踪:https://github.com/vi3k6i5/guidedlda/issues

t;https://pypi.python.org/pypi/gensim>;`(使用在线变分推理)

credits
----
我要感谢'lda project<;https://github.com/lda project/lda>;``的创建者。我用那个lda项目的代码作为基础,在上面实现guidedlda。

感谢:`allen riddell<;https://twitter.com/ariddell>;``和`tim hopper<;https://twitter.com/tdhopper>;`。:)

许可证
----

``guidedlda``在Mozilla公共许可证的2.0版下获得许可。

…_ python:http://www.python.org/
。_ scikit-learn:http://scikit learn.org
。_ HCA:http://www.mloss.org/software/view/527/
。_木槌:http://mallet.cs.umass.edu/
…_纽比:http://www.numpy.org/
…_ PBR:https://pypi.python.org/pypi/pbr
。_ cython:http://cython.org
。_布莱等人。(2003年):http://jmlr.org/papers/v3/blei03a.html
。_ Pritchard等人(2000年):http://www.genetics.org/content/155/2/945.full
。_格里菲斯和斯蒂弗斯(2004):http://www.pnas.org/content/101/suppl_1/5228.摘要
。_ Jagadeesh Jagarlamudi、Hal Daume III和Raghavendra Udupa(2012年):http://www.umiacs.umd.edu/~jags/pdfs/guidedlda.pdf

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

推荐PyPI第三方库


热门话题
eclipse java btc交易应用程序编译时错误(HTTP组件)   java客户端状态保存,我能看到发送到客户端的状态数据吗?   spring中的java内部字段注入工作以及为什么不建议使用它   在iReports、Jasper和JavaBean数据源中使用表功能   如何在Java树中查找节点   用于日志分析的java模式匹配   java如何在Spring中处理json列表?   java SQL注入和可能的攻击   java如果我将实体转换为DTO,那么转换代码应该存在于何处?   java素数方法不起作用   通过NFC启动java Android Q隐私更改活动   java在Spring引导时为Spring AMQP和RabbitMQ动态设置主机   swing Java Paste From Clipboard不适用于Linux上的所有应用程序   java从不同对象访问对象的内部类   java Ektorp CouchDB测试连接   十进制前8位、十进制后2位和整个字符串的java正则表达式不应计算为零   在Java中以长格式存储两个整数之和   ConfigurationProperties中嵌套属性的java验证