Чтение текстовых файлов с абзацами в виде одной строки с использованием VCorpus из пакета tm в r - PullRequest
0 голосов
/ 30 апреля 2019

У меня есть список текстовых файлов в моем каталоге, все из которых являются документами с несколькими параграфами. Я хочу прочитать эти документы и провести анализ настроений.

Например, у меня есть один текстовый документ data/hello.txt с текстом, как показано ниже:

"Hello world.  
 This is an apple.

 That is an orange"

Я прочитал документ, как показано ниже (также может быть несколько документов):

docs <- VCorpus(DirSource('./data/hello.txt'))

Когда я смотрю на содержимое документа docs[[1]]$content Кажется, что это символьный вектор.

[1] "hello  world"        "this is apple."      ""                   
[4] "That is an orange. " ""  

У меня вопрос, как я могу читать в этих документах, чтобы в каждом документе абзацы объединялись в одну символьную строку, чтобы я мог использовать ее для анализа настроений. (VCorpus из тм пакета)

Большое спасибо.

1 Ответ

0 голосов
/ 16 мая 2019

Вы можете использовать пакет readtext для чтения текстов, а затем создать VCorpus, используя VectorSource().

txt <- "Hello world.\nThis is an apple.\n\nThat is an orange"

tf <- tempfile("temp", fileext = ".txt")
cat(txt, file = tf)

library("readtext")
rtxt <- readtext(tf)

cat(rtxt$text)
## Hello world.
## This is an apple.
## 
## That is an orange

library("tm")
## Loading required package: NLP
docs <- VCorpus(VectorSource(rtxt$text))
cat(docs[[1]]$content)
## Hello world.
## This is an apple.
## 
## That is an orange

Data.frame, созданный readtext(), также может использоваться непосредственно в пакете quanteda (более полнофункциональный альтернативный вариант tm ).

# alternative
library("quanteda")
## Package version: 1.4.3
## Parallel computing: 2 of 12 threads used.
## See https://quanteda.io for tutorials and examples.

corp <- corpus(rtxt)  # works directly
cat(texts(corp))      # simpler?
## Hello world.
## This is an apple.
## 
## That is an orange

VCorpus(VectorSource(texts(corp))) # if you must...
## <<VCorpus>>
## Metadata:  corpus specific: 0, document level (indexed): 0
## Content:  documents: 1
...