Каких слов не хватает в орфографическом словаре?

Автор Рыбка Рио, 15 июня 2010, 10:57

0 Пользователи и 1 гость просматривают эту тему.

Yakov

Цитата: Трио от 17 июня 2010, 00:30
Словарь сокращений будет, наверное, работать очень быстро, т.к. у него будет пустой или почти пустой файл aff.
Есть ещё довод за разделение словаря:
Если в словаре много коротких устаревших/редкоиспользуемых слов, то существует гораздо большая вероятность, что будут пропущены слова с ошибками  (например вотум   - >  вот ум)

Рыбка Рио

Оказывается, дело не в aff всё-таки. Чем больше слов с ошибками, тем дольше работает словарь. Т.е.  как только словарь понимает, что слово написано правильно, он переходит к новому, а если слово написано неправильно, то он обыскивает весь словарь - а это дольше. Поэтому, действительно, скорость растёт нелинейно. Например, стандартный словарь с пустым файлом aff работает почти в два раза дольше , чем с нормальным файлом aff. Поэтому при увеличениии количества слов в словаре скорость работы словаря даже возрастает. Если в том макросе для проверки словарей увеличить количество ошибочных слов, то скорость снизится. С этим и связано, что словарь с одной лишь буквой А работал не так уж и быстро, а словарь "без А" работал даже чуть медленнее (на 1 секунду), хотя слов в нём было меньше на 4231 , т.к. в макросе есть несколько слов на "а".
ubuntu 12.04 + LibO3.6.0

Рыбка Рио

Цитата: Yakov от 17 июня 2010, 07:24Если в словаре много коротких устаревших/редкоиспользуемых слов, то существует гораздо большая вероятность, что будут пропущены слова с ошибками  (например вотум   - >  вот ум)
Да, тут не только скорость имеет значение. Ведь если словарь станет слишком большим, то почти все слова будут считаться правильными, ведь если, к примеру, в словаре имеются имена людей Ло, Лу, Ли, Ляо, Лиу, Лао, Лё, Лиро, Миу, Мур, Муни и т.д. (это же почти любое сочетание гласных и согласных!), то почти любая опечатка будет восприниматься как чьё-то имя. Т.е. если кто-то напишет случайно вместо предлога "В" "Ав", то это будет считаться именем Ав, и не подчеркнётся.
ubuntu 12.04 + LibO3.6.0

Рыбка Рио

#48
Эврика. Нужно рассматривать две скорости работы словаря: при полностью правильном тексте (скорость1) и при полностью неправильном тексте (скорость2). Скорость1 словаря зависит от того, как быстро словарь обнаружит, что слово написано правильно и перейдёт к следующему слову, т.е. самые частые и короткие слова типа "я", "он", "она", "не", должны стоять в этом словаре в самом начале. Короче, самые обиходные и обычные слова - в начале, и самые редкие и длинные слова - в конце. Скорость1 не зависит от количества слов в словаре, а зависит от их расположения в словаре.

Скорость2 не зависит от расположения слов в словаре, а зависит только от их количества и от файла aff. Т.е., в любом случае, словарь будет обыскан от и до и будет обнаружено, что это ошибочное слово.

Обычный текст содержит всего несколько ошибок, поэтому основной вклад в общую скорость даёт скорость1.

Кстати, что означает
TRY абвгдежз ... и т.д. в файле aff?
Означает ли это, что если слово  будет содержать букву не из данного набора, то оно будет признано ошибочным сразу?
ubuntu 12.04 + LibO3.6.0

dr.Faust

Цитата: Трио от 17 июня 2010, 09:21Скорость1 словаря зависит от того, как быстро словарь обнаружит, что слово написано правильно и перейдёт к следующему слову, т.е. самые частые и короткие слова типа "я", "он", "она", "не", должны стоять в этом словаре в самом начале. Короче, самые обиходные и обычные слова - в начале, и самые редкие и длинные слова - в конце. Скорость1 не зависит от количества слов в словаре, а зависит от их расположения в словаре.
э...
Разве словарь не должен быть упорядоченным?
OOo, что просматривает словарь по одному слову? Не верю - это идиотизм.
Скорее всего, слова перед использование словаря упорядочиваются.


Свобода информации - свобода личности!

bormant

