带引导潜在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第三方库


热门话题
java我的计时器(scheduleAtFixedRate)不循环   如何在Java中实现过滤迭代器?   java如何在不从本地xml、csv文件访问API的情况下将变量发布到php站点?   SuiteClasses语法的Java JUnit类数组   java从URLConnection读取二进制文件   java在Android Studio中发送加密文本时失败   Android:最近最少使用(LRU)算法在java中的实现?   java Selenium WebDriver无法打开Firefox配置文件   java如何处理带有嵌套抽象类的GSON?   java类型通知的方法SetLateStevenInfo(GcmMessageHandler,String,String,PendingContent)未定义   java Apple或Mac Mail会打开所有附件图像,即使它们已嵌入   java如何解析下面的xml代码?   java如何创建特定于API级别的UI(针对平板电脑和Android旧版本的不同UI,针对同一应用)?   servlet的通配符路径?