我正在使用tm包在我的语料库上运行LDA。我有一个包含10,000个文档的语料库。
rtcorpus.4star <- Corpus(DataframeSource(rt.subset.4star)) ##creates the corpus
rtcorpus.4star[[1]] ##accesses the first document
我正在尝试编写一段代码,在某些单词后添加“specialword”一词。基本上:对于我选择的单词(好的,好的,快乐的,有趣的,爱的)的向量,我希望代码循环遍历每个文档,并在任何这些单词之后添加单词“specialword”。
例如,鉴于此文件:
I had a really fun time
我希望结果如下:
I had a really fun specialword time
问题是我不知道该怎么做,因为我不知道如何让代码在语料库中读取。我知道我应该做一个for循环(或者可能不是),但我不确定如何遍历每个文档中的每个单词,以及语料库中的每个文档。我也想知道我是否可以使用在tm_map中工作的“翻译”功能。
编辑::
做了一些尝试。该代码将“test”返回为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)
}
答案 0 :(得分:1)
如果你尝试过类似的东西怎么办?
corpus <- read("filename.txt")
special <- c("fun","nice","love")
for (w in special) {
gsub(w, w + " specialword", corpus)}
这将加载文件,遍历您的单词列表,并将单词替换为单词本身后跟&#34; specialword&#34; (注意空格)。
编辑:我刚看到你有多个文件。要遍历语料库中的文件,您可以执行以下操作:
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)}
}
答案 1 :(得分:0)
也许这不是一个tm包功能,但你可以为你的某些单词的向量做一个简单的paste()函数,然后立即添加“specialword”。如果您的文档可以在列表中(我认为),或者stringr包中的str_replace()会执行此操作。
然后创建语料库。