Запретить tm удалять стоп-слова из двойных слов

Я пытаюсь удалить стоп-слова из вектора символов. Но проблема, с которой я столкнулся, заключается в том, что есть слово «king kond». Поскольку «король» является одним из стоп-слов, «король» в «кинг-конге» удаляется.

Есть ли способ избежать удаления двойных слов? Мой код:

text <- VCorpus(VectorSource(newmnt1$form)) 
#(newmnt1$form is  chr [1:4] "king kong lives" "foot" "island" "skull")

#Normal standardization of text.
text <- tm_map(text, content_transformer(tolower))
text <- tm_map(text, removeWords, custom_stopwords)
text <- tm_map(text, stripWhitespace)
newmnt2 <- text[[1]]$content

person Yogesh Raj Seenivasan    schedule 18.08.2017    source источник


Ответы (2)


Одним из быстрых способов было бы преобразовать шаблоны «кинг-конг» в «кинг-конг».

a <- gsub("king kong", "king_kong", "This is a pattern with king and king kong")
a
[1] "This is a pattern with king and king_kong"

tm::removeWords(a, "king")
[1] "This is a pattern with  and king_kong"

Лучший,

Колин

person Colin FAY    schedule 18.08.2017

Если вы хотите использовать другой пакет, это работает:

> text <- c("king kong lives", "foot", "island", "skull", "This is a pattern with king and king kong")
> corpus::term_matrix(text, drop = "king", combine = "king kong", transpose = TRUE)
11 x 5 sparse Matrix of class "dgCMatrix"

a         . . . . 1
and       . . . . 1
foot      . 1 . . .
is        . . . . 1
island    . . 1 . .
king kong 1 . . . 1
lives     1 . . . .
pattern   . . . . 1
skull     . . . 1 .
this      . . . . 1
with      . . . . 1

Аргумент combine указывает корпусу интерпретировать king kong как отдельный токен.

person Patrick Perry    schedule 13.09.2017