gpt4 book ai didi

topic-modeling - 主题建模,但具有已知主题?

转载 作者:行者123 更新时间:2023-12-04 04:27:04 24 4
gpt4 key购买 nike

好的,所以通常主题模型(例如 LDA、pLSI 等)用于以无监督的方式推断可能出现在一组文档中的主题。我想知道是否有人对如何将我的问题硬塞进 LDA 框架有任何想法,因为有非常好的工具可用于解决 LDA 问题。

为了彻底起见,我将以下信息作为输入:

  • 一组文档(来自一个生物体的 DNA 片段,其中每个片段都是一个文档)
  • 在这种情况下,一个文档只能有一个主题
  • 一组主题(来自其他生物体的 DNA 片段)
  • 在这种情况下,单词是碱基的三元组(目前)

  • 我要回答的问题是:对于当前文档,它的主题是什么?换句话说,对于给定的 DNA 片段,它最有可能来自哪个其他生物体(同一物种)?自从发生片段交换以来,可能存在突变等,因此两个片段不会相同。

    这与经典LDA模型的主要区别在于我提前知道主题。

    我最初的想法是采用 pLSA 模型( http://en.wikipedia.org/wiki/PLSA )并明确设置主题节点,然后执行标准的 EM 学习(如果只有一个像样的库可以处理带有潜在变量的贝叶斯参数学习......),然后通过使用任何算法进行推理(这应该无关紧要,因为无论如何该模型都是多叉树)。

    编辑:我想我已经解决了它,对于任何可能偶然发现的人。我发现您可以使用带标签的 LDA 并将每个标签分配给每个文档。由于每个标签都与一个主题一一对应,因此您实际上是在对算法说:对于每个文档,从给定的主题集(标签集)中选择主题,而不是自己编造。

    最佳答案

    我有一个类似的问题,只是想我会为了完整起见添加我要使用的解决方案。

  • 我还有一组文件(从 1 到 200
    页),虽然我的是普通的英文文本数据。
  • 一组已知主题(我的包括子主题,但我不会在这里讨论)。与前面的示例不同,我可能需要多个主题标签。
  • 单词(标准英语,虽然命名实体和首字母缩略词包含在我的语料库中)

  • LDAesk 方法:引导式 LDA

    引导式 LDA 可让您为 LDA 类别播种单词。如果您的最终决定有 n 个主题,您只需使用 n 个种子主题创建引导式 LDA 算法,每个主题都包含构成其主题名称的关键字。例如:我想将已知的主题归为“生物化学”和“物理学”。然后我用 d = {0: ['biochemsitry'], 1: ['physics']} 为我的引导式LDA 设置种子。如果您可以识别它们,您可以合并其他引导词,但是我使用的引导LDA算法(python版本)可以相对容易地识别给定主题的前n个词。您可以仅使用基本的种子词运行一次guidedLDA,然后使用前n 个词输出来考虑将更多词添加到主题中。这些前 n 个词也可能对我提到的另一种方法有帮助。

    非 LDAesk 方法:~KNN

    我最终做的是使用词嵌入模型(word2vec 在我的情况下优于替代方案)根据构成主题/副主题的词为每个主题创建“主题向量”。例如:我有一个类别生物化学和一个子类别分子生物学。最基本的主题向量只是生物化学、分子和生物学的 word2vec 向量,它们全部平均在一起。
    对于我想为其确定主题的每个文档,我将其转换为“文档向量”(与我制作主题向量的维度和嵌入模型相同 - 我发现只是对文档中的所有 word2vec 向量求平均值是到目前为止,经过一些预处理(例如删除停用词)后,我的最佳解决方案)。然后我只找到与输入文档向量最接近的 k 个主题向量。
    我应该注意到,通过更改构成主题向量的词,可以手动调整它。一种潜在地识别更多关键字的方法是使用我之前提到的引导式LDA模型。

    我会注意到,当我在带有标记数据的不同语料库上测试这两个解决方案时(除了评估准确性等,我没有使用这些数据),这种 ~KNN 方法证明比 GuidedLDA 方法更好。

    关于topic-modeling - 主题建模,但具有已知主题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16782114/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com