Создание Hunspell-словаря: различия между версиями
Vorgoron (обсуждение | вклад) Нет описания правки |
Vorgoron (обсуждение | вклад) Нет описания правки |
||
Строка 2: | Строка 2: | ||
Сначала необходимо установить Hunspell: | Сначала необходимо установить Hunspell: | ||
sudo apt-get install hunspell hunspell-tools | sudo apt-get install hunspell hunspell-tools | ||
''' | '''# Создание списка слов.''' Для создания словаря нужно иметь большой список слов, wordlist. Список удмуртских слов получен из Удмуртско-русского словаря. | ||
''' | '''# Создание словаря hunspell.''' | ||
* первый файл с расширением .dic - здесь содержится список "корней" слов (стемов) со специальными метками, флагами. | ##Формат словаря. Словарь hunspell состоит из двух файлов: | ||
* первый файл с расширением '''.dic''' - здесь содержится список "корней" слов (стемов) со специальными метками, флагами. | |||
Фрагмент файла: | Фрагмент файла: | ||
бергатъяны/c | |||
бергатъяны/c | бергатылыны/a | ||
бергатылыны/a | бергатыны/a | ||
бергатыны/a | бергес | ||
бергес | бергозы/d | ||
бергозы/d | берда | ||
берда | кыткыны/a | ||
т.е. сначала идет стем, "корень" слова, далее слэш "/", после слэша ставится флаг, обозначающий к какой группе аффиксов (второй файл) относится данное слово. После слэша может быть несколько флагов. | т.е. сначала идет стем, "корень" слова, далее слэш "/", после слэша ставится флаг, обозначающий к какой группе аффиксов (второй файл) относится данное слово. После слэша может быть несколько флагов. | ||
* во втором файле (.aff) находятся группы аффиксов, обозначенные флагами. | * во втором файле ('''.aff''') находятся группы аффиксов, обозначенные флагами. | ||
Фрагмент файла: | Фрагмент файла: | ||
SFX a Y 197 #заголовок группы, кол-во аффиксов - 197 | SFX a Y 197 #заголовок группы, кол-во аффиксов - 197 | ||
SFX a ыны он/d [^ьй]ыны | SFX a ыны он/d [^ьй]ыны | ||
... | |||
SFX a ыны эмпотонтэм [дзлнстуеыаоэяиюӧӥё]ыны | |||
SFX a ыны эмпотостэм [дзлнстуеыаоэяиюӧӥё]ыны | |||
SFX a ыны эмъёстэ [дзлнстуеыаоэяиюӧӥё]ыны | |||
SFX a ыны ӥ [дзлнст]ыны | |||
'''SFX a ыны ӥд [дзлнст]ыны''' | |||
SFX a ыны ӥды [дзлнст]ыны | |||
SFX a ыны ӥз [дзлнст]ыны | |||
... | |||
SFX a ыны ид [^дзлнстьй]ыны | |||
обозначения:<br/> | |||
SFX | '''SFX''' - означает, что это группа суффиксов. Для создания группы префиксов надо использовать PFX<br/> | ||
'''а''' - наименование флага<br/> | |||
'''ыны''' - что будет убираться с конца корня слова<br/> | |||
'''ӥд''' - сам суффикс<br/> | |||
''SFX a ыны | '''[дзлнст]ыны''' - условие, при котором будет выбираться данный суффикс. В условиях используются регулярные выражения.<br/> | ||
Остановимся поподробнее на условиях. В '''квадратных скобках''' перечисляется буквы, одна из которых обязательно должна быть на том месте, где стоят эти скобки. В данном примере условию удовлетворяют следующие слова с окончаниями: -дыны, -зыны, -лыны ... -тыны. То есть если в файле с расширением .dic есть слова помеченные флагом "а" и заканчивающиеся на -дыны, -зыны, -лыны ... -тыны, например ''бергатыны/a'', то будет образовываться новые слова с определенным суффиксом: ''бергатӥд''. Далее, если в условии после открывающей квадратной скобки добавлен символ "^", то это означает, что те буквы, которые заключены в эти скобки, не должны находиться на данной позиции (происходит обратное, отрицание). Например, суффиксу с условием '''SFX a ыны ид [^дзлнстьй]ыны''' подходит слово "кытк'''ыны'''/a" -> "кытк'''ид'''". | |||
Более подробную информацию о формате словаря вы можете узнать по этой ссылке: http://www.marlamuter.ru/downloads/hunspell2.pdf | |||
## Инструменты. |
Версия от 13:07, 17 июля 2012
В данной инструкции будет рассмотрено создание hunspell словаря на примере удмуртского словаря hunspell. Сначала необходимо установить Hunspell:
sudo apt-get install hunspell hunspell-tools
# Создание списка слов. Для создания словаря нужно иметь большой список слов, wordlist. Список удмуртских слов получен из Удмуртско-русского словаря.
# Создание словаря hunspell.
- Формат словаря. Словарь 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
- Инструменты.