24. Нормализация слов путем морфологического анализа

Флективные классы слов - наборы окончаний в различных падежах. Например слова: ГРУППА, ВОДА, ... имеют одни и те же окончания в различных падежных формах: ГРУПП/Ы, ВОД/Ы, ... В русском языке около 40 флективных классов существительных. Знание корня слова и его флективного класса достаточно для его анализа – распознавания или восстановления.

Лингвистические знания (в БЗ) - это знания о корнях слов и их флективных классах:

{= ROOT(<нормализ.слово>,<корень>,<флект.класс>,<род>) =}

ROOT(ГР,ГРУПП,FL_1)

ROOT(ВОДА,ВОД,FL_1)

...

{= FL(<флект.класс>,<окончание>,<падеж>,<число>) =}

FL(FL_1,А,КТО,ЕД_Ч)

FL(FL_1,Ы,КОГО,ЕД_Ч)

FL(FL_1,Е,КОМУ,ЕД_Ч)

...

Пусть в БЗ введены вспомогательные фрагменты NUM(1) NUM(2) ... NUM(20), представляющие позиции в словах. Тогда продукция, осуществляющая разбор слов, будет иметь вид:

NORM():IF @@(X1/X12) NUM(X45) {= X1 - слово ,X45 - позиция 1, 2, ...=}

B:DISCON2(X1,X45,X2,X3) {= разбивает слово X1 на части - X2 и оконч. X3 =}

ROOT(X10,X2,X20,_) {= если X2 корень, то выделяет его флект.класс X20 =}

FL(X20,X3,_,_) {= проверяет, что оконч. X3 входит в флект.класс X20 =}

THEN

B:SET(X12,1,X10); {= подставляет в @@(...) нормализованное слово X10 =}

Не трудно сделать так, чтоб эта продукция выдавала род, число, падеж введенного слова.

Обратный лингвистический процессор: выдает словоформы слова в указанных падежах.

Пример. Выдать словоформу "Студент группы..."

Это делается продукцией SAY(...):

... THEN T1:SAY(СТУД,КТО) T1:SAY(ГР,КОГО) ...;

SAY(X10,X4):IF

ROOT(X10,X2,X20,_) {= X2 - корень, X20 – фл.класс =}

FL(X20,X3,X4,_) {= X3 – окончание, X4 - падеж =}

B:CONCAT(X2,X3,X30) THEN

B:A(" ",X30); {= X30 – cловоформа =}

Домашнее задание 6.

В выбранной области приложения усовершенствовать программу в направлении ответа на запросы в более свободной форме.

Предыдущий раздел|Следующий раздел

- Главная страница -