我正在进行潜在狄利克雷分析以进行一些研究,并不断遇到问题。大多数lda软件要求文档采用doclines格式,即CSV或其他分隔文件,其中每一行代表文档的整体。然而,Blei的lda-c和动态主题模型软件要求数据的格式为:[M] [term_1]:[count] [term_2]:[count] ... [term_N]:[count]
,其中[M]
是文档中唯一术语的数量,与每个术语相关的[计数]是该术语出现的次数在文档中。注意,[term_1]
是对学期它不是一根绳子。
有人知道一个实用程序可以让我快速转换为这种格式吗?非常感谢。
如果使用R
,lda
包包含一个函数lexicalize
,该函数将原始文本转换为lda
包所需的lda-c格式。
example <- c("I am the very model of a modern major general",
"I have a major headache")
corpus <- lexicalize(example, lower=TRUE)
类似地,topicmodels
包有一个函数dtm2ldaformat
,它将把文档术语矩阵转换为lda格式。您可以使用tm
软件包将纯文本文档转换为文档术语矩阵,也可以在R
中使用。
因此,有了这些现有的功能,在将文本输入R
进行主题建模方面有很大的灵活性。
马萨诸塞大学阿默斯特分校的Mallet软件包是另一种选择。
- http://mallet.cs.umass.edu/
- http://mallet.cs.umass.edu/topics.php
这里有一个关于如何使用Mallet的优秀分步演示:
- http://programminghistorian.org/lessons/topic-modeling-and-mallet
您可以将mallet与普通文本文件一起用作输入源。
Gensim提供了Blei语料库格式的实现。请参见此处。您可以在Python中基于CSV文件编写一个快速语料库,然后使用gensim将其保存在lda-c中。这不应该太难。
对于Python,有一个可用的函数(在提出问题时可能不可用)。
lda.utils.dtm2ldac
该文件是https://pythonhosted.org/lda/api.html#module-lda.utils