主题建模与浏览库

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')

主题模型浏览器:屏幕热度

主题云

image0主题详细信息image1文档详细信息image2

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

推荐PyPI第三方库


热门话题
java Cassandra复制因子大于节点数   java J2EE JTA事务回滚不适用于OSE Glassfish 4.0(Build 89)   java spring安全预认证用户登录   org的java类文件。反应流。从RxJava编译示例时未找到Publisher?   java在使用dataFormat作为POJO通过Camel调用Web服务时无法设置SOAP标头   Javafx类的java静态实例   java如何防止一个部件在关闭时覆盖另一个部件的位置   sql server无法从我的java代码连接到数据库   java在JList(Swing)中显示带有的ArrayList   从Java中的CXF服务获取WSAddressing数据   使用资产文件夹进行java简单json解析(本地)   java LDAPException未绑定的无效凭据   JavaJSFspring部署到weblogic   JAVA中字符数组中的特定元素排列?   如果脚本位于不同的目录中,则ant不会使用exec标记运行Javashell脚本