Я пытаюсь модифицировать функцию определения основы, которая может 1) удалять дефисы в http (которые появились в корпусе), но при этом 2) сохранять дефисы, которые появляются в значимых дефисных выражениях (например, отнимающих много времени, непомерно дорогих, и т.д.). На самом деле я задавал подобные вопросы несколько месяцев назад на другом ветка вопросов, код выглядит так:
# load stringr to use str_replace_all
require(stringr)
clean.text = function(x)
{
# remove rt
x = gsub("rt ", "", x)
# remove at
x = gsub("@\\w+", "", x)
x = gsub("[[:punct:]]", "", x)
x = gsub("[[:digit:]]", "", x)
# remove http
x = gsub("http\\w+", "", x)
x = gsub("[ |\t]{2,}", "", x)
x = gsub("^ ", "", x)
x = gsub(" $", "", x)
x = str_replace_all(x, "[^[:alnum:][:space:]'-]", " ")
#return(x)
}
# example
my_text <- "accident-prone"
new_text <- clean.text(text)
new_text
[1] "accidentprone"
но не смог получить удовлетворительного ответа, затем переключил свое внимание на другие проекты, пока не возобновил работу над этим. Похоже, что "[^[:alnum:][:space:]'-]"
в последней строке блока кода является виновником удаления -
из не-http части корпуса.
Я не мог понять, как добиться желаемых результатов, буду очень признателен, если кто-то может поделиться своим мнением по этому поводу.
str_replace_all(x, "[^[:alnum:][:space:]'-]", " ")
наgsub("\\b-\\b(*SKIP)(*F)|[^[:alnum:][:space:]'-]", " ", x, perl=TRUE)
или, чтобы сохранить шаблон Unicode,gsub("(*UCP)\\b-\\b(*SKIP)(*F)|[^\\w\\s'-]|_", " ", x, perl=TRUE)
- person Wiktor Stribiżew   schedule 05.10.2018x = gsub("[[:punct:]]", "", x)
наx = gsub("(?!-)[[:punct:]]", "", x, perl=TRUE)
. Обратите внимание, что вы все равно можете избавиться отstringr
, заменив строкуstr_replace
наx = gsub("[^[:alnum:][:space:]'-]", " ", x)
- person Wiktor Stribiżew   schedule 05.10.2018