Проверка орфографии с помощью python и Яндекс.Спеллера

В силу разных обстоятельств не всегда получается орфографически правильно написать слово. В спешке не попал по нужной клавише отвлекли банально подзабыл правильное написание и т.д. Раньше для проверки орфографии я пользовался средствами текстового редактора или просто копировал в google а он подсказывал правильное написание (кто этим не грешил :)) но это все лишние телодвижения.

Хочется выделить слово причем на любом из используемых языков (украинский английский русский) нажать аккорд клавиш и получить правильную форму в буфере обмена для вставки в текст.

Можно выделить два варианта проверки орфографии:

  • с помощью локальных словарей уже установленных в системе;
  • онлайн словари с доступом по API;

Перечень локальных системы проверки орфографии (повествование ведется про Linux) в порядке исторического появления:

  • ispell - один из первых спелчекеров датирован 1971 годом;
  • aspell - разработан на замену ispell;
  • hunspell - наиболее популярная система проверки орфографии на данный момент используется в LibreOffice Solr Google Chrome Thunderbird / Firefox Opera и многих других.

Среди онлайн систем проверки орфографии с открытым API я остановился на API Яндекс.Спеллер. Google почему-то не предоставляет в отрытом доступе свой 'Did you mean' (плохо искал?).

Т.к. у меня уже установлен в системе hunspell с требуемым набором словарей решил начать с него. Случайно взятые слова и скормленные hunspell через консоль особо не впечатлили. На довольно таки обыденные слова предлагались слова с тем же корнем но другим значением либо вообще другие слова.

Пример ввожу жели на выходе хочу получить жили:

echo 'жели' | hunspell -d ru_RUHunspell 1.3.2& жели 5 0: лежи жиле ели же ли желали

Тоже скормленное Яндекс.Спеллеру выдало приемлемый результат.

Пример использования для слова на русском языке и когда в системе активна русская раскладка т.к. текущая раскладка передается в Яндекс.Спеллер для определения языка проверки. Выделяем слово и нажимаем назначенный аккорд (в XFCE управление шорткатами находиться в SettingsKeyboardApplication Shortcuts).

Если слово написано корректно:

Если слово написано некорректно то высвечивается список возможных вариантов и в буфер помещается первый вариант

Касательно подноготной. Тестировалось на Arch Linux + XFCE 4.10 + Python 3.3. Для определения текущего языка в системе использую такую консольную команду

setxkbmap -print | grep xkb_symbols | awk -F'+' '{print $2}'

Насколько мне известно PyGTK для Python 3 еще нет поэтому работать с буфером обмена будем через консольную утилиту xsel. Для общения с API Яндекс.Спеллер используется Requests.

Иконки взяты с набора function.

Сорцы можно посмотреть на github'e.

Дополнительное чтиво


Оригинал статьи http://proft.me/2013/02/22/proverka-orfografii-s-pomoshyu-python-i-yandeksspe/

0 комментариев

Оставить комментарий