Используйте несколько словарей, используя hunspell в R - PullRequest
0 голосов
/ 04 мая 2018

Я наблюдаю странное поведение, когда выбираю разные словари в hunspell. Я хотел бы, чтобы мой текст был проверен орфографией на австралийском английском. но когда я выбираю словарь en_AU, я получаю дополнительные орфографические ошибки, которые не имеют смысла.

> require(hunspell)
> hunspell("Couldn't be more delighted." , dict = "en_AU", ignore = dic_ignore)
[[1]]
[1] "Couldn"

> hunspell("Couldn't be more delighted." , dict = "en_US", ignore = dic_ignore)
[[1]]
character(0)

Я не понимаю, почему словарь en_AU ведет себя так.

Как мне объединить два словаря? Моя попытка объединить их не работает:

    #this doesn't work
    > reviews <-  reviews[, possible_errors_2 := hunspell(review_parsed, dict = c("en_US", "en_AU"), ignore = dic_ignore)]
Warning message:
In if (!file.exists(dict)) { :
  the condition has length > 1 and only the first element will be used

Edit: я думаю, что есть два вложенных вопроса: 1) почему первый словарь не работает должным образом? «Не удалось» действует в австралийском английском <: { 2) есть ли способ объединить два словаря в R? </p>

1 Ответ

0 голосов
/ 12 мая 2019

По сути, Hunspell не поддерживает вектор словарей. Вы можете отследить функцию get_dict и добавить поддержку https://github.com/ropensci/hunspell/pull/37/commits/da358a972d29c4bd39cf39755fc013a931bf3aba или объединить файлы словарей вместе.

trace(hunspell:::get_dict, edit = TRUE)
 found <- file.exists(dict)
 if(!all(found)){
   dict[!found] <- sapply(paste0(sub("\\.(dic|aff)$", "", dict[!found]), ".dic"), find_in_dicpath)
 }
 normalizePath(dict, mustWork = TRUE)
...