将 .txt 文件与字符数据组合成数据框以进行 tidytext 分析

Combining .txt files with character data into a data frame for tidytext analysis

我有一堆职位描述的 .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

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

谢谢!

一种方法是使用 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
...

这是您在下一阶段的分析中寻找的吗?