Как стать автором
Обновить

Использование статистических методов для генерации парадигмы по каноническим формам новых слов

Время на прочтение3 мин
Количество просмотров915
Вот и настал момент, когда можно будет поговорить об интересном методе заполнения базы/словаря модуля морфологии с использованием данных уже имеющихся в нём и статистических методов.

Имеем:
  1. Базу Зализняка из 94 тысячcлемми почти 3 миллионових словоформ
  2. Базу из 52 тысячи новых слов с информацией об их грамматической принадлежности (род, число, одушевлённость и прочее…)
  3. Интерпретатор Ruby
  4. Некоторое кол-во свободного времени после работы
  5. Необходимость дополнить базу модуля парадигмами новых слов (имеются лишь их канонические формы)


Попробуем использовать статистические методы (или кто-то может сказать псевдостатистические):

1. Перво-наперво формируем базу моделей окончаний парадигм для каждого слова из имеющейся базы. Приведённые примеры данных наверно будет нагляднее любых объяснений. Записи о связи между канонической формой слова и моделью окончаний выглядят так:
…
аббатский|15|<…всякая грамматическая информация для канонической формы слова…>
аббатство|20|<…всякая грамматическая информация для канонической формы слова…>
…

тут 15 и 20 – номера моделей окончаний.
Записи моделей окончания выглядят так:
…
---
15
ий|<…всякая грамматическая информация для канонической формы слова…>
ая|<…всякая грамматическая информация для канонической формы слова…>
ое|<…всякая грамматическая информация для канонической формы слова…>
ие|<…всякая грамматическая информация для канонической формы слова…>
ого|<…всякая грамматическая информация для канонической формы слова…>
ой|<…всякая грамматическая информация для канонической формы слова…>
ого|<…всякая грамматическая информация для канонической формы слова…>
их|<…всякая грамматическая информация для канонической формы слова…>
ому|<…всякая грамматическая информация для канонической формы слова…>
…
и|<…всякая грамматическая информация для канонической формы слова…>
---
…

2. После этого начинаем повторный анализ имеющихся слов на предмет зависимости модели окончаний от структуры слова. Для этого производим разбиение на слоги (говорить о корректности работы этого алгоритма я пока не могу, но для простых случаев он более-менее работает — всякие варианты типа «ландскнехт» рассматривать не будем). Главное, чтобы один и тот же алгоритм применялся в обеих фазах алгоритма: анализе имеющихся слов и генерации новых.

Разбиение на слоги вместо использования n-grammбыло выбрано намеренно, так как, по моему мнению, это более естественно выражает зависимости в русском языке.
Итак, разбиваем слово на слоги, нумеруем их в обратном порядке, и записываем в базу (если такая запись у же имеется в базе, объединяем с имеющимися данными).
В итоге получаем такую таблицу (очень много записей):
Идентификатор записи Слог Позиция слога в слове Номер модели окончания Кол-во подобных комбинаций (слог/позиция/модель окончания)
16 ба 2 10 29
16 жур 1 10 3
16 ный 0 10 5609

3. Наконец, ваяем код, который тем же алгоритмом разбивает новые слова на слоги, интерпретирует кол-во комбинаций «слог/позиция/модель окончания», как вероятности и с уменьшающимся «весом» от последнего слога до первого (от начала слова к голове) вычисляет возможную модель окончаний.

Результаты:
  1. В результате анализа парадигмывыборки из 1000 произвольных новых слов – 85% верных парадигм.
  2. 15% неверных парадигм для слов последовательность слогов, в которых была «необычна» для старого набора: фиалы -> фиалым, фиалыы...
  3. Прирост базы словоформ на почти 2 миллиона словоформ.
Теги:
Хабы:
Всего голосов 4: ↑4 и ↓0+4
Комментарии9

Публикации