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

R-文本挖掘-导入语料库并将文件名保留在文档术语矩阵中,r,import,text-mining,corpus,R,Import,Text Mining,Corpus,直到最近(1个月前),下面显示的代码允许我将存储在本地文件夹中的一系列.txt文档导入到R中,创建一个语料库,对其进行预处理,最后将其转换为文档术语矩阵。我遇到的问题是没有导入文档名,而是每个文档都列为“字符(0)” 我的目标之一是在语料库上进行主题建模,因此将文档名称与模型生成的主题联系起来是很重要的 有人对发生了什么变化有什么建议吗?或者我怎样才能解决这个问题 library("tm") library("SnowballC") setwd("C:/Users/Documents/Data

直到最近(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)
library(“tm”)
图书馆(“滚雪球”)
setwd(“C:/Users/Documents/Dataset/”)

corpus下面是一个调试会话,用于识别/纠正文件名丢失。修改了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)
library(“tm”)
图书馆(“滚雪球”)

#语料库这里有一种使用
qdap
的方法,我在其中创建了一个函数来读取文件目录,并将其转换为
数据框架

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)
库(qdap)

sf I以前有过这个问题,但不记得问题/解决方案。如果您在每次操作后检查您的_语料库,您可以看到id何时被删除。然后,您可以搜索该操作。另外,在@user3969377检查这个答案:如果我注释掉纯文本文档行,我会得到一个
错误:inherits(doc,“TextDocument”)不是TRUE
。只是为了摆脱这种情况,我引入了纯文本文档转换。但是仍然缺少文件名。您可以访问crops中的单词“id”字段,并在循环中将其替换为您的文件名。可以从这里访问id。像这样轻松地替换名称:您的_corpos[[2]]$meta$id