Как упомянуто в сообщении об ошибке tokens
ожидайте символьный вектор, корпус или токены в качестве входных данных. Вы передаете ему фрейм данных. Вместо этого передайте ему соответствующий столбец текста.
Также tokens
может обрабатывать векторы, чтобы вы могли передавать несколько столбцов вместе как один вектор.
library(quanteda)
tokens(c(t1$colname, t2$colname, t3$colname), what = "word", remove_numbers = TRUE,
remove_punct = TRUE, remove_symbols = TRUE, remove_separators = TRUE,
remove_twitter = TRUE, remove_hyphens =TRUE, remove_url = TRUE)
На основании обновления и примера на странице справки ?tokens
t1 <- data.frame(full_text = "#textanalysis is MY <3 4U @myhandle gr8 #stuff :-)",
stringsAsFactors = FALSE)
t2 <- data.frame(full_text = c("This is $10 in 999 different ways,\n up and down;
left and right!", "@kenbenoit working: on #quanteda 2day\t4ever,
http://textasdata.com?page=123."), stringsAsFactors = FALSE)
Мы можем создать функцию, чтобы применить ее ко всем фреймам данных
complete_function <- function(x) {
t1t <- tokens(x, what = 'word', remove_numbers = TRUE,
remove_punct = TRUE,
remove_symbols = TRUE,
remove_separators = TRUE,
remove_twitter = TRUE,
remove_hyphens = TRUE,
remove_url = TRUE)
t1t <- tokens_tolower(t1t)
t1t <- tokens_select(t1t, stopwords(), selection = "remove")
t1t <- unlist(t1t)
t1t <- unique(t1t)
t1t <- as.data.frame(t1t)
t1t <- as.data.frame.matrix(t1t)
}
Затем используйте mget
, чтобы получить фреймы данных t1
, t2
, t3
и т. Д. И применить функцию к столбцу "full_text"
каждого фрейма данных.
lapply(mget(ls(pattern = "^t\\d+")), function(x) complete_function(x$full_text))
#$t1
# t1t
#1 textanalysis
#2 4u
#3 myhandle
#4 gr8
#5 stuff
#$t2
# t1t
#1 different
#2 ways
#3 left
#4 right
#5 kenbenoit
#6 working
#7 quanteda
#8 2day
#9 4ever