Для 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 & # 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 — это другой символ, просто замените его на _
.
Для энграмм любой длины или только для биграмм?