Цитата: Трио от 17 июня 2010, 09:21Скорость1 словаря зависит от того, как быстро словарь обнаружит, что слово написано правильно и перейдёт к следующему слову, т.е. самые частые и короткие слова типа "я", "он", "она", "не", должны стоять в этом словаре в самом начале.
Простите, бред. Утверждение истинно только для случая линейного просмотра при поиске. Такой поиск очень затратен (в худшем случае нужно просмотреть весь словарь). Обычно используют бинарный поиск в сортированном списке (последовательное сокращение области поиска в 2 или несколько раз, определение, в какой части исковое слово и т.д., иногда, начиная с какого-то незначительного размера последний "хвост" обрабатывают обычным поиском (дополнительная экономия бывает или нет)).
Автору на яд. Поддержать форум.

VlhOwn

Ну, не такой уж и бред. То, что Вы, Bormant, описали, есть реализация двоичного сбалансированного дерева с балансировкой на основе лексикографического порядка.
То, о чем хотел, как мне кажется, сказать Трио, - это сбалансированное дерево с балансировкой на основе частотных характеристик слов.
Правда для этого понадобится еще и частотный словарь, в котором тоже искать надо :) Про функциональные способы вычисления частотных характеристик слова я не слышал.

Рыбка Рио

#52
Да, похоже, bormant, вы правы. От порядка слов не зависит (что слова на я, что слова на а, одинаково быстро находит).

Строка
ЦитироватьTRY оаитенрсвйлпкьыяудмзшбчгщюжцёхфэъАВСМКГПТЕИЛФНДОЭРЗЮЯБХЖШЦУЧЬЫЪЩЙЁ

Не знаете зачем нужна эта строка?
ubuntu 12.04 + LibO3.6.0

bormant

#53
Не знаю. Предположу, что именно в этом порядке пытаются подставлять буквы для получения вариантов замены неправильного слова.

UPD:
Цитата: man 4 hunspellOPTIONS FOR SUGGESTION
TRY characters
Hunspell can suggest right word forms, when those differs from the bad form by one TRY character. The parameter of TRY is case sensitive.
http://pwet.fr/man/linux/fichiers_speciaux/hunspell
Автору на яд. Поддержать форум.


Рыбка Рио

Оказывается, время, которое тратится на поиск ошибочного слова, зависит от длины слова (почти линейно).

[вложение удалено Администратором]
ubuntu 12.04 + LibO3.6.0

Yakov

Цитата: Yakov от 15 июня 2010, 23:49
Могу предложить ещё один словарь http://sisyphus.ru/ru/srpm/Sisyphus/ispell-ru-rk.
Сборка для OpenOffice  переделана из формата ispell, распространяется под GPL v2.
Недостаток - какая-то ошибка в файле аффиксов, из- за которой очень многие слова подчёркиваются как ошибочные!
Причина была в  том, что Hunspell не понимает файл аффиксов Ispell
После конвертации всё замечательно работает!!!  ;)

[вложение удалено Администратором]

PiVV

Дорогой товарищ Trio!
Давайте не будем изобретать велосипеды и открывать открытые двери. Почитайте документацию по Hunspell (хотя бы устаревший перевод на mozilla.russia.org). А то вы своими откровениями по поводу принципов работы движка проверки орфографии просто пугаете.

P.S. На прошлом "самом дружелюбном" форуме я уже спрашивал - кто-нибудь знает как узнать версию движка hunspell, которая используется в установленной версии OOo?

prof-alex

Цитата: PiVV от 17 июня 2010, 20:28
кто-нибудь знает как узнать версию движка hunspell, которая используется в установленной версии OOo?
Видимо спрашивать у сборщиков. Что-то я libhunspell.so в ООо не нашёл, видимо собирают статически.

«Студентов, ранее изучавших Бейсик, практически невозможно обучить хорошему программированию. Как потенциальные программисты они подверглись необратимой умственной деградации» Э. Дейкстра

Рыбка Рио

#59
Цитата: PiVV от 17 июня 2010, 20:28На прошлом "самом дружелюбном" форуме я уже спрашивал - кто-нибудь знает как узнать версию движка hunspell, которая используется в установленной версии OOo?
В DEV300m83 hunspell-1.2.9, а в OOO320m18 hunspell-1.2.8.
(http://svn.services.openoffice.org/opengrok)
ubuntu 12.04 + LibO3.6.0