【问题标题】:In R tm package, build corpus FROM Document-Term-Matrix在 R tm 包中,从 Document-Term-Matrix 构建语料库
【发布时间】:2014-08-16 14:52:42
【问题描述】:

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

令 M 为文档集中的文档数。 设 V 是该文档集的词汇表中的术语数。那么文档术语矩阵是一个 M*V 矩阵。

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

从 dtm 和词汇向量,我想构造一个“语料库”对象。这是因为我想阻止我的文档集。我手动构建了我的 dtm 和 vocab - 即从来没有代表我的数据集的 tm“语料库”对象,所以我不能使用该函数,

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

我一直在尝试构建一种解决方法,在其中我提取词汇表并只保留唯一的单词,但是尝试保持 dtm 和词汇向量之间的对应关系会变得有些复杂。

理想情况下,最终结果是我的词汇向量是词干化的,并且只包含唯一条目,并且 dtm 索引对应于词干化词向量向量。如果您能想到其他方法来做到这一点,我也将不胜感激。

如果我可以简单地从我的 dtm 和词汇向量构建一个 tm“语料库”,对语料库进行词干化,然后转换回 dtm 和词汇向量(我已经知道如何进行这些转换),那么我的麻烦就会得到解决。

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

【问题讨论】:

  • 您没有提供minimal, reproducible example,因此很难提供具体帮助。理想情况下,将代表您的数据的样本对象放在一起,我们会测试不同的解决方案来转换它。鉴于词干提取函数应该适用于任何字符值向量,您似乎不太可能不得不返回语料库。
  • 谢谢@MrFlick。适当地指出,我应该始终提供一个最小的、可重现的示例。我使用词干向量的解决方法很混乱,但我会发布一个 MRE 并尽快更新。

标签: r text-mining tm corpus lda


【解决方案1】:

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

## 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)

【讨论】:

  • 谢谢,泰勒。看起来这会起作用。我会仔细检查我的项目并回复你。此外,我现在看到我应该始终提供一个最小的、可重现的示例。如果我需要更多帮助,将来会这样做并更新这篇文章。
  • 做到了。感谢您的帮助并通知我对 SO 的期望。
  • 使用这种方法,元数据会丢失。我们怎样才能保证它们的安全?
  • @CeylanB。您是如何将元数据存储在 DocumentTermMatrix 中的?据了解,它不存储元数据,因此没有什么可以保证安全的。这个问题是关于从 DocumentTermMatrix 到语料库的。 DocumentTermMatrix 是一个简单的三元组矩阵,据我所知,它不存储元数据。
  • @Tyler Rinker 你是对的,但我的意思是,将语料库转换为文档术语矩阵,然后再转换语料库..
猜你喜欢
  • 2014-08-05
  • 2023-04-08
  • 2018-03-31
  • 2018-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-30
相关资源
最近更新 更多