R - 文本挖掘 - 导入语料库并将文件名保留在文档术语矩阵中

时间:2014-10-08 13:19:44

标签: r import text-mining corpus

直到最近(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)

2 个答案:

答案 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)