Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

15 Май 2021, 08:57 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Здесь можно поблагодарить участников форума Улыбка
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: « 1 2 3 4 5 6 7 8 9 »   Вниз
  Печать  
Автор Тема: Конвертация словаря в формат Hunspell  (Прочитано 95967 раз)
0 Пользователей и 1 Гость смотрят эту тему.
yup
Участник
**
Offline Offline

Сообщений: 12


« Ответ #105: 31 Январь 2021, 04:53 »

В официальной документации Hunspell сказано, что строки аффиксов должны иметь вид:
Цитата:
PFX flag stripping prefix [condition [morphological_fields...]]
SFX flag stripping suffix [condition [morphological_fields...]]
где поля stripping и prefix/suffix являются обязательными, а отсутствие соответствующего значения обозначается нулём:
Цитата:
Zero stripping or affix are indicated by zero.

Тем не менее, в выложенном здесь словаре присутствует сотня строк вида:
Код:
SFX 6 ый  .
SFX 10 0  .
SFX 11 0  .
SFX 18 а  .
...
SFX 2503 ый  .
SFX 2513 ный  .
(На всякий случай, во вложении файл (UTF-8) с полным списком.)

По идее, в этих строках точка (условие) должна считаться значением суффикса.
Потому и вопрос: это ошибка при создании словаря, или код Hunspell такое нормально воспринимает?

* AffErr.txt (1.27 Кб - загружено 256 раз.)
« Последнее редактирование: 31 Январь 2021, 05:06 от yup » Записан
Yakov
Администратор
**
Offline Offline

Сообщений: 2 578


WWW
« Ответ #106: 31 Январь 2021, 11:38 »

код Hunspell такое нормально воспринимает?
Это типовая запись, даже в словаре Hunspell (предустановленном в LibreOffice) для локали en_US используется точка.
Записан
mikekaganski
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 2 080


« Ответ #107: 31 Январь 2021, 12:57 »

man 4 hunspell:

