Объединение файлов .txt с символьными данными во фрейм данных для анализа тидитекста - PullRequest
0 голосов
/ 06 декабря 2018

У меня есть куча TXT-файлов с описаниями заданий, и я хочу импортировать их для анализа анализа текста.

Пожалуйста, приложите несколько примеров текстовых файлов: https://sample -videos.com /скачать-образец-текст-file.php .Пожалуйста, используйте версии 10 КБ и 20 КБ, поскольку описания заданий имеют разную длину.

После их объединения я хотел бы провести анализ текста и создать матрицы терминов документа.

Что я сделал таким образомfar:

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 голосов
/ 06 декабря 2018

Одним из подходов может быть использование пакета 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
...

Это то, что вы ищете для следующих этапов анализа?

...