Как отфильтровать матрицу документов терминов по частоте появления каждого термина
У меня есть матричный документ. Я хочу установить это подмножество и оставить только те термины, которые встречались более определенного числа раз, т.е. сумма строки должна быть больше определенного числа. Есть ли быстрый способ добиться этого? Кстати, матрица огромна.
2 ответа
Да, так что если вы используете tm
В пакете есть функция findFreqTerms, которую вы можете использовать, где внутри функции вы можете указать желаемое значение lowfreq:
tdm # your term document matrix
your_terms <- findFreqTerms(tdm, lowfreq = [...])
в случае, если вы заинтересованы в сокращении tdm наиболее часто используемыми терминами:
tdm[your_terms, ]
надеюсь это поможет
В пакете квантида:
require(quanteda)
myDfm <- dfm(data_char_ukimmig2010, remove_punct = TRUE)
myDfm
## Document-feature matrix of: 9 documents, 1,644 features (81.9% sparse).
# remove infrequent terms
dfm_trim(myDfm, min_count = 10, verbose = TRUE)
## Removing features occurring:
## - fewer than 10 times: 1,567
## Total features removed: 1,567 (95.3%).
## Document-feature matrix of: 9 documents, 77 features (32.5% sparse).
Существуют и другие варианты удаления функций на основе частоты документа и "разреженности" (относительная мера), как определено в пакете tm.