анализ нграмм в тидитексте в R - PullRequest
0 голосов
/ 14 февраля 2020

Я пытаюсь провести анализ ngram, потому что у меня есть 770 речей. Однако функция unnest_tokens в tidytext принимает кадр данных в качестве входных данных. когда я проверил пример (книги Джейн Остин), каждая строка книги сохраняется как строка во фрейме данных. я не могу преобразовать корпус в информационный блок ни для одной речи за раз, ни для всего корпуса сразу.

Как я могу запустить нграммы (n = 2,3, et c) анализ тидитекста с использованием неподтвержденных токенов на моем корпусе. Может кто-нибудь предложить, пожалуйста?

Спасибо

Ответы [ 2 ]

0 голосов
/ 16 февраля 2020

Вы говорите, что у вас "корпус" из 770 речей. Вы имеете в виду, что у вас есть символьный вектор? Если это так, вы можете токенизировать свой текст следующим образом:

library(tidyverse)
library(tidytext)

speech_vec <- c("I am giving a speech!",
                "My second speech is even better.",
                "Unfortunately, this speech is terrible!",
                "For my final speech, I will wow you all.")

speech_df <- tibble(text = speech_vec) %>%
  mutate(speech = row_number())

tidy_speeches <- speech_df %>%
  unnest_tokens(bigram, text, token = "ngrams", n = 2)

tidy_speeches
#> # A tibble: 21 x 2
#>    speech bigram            
#>     <int> <chr>             
#>  1      1 i am              
#>  2      1 am giving         
#>  3      1 giving a          
#>  4      1 a speech          
#>  5      2 my second         
#>  6      2 second speech     
#>  7      2 speech is         
#>  8      2 is even           
#>  9      2 even better       
#> 10      3 unfortunately this
#> # … with 11 more rows

Создано в 2020-02-15 с помощью пакета Представить (v0.3.0)

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

0 голосов
/ 14 февраля 2020

Для этого вы можете использовать библиотеку ngram & tm. Вы можете заменить «myCorpus» созданным вами корпусом.

library(tm)
library(ngarm)
myCorpus<-c("Hi How are you","Hello World","I love Stackoverflow","Good Bye All")
ng <- ngram (myCorpus , n =2)
get.phrasetable (ng)

Если вы хотите токенизировать и преобразовать ваш корпус в фрейм данных, воспользуйтесь приведенным ниже код.

 tokenizedCorpus <- lapply(myCorpus, scan_tokenizer)
 mydata <- data.frame(text = sapply(tokenizedCorpus, paste, collapse = " "),stringsAsFactors = FALSE)
...