主题建模与浏览库
tom_lib的Python项目详细描述
tom(topic modeling)是一个python 3库,用于主题建模和 浏览,根据麻省理工学院的许可。它的目标是 从开始到结束,通过 发现潜在话题。为此,tom为 文本语料库的准备和矢量化。它还提供了一个常见的 两个主题模型的接口(即使用变量的lda gibbs抽样的推论与nmf 一种投影梯度法),并实现了三个最先进的 为建立语料库而估计最佳主题数的方法。 此外,tom构建了一个基于web的交互式浏览器 主题模型和相关语料库的研究非常容易。
功能
向量空间建模
- 基于词频的特征选择
- 权重
- tf
- tf idf
主题建模
- 潜在dirichlet分配
- 标准变分贝叶斯推理(潜在dirichlet 分配。Blei等人,2003年)
- 在线变分贝叶斯推理 迪里克利特分配。霍夫曼等人,2010年)
- 折叠吉布斯采样(寻找科学主题。格里菲斯 施蒂弗斯,2004年)
- 非负矩阵分解(nmf)
- 投影梯度交替最小二乘法 非负矩阵分解的投影梯度法。 林,2007年)
估计主题的最佳数目
- 稳定性分析(有多少主题?话题稳定性分析 模型。Greene等人,2014年)
- 谱分析(关于用 潜在dirichlet分配:一些观察。Arun等人,2010年)
- 基于一致性的分析(转基因和分子模式发现 使用矩阵分解。布鲁内特等人,2004年)
安装
我们建议您安装anaconda(https://www.continuum.io),它 将自动安装大多数必需的依赖项(即 熊猫,纽比,松鼠,松鼠学习,松鼠,烧瓶)。那么你应该 安装LDA模块(PIP安装LDA)。最后,克隆或下载 此repo并运行以下命令:
python setup.py install
或者直接从pypi安装:
pip install tom_lib
用法
我们提供了两个示例程序topic_model.py(它向您展示了如何 加载并准备一个语料库,估计最佳主题数,推断 主题模型,然后对其进行操作)和topic_model_browser.py (它向您展示了如何生成主题模型浏览器来浏览 帮助你开始使用汤姆。
加载并准备文本语料库
下面的代码片段演示如何加载法语语料库 使用带有Unigrams的TF IDF记录和矢量化它们。
corpus = Corpus(source_file_path='input/raw_corpus.csv', language='french', vectorization='tfidf', n_gram=1, max_relative_frequency=0.8, min_absolute_frequency=4) print('corpus size:', corpus.size) print('vocabulary size:', len(corpus.vocabulary)) print('Vector representation of document 0:\n', corpus.vector_for_document(0))
实例化主题模型并推断主题
可以实例化nmf或lda对象,然后推断主题。
NMF:
topic_model = NonNegativeMatrixFactorization(corpus) topic_model.infer_topics(num_topics=15)
lda(使用标准变分贝叶斯推理或gibbs 采样):
topic_model = LatentDirichletAllocation(corpus) topic_model.infer_topics(num_topics=15, algorithm='variational')
topic_model = LatentDirichletAllocation(corpus) topic_model.infer_topics(num_topics=15, algorithm='gibbs')
实例化主题模型并估计主题的最佳数目
在这里,我们实例化一个nmf对象,然后用三个 估计最佳主题数的度量。
topic_model = NonNegativeMatrixFactorization(corpus) viz = Visualization(topic_model) viz.plot_greene_metric(min_num_topics=5, max_num_topics=50, tao=10, step=1, top_n_words=10) viz.plot_arun_metric(min_num_topics=5, max_num_topics=50, iterations=10) viz.plot_brunet_metric(min_num_topics=5, max_num_topics=50, iterations=10)
保存/加载主题模型
为了允许重用以前学习过的主题模型,tom可以将它们保存在 磁盘,如下所示。
utils.save_topic_model(topic_model, 'output/NMF_15topics.tom') topic_model = utils.load_topic_model('output/NMF_15topics.tom')
打印有关主题模型的信息
这段代码摘录说明了如何操作主题模型,例如。 获取文档的主题分布或 主题。
print('\nTopics:') topic_model.print_topics(num_words=10) print('\nTopic distribution for document 0:', topic_model.topic_distribution_for_document(0)) print('\nMost likely topic for document 0:', topic_model.most_likely_topic_for_document(0)) print('\nFrequency of topics:', topic_model.topics_frequency()) print('\nTop 10 most relevant words for topic 2:', topic_model.top_words(2, 10))
主题模型浏览器:屏幕热度
主题云
主题详细信息文档详细信息