Как удалить общие окончания слов из не-Engli sh корпуса, используя пакет tm в R - PullRequest
1 голос
/ 26 января 2020

Я пытаюсь сделать какой-нибудь анализ текста, используя пакет tm R, по отзывам, которые там написали итальянские пользователи определенного сайта. Я очистил тексты, сохранил их в корпусе, сделал какую-то очистку, но когда я пытаюсь получить основы слов, удалив общие окончания, у меня возникает проблема с указанием итальянского языка вместо языка по умолчанию, т.е. Engli sh.

reviews_corpus <- tm_map(reviews_corpus, removeNumbers)
reviews_corpus <- tm_map(reviews_corpus, removePunctuation)
reviews_corpus <- tm_map(reviews_corpus, stripWhitespace)
reviews_corpus <- tm_map(reviews_corpus, content_transformer(tolower))
reviews_corpus <- tm_map(reviews_corpus, removeWords, stopwords("italian"))
reviews_corpus <- tm_map(reviews_corpus, stemDocument(reviews_corpus, language="italian"))

Первые пять строк работают нормально, но для последней R дает мне:

Error in UseMethod("stemDocument", x) : 
  no applicable method for 'stemDocument' applied to an object of class "c('VCorpus', 'Corpus')"

Итак, моя проблема в том, как я могу использовать stemDocument на корпусе, но указать язык, который я хочу использовать?

1 Ответ

2 голосов
/ 26 января 2020

В stemDocument есть ошибка. Если вы используете любой другой язык, кроме Engli sh, он вернется к Engli sh. Но есть способ обойти это и напрямую назвать слово stemmer, на которое указывает stemDocument.

Вместо

reviews_corpus <- tm_map(reviews_corpus, stemDocument(reviews_corpus, language="italian"))

используйте

reviews_corpus <- tm_map(reviews_corpus, function(x) SnowballC::wordStem(x, language = "italian"))

Но мой совет, если вы используете язык не Engli sh, используйте пакет quanteda.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...