主题建模,但已知主题?

问题描述 投票:4回答:2

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

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

  • 一组文件(来自一个生物体的DNA片段,每个片段是一个文件) 在此方案中,文档只能有一个主题
  • 一组主题(来自其他生物的DNA片段)
  • 在这种情况下的单词是基数的三元组(现在)

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

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

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

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

topic-modeling
2个回答
0
投票

为什么不简单地使用有监督的主题模型。 Jonathan Chang在R中的lda软件包具有slda功能,相当不错。还有一个非常有用的演示。只需安装软件包并运行demo(slda)即可。


0
投票

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

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

LDAesk方法:指导LDA

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

非LDAesk方法:~KNN

我最终做的是使用单词嵌入模型(word2vec优于我的案例的替代方案),根据构成主题/子主题的单词为每个主题创建“主题向量”。例如:我有一个类别生物化学与子类别分子生物学。最基本的主题载体是生物化学,分子和生物学的word2vec载体,它们全部平均在一起。对于我想要确定主题的每个文档,我将其转换为“文档向量”(与我如何创建主题向量相同的维度和嵌入模型 - 我发现只是平均文档中的所有word2vec向量已经是经过一些预处理,如删除停用词后,到目前为止最好的解决方案)。然后我只是找到输入文档向量的k最接近的主题向量。我应该注意到,有一些能力通过改变构成主题向量的单词来调整它。可能识别其他关键字的一种方法是使用我之前提到的guidedLDA模型。

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

© www.soinside.com 2019 - 2024. All rights reserved.