К сожалению, вы наткнулись на ошибку. stemDocument
работает, если вы передаете язык, когда вы делаете:
stemDocument(x = c("poder", "pode"), language = "pt")
[1] "pod" "pod"
Но при использовании этого в tm_map
функция начинается с stemDocument.PlainTextDocument
. В этой функции язык корпуса проверяется на соответствие языку, указанному в функции. Это работает правильно. Но в конце этой функции все передается функции stemDocument.character
, но без языковой компоненты . В stemDocument.character
язык по умолчанию указан как английский. Таким образом, при вызове tm_map
(или DocumentTermMatrix
) язык, который вы ему предоставляете, вернется обратно к английскому, и stemming не будет работать правильно.
Обходной путь может быть использован пакет quanteda:
library(quanteda)
my_dfm <- dfm(x = c("poder", "pode"))
my_dfm <- dfm_wordstem(my_dfm, language = "pt")
my_dfm
Document-feature matrix of: 2 documents, 1 feature (0.0% sparse).
2 x 1 sparse Matrix of class "dfm"
features
docs pod
text1 1
text2 1
Поскольку вы работаете с португальским, я предлагаю использовать пакеты quanteda, udpipe или оба. Оба пакета обрабатывают неанглийские языки намного лучше, чем тм.