6 апреля 2010 в 15:55

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


С самого момента появления проверки орфографии в «обычных» программах (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: Добавлены словари: русско-англо-французский и русско-англо-франко-итальянский. Скачать любой из словарей можно здесь.
+62
57

комментарии (56)

+7
Winter_mute, #
Стыдно признаться, но только из вашей статьи я узнал, что существует стандарты (как я понял myspell/hunspell )на словари для проверки орфографии, и что одни и те же словари можно использовать и в FF, в другом софте. Вы не могли бы накидать по-больше ссылок об этом? Ну или в статью 3 копейки добавить на эту тему.
+1
dmitskevich, #
Могу поделиться только ссылкой на описание формата: pwet.fr/man/linux/fichiers_speciaux/hunspell
+1
bondbig, #
У меня тоже давно мысль гуляла разобраться с этим вопросом, спасибо вам за проделанную работу! Жаль поблагодарить могу лишь комментарием!
0
G_Z, #
Если словари объединены, не совсем понятно, в чём отличие: en-ru(yo).zip от en-ru(ie).zip?
0
dmitskevich, #
Очевидно, в том, что в первом «русская половина» — «с ё» (будет ругаться на «еще», «еж» и т.д.), а во втором — «без ё» (подсветит ошибки в «ещё», «ёж» и пр.)
0
G_Z, #
А, это указание на «ё».
Благодарю, вопрос снят.
НЛО прилетело и опубликовало эту надпись здесь
0
Quiz, #
Да, с Вашим утверждением и не поспоришь, пожалуй…
+1
melksoft, #
В Chrome (по крайней мере в Beta для Linux) словари по дефолту мультиязычные.
+1
RussianNeuroMancer, #
В любой ОС.
0
spqer, #
Уверены?


Только что на последнем хроме в osx. Может что-то надо включить? 0_о
0
RussianNeuroMancer, #
Странно, судя по версиям для Win и Lin всегда должны проверятся английский и выбранный пользователем в настройках язык. Проверьте на других примерах, и если всё ещё будет проверять только один язык — пишите сюда code.google.com/p/chromium/issues/entry?template=Defect%20on%20Mac%20OS
0
tenshi, #
они без ё >:-E
+2
dmitskevich, #
У хрома другой формат словарей — двоичный BDict — и работать с ним я не умею :(
0
Rusfetische, #
жаль конечно, но у вас все впереди!
+2
Quiz, #
Спасибо Вам за проделанную работу. Действительно, очень полезная вещь.
+3
barkalov, #
Спасибоспасибоспасибоспасибо!

Непроверка английских слов в фаерфоксе была для меня проблемой из разряда тех, что жутко бесят но, принимаются за данность, и даже не приходит в голову искать решение.
+4
yrygvay, #
А как насчёт: сделать это готовым решением для FF и выложить его официально через репозитарий их же?
–1
Quiz, #
Всё таки до готового решения это нужно ещё немного обработать напильником.
0
KL7, #
Для firefox могу предложить вот этот Русско-Английский словарь. Мне его хватает, но вот подсказки с правильными вариантами оставляют желать лучшего.
Ну и слова firefox в него надо ручками добавлять =)
0
dmitskevich, #
Это и есть тот самый «Firefox-овский» словарь, на который ссылка в начале топика
(см. ссылку «Описание» в упомянутом посте на forum.mozilla-russia.org)
–1
XaBoK, #
Вопросик с надеждой: Ведь вы правда сделали словари и правила в юникоде и я не увижу кучу вопросиков вместо русского текста в этих файлах?
0
dmitskevich, #
файлы сохранены в UTF-8
–1
XaBoK, #
Скачал. Открыл en-ru(yo).aff. Пол файла выглядит примерно так: SFX 46 ???????????? ???ƒ??????
0
dmitskevich, #
Чем открывали-то? Кодировка правильно выбрана/авто-определилась? Должна быть UTF-8. (Notepad, начиная с WinXP — и тот её детектит правильно)
0
XaBoK, #
Ноутпадом в WinXP и открывал. Сейчас копаюсь в компе — на ноутбуке в Win7 открылось нормально, значит проблема у меня, а не в файле.
0
Kyarginski, #
Супер!
Работает!
Спасибо за проделанную работу — именно этого и не хватало мне в Opera
0
A1MaZ, #
А есть максимально полный словарь, где будут и слова с Ё, и без Ё тоже?
0
dmitskevich, #
см. ссылку на forum.ru-board.com в начале поста — там 8 словарей объединены в один, правда, не очень аккуратно

(нормальный русский словарь «без Ё» всё ещё в розыске)
0
A1MaZ, #
Я им и пользуюсь давно, просто в топике написано, что там коряво склеилось…
0
dmitskevich, #
Залил словарь, допускающий оба варианта написания: с Ё и с Е (+ английский, конечно) — см. архив en-ru.zip
0
A1MaZ, #
Благодарю.
+1
VIST, #
Большое спасибо, отличная статья. Настроил Opera, FireFox и даже QIP. Хоть у Вас в статье про QIP не слова, но действовал по как описано, к примеру для Оперу, только лишь скачал плагин для QIP который поддерживает проверку орфографию. И кинул туда ваши словари. Можно добавить в статью.

Ещё раз большое спасибо за словари!
0
dimag0g, #
А у Вас случайно нет планов прикрутить русский к словарям других языков? И ещё — не могли бы Вы дать ссылку на программу, которой можно склеивать словари?
0
Antigluk, #
Насколько я понял, они текстовые. Поэтому хоть блокнотом.
0
dimag0g, #
Ну, в них какие-то правила, заголовки идут. Точно можно всё в кучу и в любом порядке?
0
dmitskevich, #
Как написано в посте — присылайте «заявку» на sabio [at] tut [точка] by Желательно сразу со ссылками на «понравившиеся» версии словарей. (и там же, кстати, написано, что языков не обязательно должно быть только два — можно попробовать сделать англо-франко-русский словарь, например)
Ссылки на программу нет — это «страшный» скрипт на Python который пока не готов ко всеобщему доступу.
0
Svobodniy, #
Сразу стоит оговориться насчёт словаря «без ё». В качестве «русской половины» для него пришлось использовать словарь из OpenOffice.org 2.x — поскольку все остальные словари «без ё», что мне попадались, были сразу и «с ё», и «без ё».

А нельзя взять словарь с Ё, сделать массовую замену Ё на Е и удалить дубли?.. Или я чего-то не понимаю?
0
dmitskevich, #
По идее, действительно можно так и сделать. Там только есть тонкость в том, что считать дублями. Попробую на днях.
+1
bit4ix, #
Спасибо, давно искал такое решение
0
ruzzz, #
А можно сам скрипт?
0
dmitskevich, #
… это «страшный» скрипт на Python который пока не готов ко всеобщему доступу
0
Evengard, #
Мда… Тут другое нужно… Чтобы поле как то распознавало блоки текста на англ и на рус, и использовали свои правильные словари для каждого из блоков
0
dmitskevich, #
Так ведь именно это такой словарь и даёт (особенно если учесть, что алфавиты не пересекаются). Единственный (теоретический) недостаток в том, что работать такой «комбинированный» словарь может медленнее, чем два раздельных словаря с предварительным определением языка. Но кажется мне, что если это «определение» делать более-менее универсальным (а не ограничиваться только русским и английским), то и скорость работы вполне может отличаться в другую сторону.
+1
DnV, #
Было бы круто правильно склеить английский с русским е+ё. Всё-таки по правилам языка точки допускается опускать, значит хотелось бы не считать это ошибкой.
0
dmitskevich, #
Залил словарь, допускающий оба варианта написания: с Ё и с Е (+ английский, конечно) — см. архив en-ru.zip
0
DnV, #
Спасибо, буду использовать.
0
G_Z, #
> Распаковать из архива файлы .aff и .dic в папку dictionaries в C:\Program Files\Firefox.

Там в архиве ещё есть .ini-файл с названием словаря.

> И после перезапуска выбрать словарь в контекстном меню многострочного поля ввода.

Распаковал, положил в dictionaries-каталог каталога, где установлен FF 3.6.3.
После перезапуска никаких дополнительных языков в выборе того, какой язык использовать для проверки контекстного меню не появилось.

Что я сделал неверно?
0
dmitskevich, #
Если используется словарь «en-ru(yo)» (или «en-ru(ie)»), то Firefox определяет его и показывает в списке, как просто «English» (стандартный только-английский словарь там обозначен «English / United States») — может, в этом дело?
Если использовать словарь «en-ru», то в меню он будет обозначен «English / Russian Federation» —
(ini-файл c названием использует только Опера)
0
G_Z, #
Верно, словарь «Английский / США» есть, не принял во внимание, считая, что название будет специфическое.
Спасибо.
0
Murz, #
Супер, спасибо за словари!

А можете оформить их для Firefox как Extension? Простым юзерам было бы намного проще их устанавливать — в пару кликов, не нужно ковыряться в файловой системе.

А если и на https://addons.mozilla.org/ разместить их — то не только хабравчане найдут его, и кучи народа будут с радостью юзать и посылать потоки благодарности автору! :)

Пример таких экстеншенов со словарями можно посмотреть тут:
https://addons.mozilla.org/hu/firefox/addon/6775/
forum.mozilla-russia.org/viewtopic.php?id=15316#message370528

Но они на новые версии Firefox без бубна не ставятся, да и не обновляются :(
0
dmitskevich, #
Пока осуществляется поиск более-менее адекватного хостинга вместо почившего с миром drop.io, русско-английские словари доступны здесь:

en-ru(yo).zip (746.71 KB)
www.multiupload.com/8659DNM7GU

en-ru.zip (777.5 KB)
www.multiupload.com/AUW7DVWTL0
0
domage, #
Спасибо большое!
0
LevaniD, #
есть ли возможность перезалить?
Никакие ссылки не работают?
0
LevaniD, #
Нашел здесь sabio.at.tut.by/en-ru/
0
savostin, #
Ссылки в топике умерли. Работает эта:
ftp.mozilla-russia.org/dictionaries/ru-en_spell_dictionary.xpi

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Все самое главное для очередного «убийцы Angry Birds»
Смертная казнь за копирование
Cуперкомпьютер за 1 млрд евро: симуляция мозга человека