将.txt文件与字符数据合并到数据框中以进行整洁的文本分析

时间:2018-12-05 23:16:29

标签: r tokenize tidyverse tm tidytext

我有一堆职位描述的.txt文件,我想将其导入以进行文本挖掘分析。

请在附件中找到一些示例文本文件:https://sample-videos.com/download-sample-text-file.php。请使用10kb和20kb版本,因为作业说明的长度不同。

将它们组合后,我想进行整洁的文本分析并创建文档术语矩阵。

到目前为止我所做的:

file_list <- list.files(pattern="*.txt")
list_of_files <- lapply(file_list, read.delim)
mm<- merge_all(list_of_files) # this line doesn't work because the column headers of the lists are different
## Error in fix.by(by.x, x) : 'by' must specify a uniquely valid column

我希望得到一个答案,该答案可以帮助我将这些列表合并到数据框中,或者为我提供一种导入这些文本文件的更好方法,或者阐明如何对列表(而不是数据框)进行整洁的文本分析。

谢谢!

1 个答案:

答案 0 :(得分:1)

一种方法可能是使用dplyr程序包和一个for循环来导入每个文件,并组合在一起作为一个数据框,并使用文件名和用于索引的段落编号,然后使用tidytext进行整理上:

#install.packages(c("dplyr", "tidytext"))
library(dplyr)
library(tidytext)

file_list <- list.files(pattern="*.txt")

texts <- data.frame(file=character(),
                    paragraph=as.numeric(),
                    text=character(),
                    stringsAsFactors = FALSE) # creates empty dataframe

for (i in 1:length(file_list)) {
  p <- read.delim(file_list[i],
                  header=FALSE,
                  col.names = "text",
                  stringsAsFactors = FALSE) # read.delim here is automatically splitting by paragraph
  p <- p %>% mutate(file=sub(".txt", "", x=file_list[i]), # add filename as label
                    paragraph=row_number()) # add paragraph number
  texts <- bind_rows(texts, p) # adds to existing dataframe
}

words <- texts %>% unnest_tokens(word, text) # creates dataframe with one word per row, indexed

您的最终输出将是:

head(words)
                   file paragraph        word
1   SampleTextFile_10kb         1       lorem
1.1 SampleTextFile_10kb         1       ipsum
1.2 SampleTextFile_10kb         1       dolor
1.3 SampleTextFile_10kb         1         sit
1.4 SampleTextFile_10kb         1        amet
1.5 SampleTextFile_10kb         1 consectetur
...

这是您在下一步分析中要寻找的东西吗?