6 April 2010

Русско-English или несколько слов о проверке орфографии двух языков сразу

Self Promo

С самого момента появления проверки орфографии в «обычных» программах (Firefox, Miranda, Opera) меня напрягала необходимость постоянного переключения словаря с русского на английский и обратно.

Для Firefox и Miranda есть (полу)решения, которые сами переключают словарь в зависимости от текущей раскладки клавиатуры. Уже хоть что-то, но всё равно не очень удобно — то одна, то другая половина слов остаются «красными» и затрудняют поиск настоящих ошибок.

Идеальным решением был бы словарь, объединяющий в себе орфографию обоих языков. И такой словарь был создан одним из пользователей Firefox (http://forum.ru-board.com/...). Но изучив его повнимательнее, я понял, что мне он не нравится (подробности см. ниже).

И вот, наконец, у меня дошли руки заняться этим вопросом вплотную. Повозившись пару дней, я написал скрипт, который объединяет два любых myspell/hunspell-словаря в один, комбинированный.

Результаты его работы для русского и английского можно скачать здесь: http://drop.io/spell_dict

Для данных словарей использовались последние версии словарей из OpenOffice.org 3.x

Сразу стоит оговориться насчёт словаря «без ё». В качестве «русской половины» для него пришлось использовать словарь из OpenOffice.org 2.x — поскольку все остальные словари «без ё», что мне попадались, были сразу и «с ё», и «без ё».

Но этот словарь не производит впечатление полноценного — уж как-то совсем мало там правил: в словаре «с ё» — почти 1360, в этом словаре — всего около 120. А вот зато слов почти в 3 раза больше (хотя, по идее, должно быть наоборот). Так что использовать комбинированный словарь «без ё» я бы не рекомендовал.
(кстати, если у кого есть ссылка на более удачный русский словарь «без ё» — поделитесь, исправим :) ).

Хочу ещё!


Теоретически, в эти словари можно добавить и любые другие языки, чтобы получить ещё более «универсальные» комплекты. Французский? Белорусский?..

Но, как показала практика, использование близких языков (например, английского и немецкого) нежелательно — многие ошибки будут оставаться незамеченными: Was is das?

Если у кого есть пожелания касательно расширения набора — пишите. Присылайте ссылки на выбранные версии словарей, описывайте «конфигурацию», и я постараюсь собрать соответствующие «комплекты». :)

Как установить


Для Opera 10.x


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

Для Firefox


Распаковать из архива файлы .aff и .dic в папку dictionaries в C:\Program Files\Firefox. И после перезапуска выбрать словарь в контекстном меню многострочного поля ввода.

Для Miranda


Вам понадобится плагин spellcheck.

Если вы уже установили комбинированный словарь для Firefox, достаточно в настройках плагина установить галку «Use dictionaries from other programs». В противном случае создайте папку dictionaries рядом с miranda.exe и распакуйте туда .aff и .dic файлы.

После этого нужно перезапустить Miranda и выбрать нужный словарь в выпадающем списке (плагин определяет его как «en_ru(yo)», в то время, как стандартный английский словарь будет обозначен как «English (United States) [en_US]»). Не забудьте снять галку «Use input language to select dictionary».

Для Pidgin, gedit (и других программ на базе GtkView / enchant)


Поскольку удобного способа выбора активного словаря здесь нет (как вариант, можно запускать эти программы, предварительно установив переменную окружения $LANG), то оптимальнее всего, подменить используемые по-умолчанию файлы .aff и .dic.

Для Ubuntu, например, они находятся здесь: /usr/share/myspell/dicts. Распаковываете в эту папку .aff и .dic из скачанного архива, делаете резервную копию en_US-файлов (или ru_RU, если у вас в Ubuntu выбрана русская локаль) и переименовываете новые файлы в en_US.

P.S. Google Chrome использует словари в другом формате — BDic

Что не так с «Firefox-овским» комбинированным словарём


Во-первых, в нём объединены словари «с ё» и «без ё», а я хочу, чтобы в «еще», «еж» и пр. подсвечивались ошибки.

А во-вторых, из-за того, что объединялось такое большое число словарей и при этом недостаточно внимания уделялось обработке внутренних структур файлов, одному и тому же идентификатору в комбинированном словаре достался гораздо более широкий набор правил.

Вот несколько примеров.

В исходном английском словаре для слова «vive» были следующие правила:

SFX Z 0 rs e
SFX Z y iers [^aeiou]y
SFX Z 0 ers [aeiou]y
SFX Z 0 ers [^ey]

Формат у них такой: SFX <идентификатор> <отрезать> <приклеить> <условие>

Т.е. для первой строки: если слово заканчивается на 'e', отрезать от него «ничего» и приклеить 'rs' — получится новое правильное слово (vivers).

А в «Firefox-овском» слову «vive» достались:

SFX Z 0 ers [aeiou]y
SFX Z 0 ey [aiouy]
SFX Z 0 rs e
SFX Z 0 y [aeiouy]e
SFX Z e y [^aeiouy]e

(… и ещё 19 разнообразнейших правил)

И здесь уже (см. строчки выделенные жирным) правильными будет признано также слово: vivy

Ещё, например, для какого-нть слова, заканчивающегося на 'y', исходные правила дают варианты: -iers или -yers (в зависимости от того, что перед 'y'), а новый набор правил — правильное -yers и какое-то новое -yey (а вот -iers где-то потерялся). И т.д.

(автор этого поста нуждается в инвайте — sabio [at] tut [точка] by)

UPD: Добавлены словари: русско-англо-французский и русско-англо-франко-итальянский. Скачать любой из словарей можно здесь.
Tags:проверка орфографиисловариOperaFirefoxMirandaPidgingeditорфографияspell checker
Hubs: Self Promo
+62
1.3k 55
Comments 56