【问题标题】:How to use Topic Model (LDA) output to match and retrieve new, same-topic documents如何使用主题模型 (LDA) 输出来匹配和检索新的、相同主题的文档
【发布时间】:2017-03-07 22:11:19
【问题描述】:

我在语料库上使用 LDA 模型来学习其中涵盖的主题。我正在使用 gensim 包(例如,gensim.models.ldamodel.LdaModel);如有必要,可以轻松使用其他版本的 LDA。

我的问题是使用参数化模型和/或主题词或主题 ID 来查找和检索包含该主题的新文档的最有效方法是什么?

具体来说,我想抓取一个媒体 API 来查找与我的原始语料库中包含的主题相关的新文章(样本外文档)。因为我正在做这个“盲搜索”,所以在每个新文档上运行 LDA 可能太麻烦了;大多数新文档将不包含该主题。

当然可以简单地检索包含 LDA 学习主题的最常用词中的一到 n 个的新文档;然后将 LDA 应用于返回的文档以进一步增强可信度。

我想知道是否有更复杂的方法可以更好地确定新的样本外文章实际上包含相同的主题;而不是巧合地包含一两个主题词。

正在研究主题平铺算法,但不确定它们是否适用于此。

【问题讨论】:

    标签: text lda topic-modeling


    【解决方案1】:

    我认为如果不转换主题空间中的所有内容,您就无法在主题空间中进行搜索。有人可能会争论创建在主题空间中返回相似性而不在主题空间中进行转换的函数(例如使用神经网络),但我认为这超出了问题的范围。

    现在,由于上述内容并没有真正的帮助,有很多方法可以比简单的关键字更好地生成候选者,我会写几个。

    将主题用作文档

    主题只是单词上的简单分布,因此您可以将它们用作文档并计算它们与测试文档之间的余弦相似度,以估计文档中主题的概率。

    使用示例文档

    您可以使用每个主题的训练集中的k 文档作为示例,并计算这些文档与测试文档的相似度,以估计该主题在文档中的概率。

    使用相似度散列

    通过上述两种技术,您还可以使用locality sensitive hashing,例如simhash,更有效地从大型语料库中生成候选对象。

    为了让我的最后一点更清楚,我将使用以下管道(在伪 python 中)

    # t is a topic
    ht = simhash(t) # few bits here
    candidates = []
    final_texts = []
    for text in new_texts:
        if simhash(text) == ht:
            candidates.append(text)
    for text in candidates:
        topic_distribution = lda.infer(text)
        if argmax(topic_distribution) == t:
            final_textx.append(text)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-07
      • 2014-11-06
      • 2012-03-25
      • 2015-11-15
      • 2014-07-16
      • 2019-09-25
      • 2012-05-16
      • 2017-03-09
      相关资源
      最近更新 更多