Я делаю пометки некоторых текстов в r. То, что я хочу, соответствует каждой строке в текстовом столбце, как показано ниже. Мне нужны только слова существительные, глаголы и прилагательные в соответствующем столбце pos_tag
text pos_tag
1 Hi, I am looking for xyz in your website website, looking
2 when will my product delivered product, delivered
3 Is the stock available for abc stock, available, abc
Я получил некоторую подсказку: Извлечение POS-тегов в R с использованием , но, похоже, оно работает на скаляре, а не на векторе. поэтому используется для цикла, чтобы он работал на каждой строке текста. Другой ключ здесь: POS-теги для каждой записи в R
library(openNLP)
library(NLP)
data <- data.frame(text=c("Hi,i am looking for xyz in your website",
"when will my product delivered",
"is the stock available for abc"))
data$text <- as.character(data$text)
for(i in 1:nrow(data)){
data$text[i] <- as.String(data$text[i])
}
sent_token_annotator <- Maxent_Sent_Token_Annotator()
word_token_annotator <- Maxent_Word_Token_Annotator()
for(i in 1:nrow(data)){
s <- data$text[i]
s <- as.String(s)
a2 <- annotate(s, list(sent_token_annotator, word_token_annotator))
pos_tag_annotator <- Maxent_POS_Tag_Annotator()
a3 <- annotate(s, pos_tag_annotator, a2)
a3w <- subset(a3, type == "word")
tags <- sapply(a3w$features,'[[',"POS")
b <- sprintf("%s/%s",s[a3w],tags)
b <- grep("/NNP|/NN|ADJ",b,value = T)
b <- gsub("/NNP|/NN|/ADJ","",b)
b <- list(b)
data$pos_tag[i] <- b
}
Но я не уверен, правильно ли я это делаю или это лучший способ сделать это в r. Пожалуйста, предложите