Quanteda R: Как удалить цифры или символы "из" / "в" токене? - PullRequest
0 голосов
/ 03 июня 2019

У меня есть вопрос, касающийся предварительной обработки языка в Quanteda R. Я хочу сгенерировать матрицу возможностей документа, основанную на некоторых документах.Итак, я сгенерировал корпус и запустил следующий код:

data <- read.csv2("abstract.csv", stringsAsFactors = FALSE)
corpus<-corpus(data, docid_field = "docname", text_field = "documents")
dfm <- dfm(corpus, stem = TRUE, remove = stopwords('english'),
           remove_punct = TRUE, remove_numbers = TRUE, 
           remove_symbols = TRUE, remove_hyphens = TRUE)

Когда я проверял dfm, я заметил несколько токенов (#ml, @attribut, _iq, 0.01ms).Я скорее хочу иметь (ml, attribut, iq, ms).

Я думал, что удалил все символы и цифры.Почему я до сих пор их получаю?

Я был бы рад получить помощь.

Спасибо !!!

1 Ответ

0 голосов
/ 03 июня 2019

Для действительно точного контроля вы захотите обработать текст самостоятельно путем замены шаблона. Используя stringi (или stringr ), вы можете легко заменить категории Юникод для символов или знаков препинания.

Рассмотрим этот пример.

txt <- "one two, #ml @attribut _iq, 0.01ms."

quanteda::tokens(txt, remove_twitter = TRUE, remove_punct = TRUE)
## tokens from 1 document.
## text1 :
## [1] "one"      "two"      "ml"       "attribut" "_iq"      "0.01ms"

Это простой способ удалить специальные символы, которые могут обозначать "Twitter" или другие соглашения в социальных сетях.

Для более низкого контроля уровня:

# how to remove the leading _ (just to demonstrate)
stringi::stri_replace_all_regex(txt, "(\\b)_(\\w+)", "$1$2")
## [1] "one two, #ml @attribut iq, 0.01ms."

# remove all digits
(txt <- stringi::stri_replace_all_regex(txt, "\\d", ""))
## [1] "one two, #ml @attribut _iq, .ms."
# remove all punctuation and symbols
(txt <- stringi::stri_replace_all_regex(txt, "[\\p{p}\\p{S}]", ""))
## [1] "one two ml attribut iq ms"

quanteda::tokens(txt)
## tokens from 1 document.
## text1 :
## [1] "one"      "two"      "ml"       "attribut" "iq"       "ms"

К чему вы стремитесь, я (частично) догадываюсь.

...