Давайте начнем с воспроизводимого примера, который представляет собой фрейм данных с именем key
, состоящий из 8 столбцов и 3 строк:
key <- structure(c("Make Professional Maps with QGIS and Inkscape",
"Gain the skills to produce original, professional, and aesthetically pleasing maps using free software",
"English", "Inkscape 101 for Beginners - Design Vector Graphics",
"Learn how to create and design vector graphics for free!", "English",
"Design & Create Vector Graphics With Inkscape 2016", "The Beginners Guide to designing and creating Vector Graphics with Inkscape. No Experience needed!",
"English", "Design a Logo for Free in Inkscape", "Learn from an award winning, published logo design professional!",
"English", "Inkscape - Beginner to Pro", "If you want to have a decent learning curve, you are new to the program or even in design, this course is for you.",
"English", "Creating 2D Textures in Inkscape", "A guide to creating colorful and interesting textures in inkscape.",
"English", "Vector Art in Inkscape - Icon Design | Make Vector Graphics",
"Learn Icon Design by creating Vector Graphics using the .SVG and PNG format with the Free Software Inkscape!",
"English", "Inkscape and Bootstrap 3 -> Responsive Web Design!",
"Design responsive websites using Free tools Inkscape and Bootstrap 3! Mood Boards and Style Tiles to Mobile First!",
"English"), .Dim = c(3L, 8L), .Dimnames = list(c("Title", "Short_Description",
"Language"), c("1", "2", "4", "5", "6", "9", "13", "15")))
Я бы хотел извлекать ключевые слова из каждого столбца независимо .Для этой цели я использую пакет udpipe
из R.
Поскольку я хочу запускать функции в каждом столбце, я запускаю цикл for
.
Перед началом мы создаеммодель с английским языком для справки ( см. эту ссылку для получения дополнительной информации ):
library(udpipe)
ud_model <- udpipe_download_model(language = "english")
ud_model <- udpipe_load_model(ud_model$file_model)
В идеале, мой конечный результат - это кадр данных с 8 столбцами и таким количеством строк в качестве ключевых слов.извлечено.
Я попробовал два метода:
Метод 1: использование dplyr
library(dplyr)
keywords <- list()
for(i in ncol(keywords_en_t)){
keywords[[i]] <- keywords_en_t %>%
udpipe_annotate(ud_model,s)
as.data.frame()
}
Метод 2:
key <- list()
stats <- list()
for(i in ncol(keywords_en_t)){
key[[i]] <- as.data.frame(udpipe_annotate(ud_model, x = keywords_en_t[,i]))
stats[[i]] <- subset(key[[i]], upos %in% "NOUN")
stats <- txt_freq(x = stats$lemma)
}
Вывод
В обоих случаях, или я получаю некоторые ошибки, или результат не является ожидаемым.
Как я уже сказал, ожидаемый результат - это фрейм данных с 8 столбцами, представляющими в строках ключевые слова
Есть идеи?