在R tm包中,构建语料库FROM Document-Term-Matrix

时间:2014-06-25 21:27:54

标签: r text-mining tm corpus lda

使用tm包从语料库构建文档术语矩阵非常简单。 我想从文档术语矩阵构建语料库。

设M是文档集中的文档数。 设V是该文档集的词汇表中的术语数。然后,文档 - 术语 - 矩阵是M * V矩阵。

我还有一个长度为V的词汇量向量。词汇量向量中是由文档 - 术语 - 矩阵中的索引表示的词。

从dtm和词汇矢量中,我想建立一个"语料库"宾语。这是因为我想要阻止我的文档集。我手动建立了我的dtm和词汇 - 即从来没有一个"语料库"表示我的数据集的对象,所以我不能使用该函数,

tm_map(corpus, stemDocument, language="english")

我一直试图建立一个解决方法,在这里我会阻止词汇,只保留独特的单词,但是在尝试保持dtm和词汇矢量之间的对应关系时会有些复杂。

理想情况下,最终结果是我的词汇矢量被阻止并且仅包含唯一条目,并且dtm索引对应于词干词汇矢量。如果你能想到其他一些方法,我也会很感激。

如果我能够简单地建立一个语料库,那么我的麻烦就会得到解决。从我的dtm和词汇矢量,干出语料库,然后转换回dtm和词汇矢量(我已经知道如何进行这些转换)。

如果我能进一步澄清问题,请告诉我。

1 个答案:

答案 0 :(得分:5)

tm包中提供我自己的minimal reproducible example(作为新用户,您可能不知道这是您的责任)的方法:

## Minimal Reproducible Example
library(tm)
data("crude")
dtm <- DocumentTermMatrix(crude,
    control = list(weighting =
    function(x)
        weightTfIdf(x, normalize = FALSE),
        stopwords = TRUE))

## Convert tdm to a list of text
dtm2list <- apply(dtm, 1, function(x) {
    paste(rep(names(x), x), collapse=" ")
})

## convert to a Corpus
myCorp <- VCorpus(VectorSource(dtm2list))
inspect(myCorp)

## Stemming
myCorp <- tm_map(myCorp, stemDocument)
inspect(myCorp)