Средства разработки приложений


Morfolog.shtml - часть 3


Ответ ПРОЛОГА: Слово = "зеленый"

Как видно, в программе всего 13 строчек, а остальное база знаний. Теперь посмотрим как справится с этой задачей РЕФАЛ.

Пример на логическом языке программирования РЕФАЛ - 5: ----------------------- /* программа по распознаванию морфологии слов руссского языка */ /* по окончанию и приставке слова */ /* язык программирования РЕФАЛ 5 */ /* автор Ермолаев Д.С. dimonas_long@yahoo.com */ /* ввод одного слова с консоли */ $ENTRY Go { = <Prout <Question (<Card>) >>; }; /* таблица1. слова, которые имеют неправильное окончание */ WordsMissTable { = ( ('сел') 'сесть' ) ( ('рек') 'чего' ) } ; /* таблица2. окончания, по которым можно определить основу */ CompletionTable { = /* для глаголов */ ( ('нули') 'ать') ( ('нул') 'ать') ( ('ает') 'ать') ( ('еть') 'ать') ( ('еч') 'ать') ( ('ал') 'ать') ( ('ел') 'ать') /* для прилагательных */ ( ('вые') 'вый') ( ('вая') 'вый') ( ('ая') 'ой') ( ('ие') 'ой') ( ('ую') 'ой') }; /* сама программа распознавания морфологической формы слова */ Question { /* берем слово и ищем подходящее по шаблону в таблице1 */ (e.Word), <WordsMissTable>: e.L((e.Word)e.Qst)e.R = e.Qst; /* иначе, бере окончание слова и ищем по шаблону в таблице2 */ (e.1 e.End), <CompletionTable>: e.L((e.End)e.Qst)e.R = e.1 e.Qst ; /* иначе, слово неизменяемо */ (e.1) = e.1; };

Программа на РЕФАЛЕ состоит из трех предложений!

Интересно, сколько бы предложений программы пришлось бы написать для решения такой задачи на алгоритмическом языке? Например С++?

Ермолаев Д.С., Москва,

 


Начало  Назад  Вперед



Книжный магазин