直到最近(1个月前),下面显示的代码允许我将存储在本地文件夹中的一系列.txt文档导入到R中,以创建语料库,对其进行预处理,最后将其转换为文档术语矩阵。我遇到的问题是没有导入文档名称,而是将每个文档列为'字符(0)'。
我的目标之一是在语料库上进行主题建模,因此我必须将文档名称与模型生成的主题相关联。
有没有人对改变了什么有任何建议?或者我如何解决这个问题?
library("tm")
library("SnowballC")
setwd("C:/Users/Documents/Dataset/")
corpus <-Corpus(DirSource("blog"))
#pre_processing
myStopwords <- c(stopwords("english"))
your_corpus <- tm_map(corpus, tolower)
your_corpus <- tm_map(your_corpus, removeNumbers)
your_corpus <- tm_map(your_corpus, removeWords, myStopwords)
your_corpus <- tm_map(your_corpus, stripWhitespace)
your_corpus <- tm_map(your_corpus, removePunctuation)
your_corpus <- tm_map(your_corpus, stemDocument)
your_corpus <- tm_map(your_corpus, PlainTextDocument)
#creating a doucment term matrix
myDtm <- DocumentTermMatrix(your_corpus, control=list(wordLengths=c(3,Inf)))
dim(myDtm)
inspect(myDtm)
答案 0 :(得分:2)
这是一个用于识别/纠正文件名丢失的调试会话。 tolower行已修改,明文行已注释掉,因为这些行删除了文件信息。此外,如果您检查ds $ reader,您可以看到基准读取器创建纯文本文档。
library("tm")
library("SnowballC")
# corpus <-Corpus(DirSource("blog"))
sf<-system.file("texts", "txt", package = "tm")
ds <-DirSource(sf)
your_corpus <-Corpus(ds)
# Check status with the following line
meta(your_corpus[[1]])
#pre_processing
myStopwords <- c(stopwords("english"))
# your_corpus <- tm_map(your_corpus, tolower)
your_corpus <- tm_map(your_corpus, content_transformer(tolower))
meta(your_corpus[[1]])
your_corpus <- tm_map(your_corpus, removeNumbers)
meta(your_corpus[[1]])
your_corpus <- tm_map(your_corpus, removeWords, myStopwords)
meta(your_corpus[[1]])
your_corpus <- tm_map(your_corpus, stripWhitespace)
meta(your_corpus[[1]])
your_corpus <- tm_map(your_corpus, removePunctuation)
meta(your_corpus[[1]])
your_corpus <- tm_map(your_corpus, stemDocument)
meta(your_corpus[[1]])
#your_corpus <- tm_map(your_corpus, PlainTextDocument)
#meta(your_corpus[[1]])
#creating a doucment term matrix
myDtm <- DocumentTermMatrix(your_corpus, control=list(wordLengths=c(3,Inf)))
dim(myDtm)
inspect(myDtm)
答案 1 :(得分:0)
这是一种使用qdap
的方法,我在其中创建一个函数来读取文件目录并将其转换为data.frame
:
library(qdap)
sf <- system.file("texts", "txt", package = "tm")
read_in <- function(sf) {
list2df(setNames(lapply(file.path(sf, dir(sf)), function(x) {
clean(unbag(readLines(x)))}), dir(sf)), "text", "source")[, 2:1]
}
mydtm <- with(read_in(sf), as.dtm(text, source, stem=TRUE,
stopwords=tm::stopwords("english")))
mydtm <- Filter(mydtm, min=3)
inspect(mydtm)