Я считаю, что это проблема al oop и gregexpr (). Я пытаюсь извлечь / экспортировать многострочный текст из числа стандартизированных экземпляров из числа стандартизированных форм .txt во фрейм данных, где каждый экземпляр представляет собой отдельную строку. До сих пор я мог успешно извлекать строковые данные (хотя алгоритм извлекает немного больше, чем указанные параметры gregexpr ()), но может экспортировать только как .txt в виде единовременной суммы текста.
- Как создать фрейм данных из текста извлеченных текстовых файлов, где каждый экземпляр многострочного текста имеет свою собственную строку? (Как только данные в формате data.frame, я знаю, как оттуда экспортировать как xlsx.)
- Как извлечь только данные из параметров, которые я установил?
С помощью (в частности, из Бена из комментариев к этому посту ), вот что у меня есть до сих пор:
# Txt Data Format
txt 1 <-
"A. The First: abcdefg hijklmnop qrstuv wxyz. B. The Second: abcdefg hijklmnop qrstuv wxyz.
abcdefg hijklmnop qrstuv wxyz. abcdefg hijklmnop qrstuv wxyz abcdefg hijklmnop qrstuv wxyz.
C. The Third: abcdefg hijklmnop qrstuv wxyz. D. The Fourth: abcdefg hijklmnop qrstuv wxyz.
abcdefg hijklmnop qrstuv wxyz. abcdefg hijklmnop qrstuv wxyz abcdefg hijklmnop qrstuv wxyz.
A. The First: abcdefg hijklmnop qrstuv wxyz. B. The Second: abcdefg hijklmnop qrstuv wxyz.
abcdefg hijklmnop qrstuv wxyz. abcdefg hijklmnop qrstuv wxyz abcdefg hijklmnop qrstuv wxyz.
C. The Third: abcdefg hijklmnop qrstuv wxyz. D. The Fourth: abcdefg hijklmnop qrstuv wxyz."
abcdefg hijklmnop qrstuv wxyz. abcdefg hijklmnop qrstuv wxyz abcdefg hijklmnop qrstuv wxyz.
txt 2 <-
"A. The First: abcdefg hijklmnop qrstuv wxyz. B. The Second: abcdefg hijklmnop qrstuv wxyz.
abcdefg hijklmnop qrstuv wxyz. abcdefg hijklmnop qrstuv wxyz abcdefg hijklmnop qrstuv wxyz.
C. The Third: abcdefg hijklmnop qrstuv wxyz. D. The Fourth: abcdefg hijklmnop qrstuv wxyz.
abcdefg hijklmnop qrstuv wxyz. abcdefg hijklmnop qrstuv wxyz abcdefg hijklmnop qrstuv wxyz.
A. The First: abcdefg hijklmnop qrstuv wxyz. B. The Second: abcdefg hijklmnop qrstuv wxyz.
abcdefg hijklmnop qrstuv wxyz. abcdefg hijklmnop qrstuv wxyz abcdefg hijklmnop qrstuv wxyz.
C. The Third: abcdefg hijklmnop qrstuv wxyz. D. The Fourth: abcdefg hijklmnop qrstuv wxyz."
abcdefg hijklmnop qrstuv wxyz. abcdefg hijklmnop qrstuv wxyz abcdefg hijklmnop qrstuv wxyz.
#################################
# Directory and Text Extraction #
#################################
dest <- "C:/~"
docs_text <- list.files(path = dest, pattern = "txt", full.names = TRUE)
## Assumes that all the content I want to extract is between "A." and "C." in
## the text while ignoring "C." and "D." content.
docs_list <- list.files(path = dest, pattern = "txt", full.names = TRUE)
docs_doc <- lapply(docs_list, function(i) {
j <- paste0(scan(i, what = character()), collapse = " ")
regmatches(j, gregexpr("(?<=A. The First).*?(?=C. The Third)", j, perl=TRUE))
})
lapply(1:length(docs_doc), function(i) write.table(docs_doc[i], file=paste(docs_list[i], " ",
" ", sep="."), quote = FALSE, row.names = FALSE, col.names = FALSE, eol = " " ))
Текущий вывод выглядит так, где весь текст в одну строку и захватывает больше, чем просто между "А." и "C.":
Желаемый вывод будет выглядеть так, когда многострочный текст между любым экземпляром "A." и "C." извлекается и присваивается одна строка:
Любая помощь, которую вы можете оказать, будет чрезвычайно полезна!
В конечном итоге я пытаюсь разработать модель НЛП, которая могла бы извлекать стандартизированные данные форм из сотен больших PDF-файлов для годичного хранилища. Если этот пост предполагает, что я не думаю о том, как подойти к этой проблеме эффективно / действенно, я открыт для направления.
Заранее спасибо!