【问题标题】:how to add words into documents in corpus?如何将单词添加到语料库中的文档中?
【发布时间】:2014-05-18 06:09:51
【问题描述】:

我正在使用 tm 包在我的语料库上运行 LDA。我有一个包含 10,000 个文档的语料库。

rtcorpus.4star <- Corpus(DataframeSource(rt.subset.4star)) ##creates the corpus
rtcorpus.4star[[1]] ##accesses the first document

我正在尝试编写一段代码,在某些单词之后添加单词“specialword”。所以本质上:对于我选择的单词向量(good、nice、happy、fun、love),我希望代码循环遍历每个文档,并在这些单词之后添加单词“specialword”。

例如,给定这个文档:

I had a really fun time

我希望结果是这样的:

I had a really fun specialword time

问题是我不确定如何执行此操作,因为我不知道如何让代码在语料库中读取。我知道我应该做一个 for 循环(或者可能不做),但我不确定如何遍历每个文档中的每个单词以及语料库中的每个文档。我还想知道我是否可以使用类似于 tm_map 中的“翻译”功能的东西。


编辑::

做了一些尝试。此代码将“测试”返回为 NA。你知道为什么吗?

special <- c("poor", "lose")
for (i in special){
test <- gsub(special[i], paste(special[i], "specialword"), rtcorpus.1star[[1]])
}

编辑:想通了!!谢谢

special <- c("poor", "lose")
for (i in 1:length(special)){
rtcorpus.codewordtest <-gsub(special[i], paste(special[i], "specialword"), rtcorpus.codewordtest)
}

【问题讨论】:

  • 你指的是 LDA,就像在潜在的 Dirichlet 分配中一样?这是一种“词袋”方法,因此它不知道也不关心文档中的词序。每个文档中的所有单词都被视为杂乱无章,而杂乱无章是分析的基本单位。只有在将文档分成块并使用这些块生成 lda 模型时,插入这样的单词才会有所作为。

标签: r algorithm data-mining topic-modeling


【解决方案1】:

如果你尝试这样的事情会怎样?

corpus <- read("filename.txt")
special <- c("fun","nice","love")
for (w in special) {
    gsub(w, w + " specialword", corpus)}

这将加载文件,遍历您的单词列表,并将单词替换为单词本身,后跟“specialword”(注意空格)。

编辑:我刚刚看到您有多个文件。要遍历语料库中的文件,您可以这样做:

 corpus <- "filepath/desktop/wherever/folderwithcorpus/"
 special <- c("fun","nice","love")

 for (file in corpus){
      data <- read(file)
      for (w in special){
           gsub(w, w + " specialword", corpus)}
      }

【讨论】:

  • 感谢您的建议。我试过了,得到了这个错误: w + "specialword" 中的错误:二进制运算符的非数字参数
  • 我想我混淆了我的 python 和 R 语法。应该有一种方法可以连接它们,但您可能需要正则表达式。
  • 嗯,它给了我同样的错误。你知道这样的“翻译”功能是否有用吗?我在这里读到它:stackoverflow.com/questions/20580002/…
  • 我从未使用过翻译,但似乎值得一试。
  • 介意查看我在旧帖子中的编辑吗?它正在返回 NA。似乎无法弄清楚为什么。谢谢!
【解决方案2】:

也许这不是 tm 包的功能,但是您可以为某些单词的向量执行一个简单的 paste() 函数,然后立即添加“specialword”。或者如果您的文档可以在列表中(我认为),则 stringr 包中的 str_replace() 会执行此操作。

然后创建语料库。

【讨论】:

  • 我的问题是我必须先把它变成语料库,因为我需要词干。这样我就不必替换“快乐”或“快乐”——这一切都源于“快乐”。
猜你喜欢
  • 1970-01-01
  • 2022-01-21
  • 1970-01-01
  • 2020-12-21
  • 1970-01-01
  • 1970-01-01
  • 2013-05-10
  • 2023-04-04
  • 2020-10-28
相关资源
最近更新 更多