主题建模与浏览库

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 HttpServletResponse在保存时提示输入文件名   基于Java中的XML值重新创建XML   Java中递归调用的一个堆栈占用多少内存?   java数字到二进制到零计数器   java Primefaces选项卡视图:在计数后设置活动索引   xml在Java中可以将XSD转换为XPath吗?   在递归循环中检测JDBC连接的java插件/工具   spring mvc中的java处理错误   java向spring安全认证添加子域   在安卓中设置时,java日期不正确   java setColorFilter适用于所有按钮   java Android:Bitmap-to-Byte数组和back:SkImageDecoder::Factory返回null   java如何使用lambda实现ComponentScan的自定义过滤器?   java iOS推送通知不工作   java在异步servlet中用新请求替换旧请求