Я использую пакет R udpipe
для извлечения ключевых слов в моем фрейме данных.Давайте начнем с некоторых данных, содержащихся в пакете:
library(udpipe)
data(brussels_reviews)
Если мы посмотрим на структуру, мы увидим, что она содержит 1500 комментариев (строк) и 4 столбца.
str(brussels_reviews)
'data.frame': 1500 obs. of 4 variables:
$ id : int 32198807 12919832 23786310 20048068 17571798 28394425 46322841 27719650 14512388 37675819 ...
$ listing_id: int 1291276 1274584 1991750 2576349 1866754 5247223 7925019 4442255 2863621 3117760 ...
$ feedback : chr "Gwen fue una magnifica anfitriona. El motivo de mi viaje a Bruselas era la busqueda de un apartamento y Gwen me"| __truncated__ "Aurelie fue muy atenta y comunicativa. Nos dio mapas, concejos turisticos y de transporte para disfrutar Brusel"| __truncated__ "La estancia fue muy agradable. Gabriel es muy atento y esta dispuesto a ayudar en todo lo que necesites. La cas"| __truncated__ "Excelente espacio, excelente anfitriona, un lugar accessible economicamente y cerca de los lugares turisticos s"| __truncated__ ...
$ language : chr "es" "es" "es" "es" ...
Когда следует этот урок , я могу извлечь ключевые слова из всех фреймов данных вместе.Отлично.
Однако мое требование состоит в том, чтобы извлекать ключевые слова в каждой строке , а не во весь фрейм данных в целом.
Я признаю, что в этом примере этоне имеет особого смысла, так как есть только один столбец с текстом (feedback
).Однако в моем реальном примере у меня есть много столбцов с текстом.
Итак, Я хотел бы извлечь ключевые слова в каждой строке фрейма данных.Так что если мы извлекаем ключевые слова в этом примере, я хотел бы получить 1500 групп ключевых слов, каждая группа для каждой строки .
Как я могу это сделать?
ОБНОВИТЬ с помощью и ПРИМЕР
Следуя этим двум шагам, мы получаем ключевые слова для всех данных.Однако я хотел бы получить ключевые слова в каждой строке фрейма данных.
Первый шаг
library(udpipe)
library(textrank)
## First step: Take the Spanish udpipe model and annotate the text. Note: this takes about 3 minutes
data(brussels_reviews)
comments <- subset(brussels_reviews, language %in% "es")
ud_model <- udpipe_download_model(language = "spanish")
ud_model <- udpipe_load_model(ud_model$file_model)
x <- udpipe_annotate(ud_model, x = comments$feedback)
x <- as.data.frame(x)
Второй шаг
## Collocation (words following one another)
stats <- keywords_collocation(x = x,
term = "token", group = c("doc_id", "paragraph_id", "sentence_id"),
ngram_max = 4)
## Co-occurrences: How frequent do words occur in the same sentence, in this case only nouns or adjectives
stats <- cooccurrence(x = subset(x, upos %in% c("NOUN", "ADJ")),
term = "lemma", group = c("doc_id", "paragraph_id", "sentence_id"))
## Co-occurrences: How frequent do words follow one another
stats <- cooccurrence(x = x$lemma,
relevant = x$upos %in% c("NOUN", "ADJ"))
## Co-occurrences: How frequent do words follow one another even if we would skip 2 words in between
stats <- cooccurrence(x = x$lemma,
relevant = x$upos %in% c("NOUN", "ADJ"), skipgram = 2)