Создание словаря Hunspell

Автор dziglo, 8 июля 2022, 20:52

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

gabix

Цитата: mikekaganski от 29 августа 2022, 11:57установить словарь любого языка из имеющихся расширений, и поменять его файлы на свои.

Для целей разработки (особенно совершенно нового языка) — самое то. Только язык подойдёт не любой, а той же системы письменности, и в данном случае выбор не очень велик. Ну, скажем, болгарский.

dziglo

А что за кодировка странная бывает у файлов aff и dic?
Вот пример:
примеры
Скачал я их на сайте GitHub, думал, сам методом тыка попробую разобраться.
Вроде aff и dic это обычные текстовые файлы.

mikekaganski

Цитата: dziglo от 29 августа 2022, 15:21Скачал я их на сайте GitHub

:D
Для скачивания с GitHub пользуйтесь ссылкой Raw на соответствующей странице, а иначе вы не файл скачиваете, а всю страницу GitHub со всеми HTML-причиндалами.
С уважением,
Михаил Каганский

dziglo

Цитата: mikekaganski от 29 августа 2022, 16:00Для скачивания с GitHub пользуйтесь ссылкой Raw

А как этим пользоваться? Что такое ссылка Raw? )

mikekaganski

Как-то так.
С уважением,
Михаил Каганский

dziglo

Цитата: gabix от 29 августа 2022, 10:28Конкретно про «бахъуыр-хъуыр» не скажу, а вот «Усть-Луга» или «пресс-релиз» в LibreOffice обрабатываются должным образом.

Это потому что в вашем словаре в LibreOffice внесены отдельные слова «Усть», «Луга» (или «луг»), «пресс» и «релиз».

Вот например, в словаре, созданном Yakov'ом, который обсуждается здесь на форуме:
тема на форуме forumooo.ru

есть слово «возрастно-половой»:



и там же есть отдельно слово «половой», а вот слова «возрастно» нет, ну и соответственно Hunspell не видел сложного слова с дефисом, а рассматривает две части по отдельности:




Опять же оговорюсь — это я тестировал в Np++. Может в Либреофисе слово «возрастно» не подчеркивается, тогда видимо, это свойство самого ЛОфиса и напрямую к Hunspell это не имеет отношения. Мне так кажется.

gabix

#66
Цитата: dziglo от 30 августа 2022, 16:00Это потому что в вашем словаре в LibreOffice внесены отдельные слова «Усть», «Луга» (или «луг»), «пресс» и «релиз».

В моём словаре нет ни «Усть» (это вообще не может быть отдельным словом), ни «релиз».

Цитата: dziglo от 30 августа 2022, 16:00это я тестировал в Np++.

Опять же, Вы вольны выбирать себе инструмент по вкусу. Но тогда и не следует оффтопить тут, разбирайтесь на соответствующем форуме.

dziglo

ЦитироватьВ моём словаре нет ни «Усть» (это вообще не может быть отдельным словом), ни «релиз».

Вы не могли бы поделиться ссылкой на ваш словарь, если он, конечно, в свободном доступе?

gabix

Пожалуйста, только вряд ли Вы найдёте в нём что-то интересное, он довольно примитивный.

https://www.upload.ee/files/14462718/RU-RU-YO.7z.html

BadmHaalg

Доброго времени суток, уважаемые форумчане! Снова прошу помощи по созданию Hunspell словарей.
В данный момент работаю над словарем для калмыцкого языка. Изначально нужен он был сугубо для конфигурации полнотекстового поиска в postgres, теперь же вот захотелось вкусить и иных прелестей этой замечательной технологии. Но увы и ах, что-то не выходит.
Итак, установил cli hunspell отсюды https://github.com/hunspell/hunspell, осваиваю, НО:
1. команда analyze прекрасно работает с русским и английским со словарем, но с моим что-то не так - ошибок вроде не выдает, но "распознает" только начальные формы (которые есть в файле .dic). Правила из .aff почему-то не хочет применять, говорит что слова просто нет.
2. команда wordforms для любых словарей(калмыцкий, русский, английский) выдает "awk: cannot open /tmp/wordforms.aff (No such file or directory)
Невозможно открыть дополнительные или словарные файлы словаря «/tmp/wordforms».
"

3. munch выдаёт Error building hash tables для любых словарей также (калмыцкий, русский, английский)
4. unmunch калмыцкий словарь вроде начинает парсить, но крашится с большим количество Error: too many entries (да, у меня в словаре очень много похожих аффиксов, может в этом дело)

Словарики в данный момент выглядят вот так: https://github.com/BadmHaalg/hunspell_xalmg/tree/initial/hunspell

Может быть я изначально что-то в словарях делаю не так, не так проектирую правила? Не нашел никакой информации о best practices, скажем так.
(Хотя в postgresовская ts_lexize отрабатывает прекрасно и как задумано, словарь и конфигурация поиска создаются без проблем, начальные формы определяются...)
А может я просто неправильно установил hunspell?? (Но тесты все прошли, ни единой ошибки... На других словарях вроде более-менее отрабатывает как ожидается)

В общем, буду рад любому совету, критике и суровой правде!) Подскажите хотя бы в какую сторону думать...



BadmHaalg

#70
Доброго времени суток! Итак, промучался я со своими hunspell словариками какое-то время, но все же старым добрым эмпирическим тыком удалось найти кое-какие общие рекомендации чтобы все работало. Решил поделиться, может кому понадобиться.
Для начала вспомним как выглядят правила в файле .aff:

SFX B Y 1 (шапка)
SFX B 0 ed [^y] (само правило)

(шапка)
SFX - указание, что правила для суффиксов
B - название правила (флаг, может быть составной или численный)
Y - соединяются ли префиксы и аффиксы
1 - количество правил в группе

(само правило)
SFX, B - см. выше
0 - отсекаемая часть
ed - присоединяемая часть
[^y] - условие (к какому слову присоединяется)

1. Как оказалось, количество правил внутри группы должно быть обозначено ТОЧНО (я почему-то думал можно указывать приблизительное). Иначе эта группа правил не распознается. В случае, если правил больше, чем указано, umnunch при парсинге данной группы будет выдавать Error: too many entries.
2. Не знаю почему, но чтобы все нормально работало, отсекаемая часть, присоединяемая часть и условие должны разделяться только ОДИНОЧНЫМ пробелом, как бы некрасиво и неровно это ни выглядело. Если хочу как-то выровнить табуляцией или несколькими пробелами - правило перестает распознаваться. С помощью unmunch кстати можно увидеть эти "неотформатированные" строки с правилами - строка будет здесь состоять из неправильной словоформы и условия. В обычном же случае(т.е. когда все нормально отформатировано) unmunch выводит только слоформы и никакой дополнительной информации не должно быть.
3. wordforms работает почему-то только тогда, когда вызываешь её из той же папки, где лежат файлы словаря. Иначе выдает "Невозможно открыть дополнительные или словарные файлы словаря «/tmp/wordforms»."

Может для кого-то это простые и очевидные вещи или может все это даже явно написано в документации - увы, я пришел кривым путем к тому, чтобы наконец словари заработали как ожидалось)