Цитата:
Zero condition is indicated by dot. Condition is a simplified, regular expression-like pattern, which must be met before the affix can be applied. (Dot signs an arbitrary character. ...
Записан

С уважением,
Михаил Каганский
yup
Участник
**
Offline Offline

Сообщений: 12


« Ответ #108: 31 Январь 2021, 13:45 »

Граждане, кажется, вы меня не поняли. Я не о том, что точка не нужна (хотя, судя по тому, что в описании синтаксиса строки она стоит в квадратных скобках, её, действительно, в конце лучше не ставить - русский радист это явно знал Улыбка).

Я о том, что если понимать документацию буквально, то вместо пустой отбрасываемой части слова (stripping) или пустого аффикса (prefix/suffix) должен стоять ноль. А в указанных строках нули вместо отбрасываемых частей присутствуют, а нулей вместо аффиксов нет.

Взгляд на то же сбоку: если точку вместо пустого окончания всегда ставить, то в строке будет пятый элемент, а в этих подозрительных строках элементов только четыре.
« Последнее редактирование: 31 Январь 2021, 14:02 от yup » Записан
Yakov
Администратор
**
Offline Offline

Сообщений: 2 578


WWW
« Ответ #109: 31 Январь 2021, 13:59 »

По идее, в этих строках точка (условие) должна считаться значением суффикса.
Точка в указанном примере не является значением суффикса!!!
Точка - это условие, которое применяется к основе слова из основного словаря. Если стоит точка - то строка в описании суффикса применяется к любому слову.
Записан
Yakov
Администратор
**
Offline Offline

Сообщений: 2 578


WWW
« Ответ #110: 31 Январь 2021, 14:02 »

https://mozilla-russia.org/projects/dictionary/hunspell.html#affix_creation
Записан
yup
Участник
**
Offline Offline

Сообщений: 12


« Ответ #111: 31 Январь 2021, 14:13 »

Точка в указанном примере не является значением суффикса!!!
Точка - это условие, которое применяется к основе слова из основного словаря.

Смотрим официально заявленный синтаксис:
Цитата:
PFX flag stripping prefix [condition [morphological_fields...]]
SFX flag stripping suffix [condition [morphological_fields...]]

Согласно ему, первые 4 элемента строки (?FX, flag, stripping и affix) являются обязательными. Поэтому вместо нулевых stripping или suffix полагается ставить 0 - "свято место пусто не бывает".

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

Собственно, unmunch так и делает - выдаёт варианты слов, использующих данные правила, с точкой в конце.

Кстати, описание по ссылке жутко устарело (и содержит несколько хоть и не очень существенных, но ошибок). Если хотите, выложу свой перевод нынешней версии этой документации.
« Последнее редактирование: 31 Январь 2021, 14:39 от yup » Записан
Yakov
Администратор
**
Offline Offline

Сообщений: 2 578


WWW
« Ответ #112: 31 Январь 2021, 14:46 »

Точка отсекается Hunspell, так что на проверке это не сказывается.
А, вообще, видимо в следующем релизе словаря я внесу изменения в файл аффиксов,
так как там есть строчки и с "0" и с " " (пробелом), заменю пробелы на 0 для привидения файла в единообразный вид.

« Последнее редактирование: 31 Январь 2021, 14:51 от Yakov » Записан
yup
Участник
**
Offline Offline

Сообщений: 12


« Ответ #113: 31 Январь 2021, 15:24 »

Точка отсекается Hunspell, так что на проверке это не сказывается.
Только что проверил с помощью именно Hunspell: из тройки строк
Цитата:
благовещавшийся
благовещавш
благовещавш.
в которой две последние очевидно являются неправильными, последняя была расценена как одно правильное слово!

А, вообще, видимо в следующем релизе словаря я внесу изменения в файл аффиксов
Заодно попробуйте и точки в конце всех строк аффиксов убрать. Судя по документации, точку вместо пустого условия нужно ставить только в случае, когда в строке есть ещё и морфологические параметры. Если их нет, то точка не нужна. В таком случае её удаление из нынешнего словаря, если повезёт, может дать небольшой выигрыш, но если и нет, то в любом случае ничего не ухудшит
« Последнее редактирование: 31 Январь 2021, 15:30 от yup » Записан
Yakov
Администратор
**
Offline Offline

Сообщений: 2 578


WWW
« Ответ #114: 31 Январь 2021, 16:00 »

В будущем планируется добавить морфологические параметры, поэтому точки должны остаться.
Записан
yup
Участник
**
Offline Offline

Сообщений: 12


« Ответ #115: 31 Январь 2021, 23:34 »

Забыл спросить: пополнением новых версий словаря собственно словами занимаетесь вы сами, или массив слов каждый раз берётся готовым у АОТ?

А то я в файле .dic очевидные неправильности пообнаруживал и теперь не знаю, кому о них сообщать.
Записан
yup
Участник
**
Offline Offline

Сообщений: 12


« Ответ #116: 1 Февраль 2021, 05:56 »

И ещё свежие сведения: я по ходу написания-тестирования свей программулины обнаружил, что в файле аффиксов внутри классов суффиксов содержится в общей сложности более 5000 дублей - а это больше трети от нынешнего количества суффиксов.

Думаю, от их удаления скорость проверки может хорошо так подрасти.
« Последнее редактирование: 1 Февраль 2021, 06:02 от yup » Записан
yup
Участник
**
Offline Offline

Сообщений: 12


« Ответ #117: 4 Февраль 2021, 17:39 »

Хоть это и не входило в первоначальные планы, но я написал утилиту для оптимизации словаря (на JavaScript под Windows Script Host). Программа ищет и удаляет:
1. Правила, которые ничего не делают.
2. Дубликаты правил внутри классов правил.
3. Дубликаты классов.

В результате её работы число правил в нынешнем russian-aot.aff уменьшается на 5555 штук (с 13712 до 8157).

Программкой поделиться?
« Последнее редактирование: 4 Февраль 2021, 17:43 от yup » Записан
yup
Участник
**
Offline Offline

Сообщений: 12


« Ответ #118: 23 Март 2021, 19:29 »

Поскольку словарь здешний заявлен как "Орфографический словарь для русского языка (только "Ё")", то решил я посмотреть, насколько корректен он в части "(только "Ё")". Вооружился Hunspell-ом и несколькими самописными программами, обложился академическими словарям, изданными Институтом русского языка, и начал...

Промежуточный итог: около 2000 неправильных слов (т.е., либо слово должно быть в словаре в двух написаниях, а есть только в одном, либо наоборот - должно быть в одном написании, а есть в обоих).

И это окончен лишь первый этап работы, на котором анализировались только слова, непосредственно находящиеся в файле словаря. Сейчас идёт второй этап, на котором анализируются слова, производные от словарных. Судя по накопленной статистике, ошибок найдётся в разы больше, чем на первом этапе  - во многом потому, что правила из файла аффиксов образуют уйму абсурдных конструкций ("сволочлённых", "утончённейшьна" и т.п.)

Файлы со списками слов, найденных на первом этапе, выложить?
Записан
yup
Участник
**
Offline Offline

Сообщений: 12


« Ответ #119: 10 Апрель 2021, 10:51 »

Yakov, пожалуйста, обратите внимание: Ваш конвертер словарей работает неправильно. Он в конце каждого, абсолютно каждого, класса суффиксов добавляет лишнее правило. Совершенно постороннее, из другого класса. Именно потому и возникают слова вроде приведённых в моём предыдущем сообщении.
А также этот конвертер в каких-то ситуациях целиком теряет классы. Например, класс 12 используется в словаре, но отсутствует в файле аффиксов.

И ещё он не всегда учитывает, что фамилии, имена, отчества, географические названия и прочие имена  собственные в словарь Hunspell надо писать с большой буквы, и пишет их с маленькой.
« Последнее редактирование: 11 Апрель 2021, 03:15 от yup » Записан
Страниц: « 1 2 3 4 5 6 7 8 9 »   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!