Package tm: removeWords Как избежать удаления CERTIAN (в частности, отрицаний) английских стоп-слов, если они указаны?

Я хотел бы использовать функцию removeWords (stopwords("english")) через: corpus <- tm_map(corpus,removeWords, stopwords("english")), но некоторые слова, такие как «не», и другие отрицания, которые я хотел бы сохранить.

Можно ли использовать функцию removeWords, stopwords("english"), НО исключить определенные слова из этого списка, если они указаны?

Как я могу предотвратить удаление, например, «не»?

(Вторичное) можно ли установить этот тип контрольного списка на все «отрицания»?

Я бы предпочел не прибегать к созданию собственного пользовательского списка только со словами из этого стоп-листа, которые меня интересуют.


person Robert    schedule 27.10.2015    source источник


Ответы (1)


Вы можете создать собственный список стоп-слов, взяв разницу между stopwords("en") и списком слов, которые вы хотите исключить:

exceptions   <- c("not")
my_stopwords <- setdiff(stopwords("en"), exceptions)

Если вам нужно удалить все отрицания, вы можете grep их из списка stopwords():

exceptions <- grep(pattern = "not|n't", x = stopwords(), value = TRUE)
# [1] "isn't"     "aren't"    "wasn't"    "weren't"   "hasn't"    "haven't"   "hadn't"    "doesn't"   "don't"     "didn't"   
# [11] "won't"     "wouldn't"  "shan't"    "shouldn't" "can't"     "cannot"    "couldn't"  "mustn't"   "not"
my_stopwords <- setdiff(stopwords("en"), exceptions)
person Duf59    schedule 27.10.2015
comment
en или english дает тот же список. - person Duf59; 27.10.2015
comment
Вы случайно не знаете, как сохранить апострофы в removePunctuation? Я только что понял, что мне нужно знать и эту функцию, так как я включаю ('). - person Robert; 27.10.2015
comment
Просто определите свою собственную функцию: removePunctuationFix <- function(x) gsub("[^[:alnum:][:space:]']", "", x) Существуют разные способы написания регулярного выражения в зависимости от того, какие знаки препинания вы хотите сохранить или нет, см. обсуждение здесь например. Определение собственной функции также позволяет заменять знаки препинания пробелами, избегая, таким образом, объединения соседних слов. - person Duf59; 27.10.2015