У меня есть вложенный список с фразами после применения phrasemachine()
.Теперь я хотел бы создать матрицу элементов документа, в которой документы (пользователь) находятся в первом столбце, а все элементы - в виде оставшихся столбцов с частотой использования каждого пользователя в ячейках.
library(rJava)
library(phrasemachine)
library(quanteda)
#creating dummy data
id <- c(1:2)
text <- c("Election day is coming up and I am super excited. Election day. Wooho. I voted President Obama.", "School is boring. Partying is cool. Happy Birthday to me. When is Election Day?")
test <- data.frame(id, text)
test$text <- as.character(test$text)
corpus_test <- corpus(test[["text"]], docnames = test[["id"]])
tokens_test <- tokens(corpus_test)
phrases_test <- phrasemachine(tokens_test, minimum_ngram_length = 2, maximum_ngram_length = 3, return_phrase_vectors = TRUE, return_tag_sequences = TRUE)
phrases_test
# > phrases_test
# [[1]]
# [[1]]$phrases
# [1] "Election_day" "Election_day" "President_Obama"
#
# [[1]]$tags
# [1] "NN" "NN" "NN"
#
#
# [[2]]
# [[2]]$phrases
# [1] "Happy_Birthday" "Election_Day"
#
# [[2]]$tags
# [1] "AN" "NN"
Это вывод, который я ищу (матрица возможностей документа):
# user Election_day President_Obama Happy_Birthday
# 1 2 1 0
# 2 1 0 1
Я пытался использовать lapply
, но фразы каждого пользователя имеют разные размеры,это не сработает.
Вот что я попробовал:
library(plyr)
phrases_user <- laply(phrases_test, function(x) laply(x, identity)) #Error: Results must have the same dimensions.
library(dplyr)
phrases_user <- lapply(phrases_test, `[`, "phrases")
После выяснения проблемы с извлечением фраз для идентификатора, я полагаю, мне нужно будет сделать следующее:
corpus_test_2 <- corpus(phrases_user[["phrases"]], docnames = phrases_user[["id"]])
dfm_test <- dfm(corpus_test_2)
Может кто-нибудь помочь?:)