Чистые метки из SE C документов Эдгара в readtext и quanteda - PullRequest
1 голос
/ 04 февраля 2020

Я пытаюсь прочитать .txt файлы в R, используя readtext и quanteda, которые я проанализировал из базы данных SE C Edgar, опубликованной в открытых списках фирм. Пример файла .txt: здесь , а более удобная для пользователя версия - здесь для сравнения (PG & E во время калифорнийских лесных пожаров).

Мой код для папки 1996 года, содержащей много файлов .txt, следующий:

directory<-("D:")
text <- readtext(paste0(directory,"/1996/*.txt"))
corpus<-corpus(text)
dfm<-dfm(corpus,tolower=TRUE,stem=TRUE,remove=stopwords("english"),remove_punct=TRUE)

Я заметил, что dfm по-прежнему содержит много «бесполезных» токенов, например как 'font-style', 'itali c', и в конце многие бесполезные токены, такие как '3eyn' и 'kq', которые, я думаю, являются частью части .jpg в нижней части файла .txt.

Когда я кодирую документы при использовании readtext, проблема все еще сохраняется, например, при выполнении:

text<-readtext(paste0(directory,"/*.txt"),encoding="UTF-8")
text<-readtext(paste0(directory,"/*.txt"),encoding="ASCII")

Любая помощь о том, как очистить эти файлы, чтобы они выглядели больше как пользователь Дружественная версия выше (т.е. содержит только основной текст) очень ценится.

1 Ответ

0 голосов
/ 12 марта 2020

Ключом здесь является найти маркер в тексте, который указывает начало нужного вам текста, и маркер, который указывает, где это заканчивается. Это может быть набор условий, разделенных в регулярном выражении с использованием |.

Ничего до сохранения первого маркера (по умолчанию), и вы можете удалить текст после конечного маркера, удалив его из корпуса, используя corpus_subset(). Фактические шаблоны, несомненно, потребуют доработки после того, как вы обнаружите разнообразие шаблонов в ваших реальных данных.

Вот как я это сделал для вашего образца документа:

library("quanteda")
## Package version: 2.0.0

corp <- readtext::readtext("https://www.sec.gov/Archives/edgar/data/75488/000114036117038612/0001140361-17-038612.txt") %>%
  corpus()

# clean up text
corp <- gsub("<.*?>|&#\\d+;", "", corp)
corp <- gsub("&amp;", "&", corp)

corp <- corpus_segment(corp,
  pattern = "Item 8\\.01 Other Events\\.|SIGNATURES",
  valuetype = "regex"
) %>%
  corpus_subset(pattern != "SIGNATURES")

print(corp, max_nchar = -1)
## Corpus consisting of 1 document and 1 docvar.
## 0001140361-17-038612.txt.1 :
## "Investigation of Northern California Fires   Since October 8, 2017, several catastrophic wildfires have started and remain active in Northern California. The causes of these fires are being investigated by the California Department of Forestry and Fire Protection (Cal Fire), including the possible role of power lines and other facilities of Pacific Gas and Electric Companys (the Utility), a subsidiary of PG&E Corporation.   It currently is unknown whether the Utility would have any liability associated with these fires. The Utility has approximately $800 million in liability insurance for potential losses that may result from these fires. If the amount of insurance is insufficient to cover the Utility's liability or if insurance is otherwise unavailable, PG&E Corporations and the Utilitys financial condition or results of operations could be materially affected."
...