在r中的整个循环中附加txt文件 - 然后使用tm包将该txt文件读入语料库

时间:2017-08-08 11:09:20

标签: r text-mining

问题: 我有一个从网页下载句子的循环 - 并且每次迭代都会将它们添加到不断增长的角色向量中。

从概念上讲,输出如下:

myVec

[1] "bla"                                                                                                                                                                                                         
[2] "blablabla"                                                                                        
[3] "blabla"                                                                                                                                                                                                                                 
[4] " blablablablabla"

等...

每个数字代表我下载的一个句子。对于每次迭代,循环将向量附加更多句子。

但是我没有把结果放到矢量中 - 我想将它保存到不断增长的txt文件中。原因是我需要下载的数据量很大。所以我需要让循环运行一段时间(1000次迭代),然后休息 - 然后在第二天再次运行它。

我希望txt文件有一些结构 - 这样它仍然可以很容易地按句子分割。这是因为我后来想创建一个DTM,每个句子都作为一个单独的文档。

所以我需要

1:一种写入文件的方法,可以在整个循环中附加新句子。

2:使用tm包读取该文件的方法,以便稍后我可以根据我下载的句子创建DTM。

我尝试了什么:

我最接近我想要的是使用write.table()函数。

write.table(MyVec, file = "output.txt",row.names=FALSE, col.names = FALSE, append= TRUE)

这似乎给了我一个文本,其中句子用引号分隔: “喇嘛” “blablabla” “布拉布拉” 等

但我不知道如何利用tm将其读入语料库时使用它 - 以便稍后根据句子创建DTM。也许有更好的方法?

我也尝试过write()函数:

write(MyVec, file="output.txt",append=TRUE)

这给了我一个不断增长的txt文件,但它似乎没有将句子分开。我不知道如何将其读入语料库并根据句子创建DTM。

我考虑过writeLines() - 但它似乎没有附加选项 - 而且无论如何:我不想在行中打破文本。我只想分开句子。

1 个答案:

答案 0 :(得分:0)

一种方法是将您的句子列表存储(或加载)为数据框,并使用tm()将其解析为矢量源。

library(tm)

Sentences <- c("First Sentence BLA", "Second Sentence BLA BLA", "Nth Sentence [...] Bla^n")
SentencesDF <- as.data.frame(Sentences)
Corpus <- VectorSource(SentencesDF)

在前面的例子中,你不需要将“Sentence”向量写入txt或cvs来获得语料库。如果由于其他原因仍需要这样做,只需运行:

write.csv(SentencesDF, file = "NameofFile.csv")