#r #quanteda
#r #квантовая
Вопрос:
В dfm как можно обнаружить в ngram одни и те же слова, т.е.
hello_hello, text_text
и удалить их из dfm?
Комментарии:
1. Для ngrams любой длины или только для биграмм?
Ответ №1:
Для dfm, в котором ваши элементы ngram объединены _
, вы можете разделить их и определить, какие из них совпадают.
library("quanteda")
## Package version: 2.1.2
dfmat <- dfm(c("test1_test1", "test1_test2", "test2_test2_test2", "test2_other", "other"))
featsplit <- strsplit(featnames(dfmat), "_")
same <- sapply(featsplit, function(y) {
length(y) >= 2 amp; # it's a compound (ngram)
length(unique(y)) == 1 # all elements are the same
})
same
## [1] TRUE FALSE TRUE FALSE FALSE
Затем вы можете использовать это, чтобы сделать выбор для элементов dfm, которые не совпадают:
dfmat[, !same]
## Document-feature matrix of: 5 documents, 3 features (80.0% sparse).
## features
## docs test1_test2 test2_other other
## text1 0 0 0
## text2 1 0 0
## text3 0 0 0
## text4 0 1 0
## text5 0 0 1
Если ваш конкатенатор ngram является другим символом, просто замените его на _
.