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

Материал из Wiki FU-Lab
Перейти к навигации Перейти к поиску

В данной инструкции будет рассмотрено создание hunspell словаря на примере удмуртского словаря hunspell. Сначала необходимо установить Hunspell:

sudo apt-get install hunspell hunspell-tools

1. Создание списка слов. Для создания словаря нужно иметь большой список слов, wordlist. Список удмуртских слов получен из Удмуртско-русского словаря.

2. Создание словаря hunspell. 2.1. Формат словаря. Словарь hunspell состоит из двух файлов:

  • первый файл с расширением .dic - здесь содержится список "корней" слов (стемов) со специальными метками, флагами.

Фрагмент файла:

бергатъяны/c
бергатылыны/a
бергатыны/a
бергес
бергозы/d
берда
кыткыны/a

т.е. сначала идет стем, "корень" слова, далее слэш "/", после слэша ставится флаг, обозначающий к какой группе аффиксов (второй файл) относится данное слово. После слэша может быть несколько флагов.

  • во втором файле (.aff) находятся группы аффиксов, обозначенные флагами.

Фрагмент файла:

SFX a Y 197 #заголовок группы, кол-во аффиксов - 197
SFX a ыны он/d [^ьй]ыны
...
SFX a ыны эмпотонтэм [дзлнстуеыаоэяиюӧӥё]ыны
SFX a ыны эмпотостэм [дзлнстуеыаоэяиюӧӥё]ыны
SFX a ыны эмъёстэ [дзлнстуеыаоэяиюӧӥё]ыны
SFX a ыны ӥ [дзлнст]ыны
SFX a ыны ӥд [дзлнст]ыны
SFX a ыны ӥды [дзлнст]ыны
SFX a ыны ӥз [дзлнст]ыны
...
SFX a ыны ид [^дзлнстьй]ыны

обозначения:

SFX - означает, что это группа суффиксов. Для создания группы префиксов надо использовать PFX
а - наименование флага
ыны - что будет убираться с конца корня слова
ӥд - сам суффикс
[дзлнст]ыны - условие, при котором будет выбираться данный суффикс. В условиях используются регулярные выражения.
Остановимся поподробнее на условиях. В квадратных скобках перечисляется буквы, одна из которых обязательно должна быть на том месте, где стоят эти скобки. В данном примере условию удовлетворяют следующие слова с окончаниями: -дыны, -зыны, -лыны ... -тыны. То есть если в файле с расширением .dic есть слова помеченные флагом "а" и заканчивающиеся на -дыны, -зыны, -лыны ... -тыны, например бергатыны/a, то будет образовываться новые слова с определенным суффиксом: бергатӥд. Далее, если в условии после открывающей квадратной скобки добавлен символ "^", то это означает, что те буквы, которые заключены в эти скобки, не должны находиться на данной позиции (происходит обратное, отрицание). Например, суффиксу с условием SFX a ыны ид [^дзлнстьй]ыны подходит слово "кыткыны/a" -> "кыткид".

Более подробную информацию о формате словаря вы можете узнать по этой ссылке: http://www.marlamuter.ru/downloads/hunspell2.pdf

2.2. Инструменты.