0

我正在使用 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)
}
4

2 回答 2

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)}
      }
于 2014-04-05T23:30:12.570 回答
0

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

然后创建语料库。

于 2014-04-05T23:28:22.980 回答