Чтение онлайн

на главную - закладки

Жанры

Неизвестно

Шрифт:

конк( L1, L2, L3).

Предикаты заказ и водитель можно определить аналогично.

Наш следующий пример иллюстрирует применение объединения отдельных символов в один атом. Мы определим предикат

читпредложение( Списслов)

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

внутреннего представления, обеспечивающего возможность дальнейшей обработки предложения, естественно избрать следующее: каждое слово входного предложения представляется прологовским атомом, а все предложение представляется списком этих атомов. Например, если входной поток таков:

Мэри было приятно видеть неудачу робота.

то цель читпредложение( Предложение) вызовет конкретизацию

Предложение=['Мэри', было, приятно, видеть, неудачу, робота]

Для простоты будем считать, что каждое предложение оканчивается точкой и внутри него не используются никакие знаки препинания.

Программа для читпредложение показана на рис. 6.4. Вначале процедура читает текущий входной символ Симв, а затем передает его процедуре читостальное для завершения работы. Процедура читостальное должна правильно обработать следующие три случая:

(1) Симв– точка, тогда все сделано.

(2) Симв– пробел, - игнорировать его и читпредложение от остального ввода.

(3) Симв– буква, - сначала считать слово Слово, которое начинается с Симв, а затем запустить читпредложение, чтобы считать оставшуюся часть предложения, породив при этом Списслов. Общим результатом этого будет список [Слово | Списслов].

Процедура, считывающая символы одного слова, такова:

читбуквы( Буква, Буквы, Сделсимв)

Ее три аргумента:

(1) Буква– текущая буква (уже считанная) читаемого слова.

(2) Буквы– список букв (начинающийся с буквы Буква), оставшихся до конца слова.

(3) Следсимв– входной символ, непосредственно следующий за читаемым словом. Следсимв не должен быть буквой.

Мы завершим данный пример замечанием о возможном применения процедуры читпредложение. Ее можно использовать в программе обработки текста на естественном языке. Предложения, представленные в виде списков слов, имеют удобную форму для дальнейшей обработки при помощи Пролога. В простейшем

/*

Процедура читпредложение считывает предложение и из его слов создает список атомов. Например,

читпредложение( Списслов)

порождает

Списслов=['Мэри', было, приятно, видеть, неудачу, робота]

если входным было предложение

Мэри было приятно видеть неудачу робота.

*/

читпредложение( Списслов) :-

gеt0( Симв),

читостальное( Симв, Списслов).

читостальное( 46, [ ]) :- !.

% Конец предложения: 46 = ASCII-код для ' '

читостальное( 32, Списслов) :- !,

% 32 = ASCII-код для пробела

читпредложение( Списслов).

% Пропустить пробел

читостальное( Буква, [Слово | Списслов]) :-

читбуквы( Буква, Буквы, Следсимв),

% Считать буквы текущего слова

nаmе( Слово, Буквы),

читостальное( Следсимв, Списслов).

читбуквы( 46, [ ], 46) :- !.

% Конец слова: 46 = точка

читбуквы( 32, [ ], 32) :- !.

% Конец слова: 32 = пробел

читбуквы( Бкв, [Бкв | Буквы], Следсимв) :-

get0( Симв),

читбуквы( Симв, Буквы, Следсимв).

Рис. 6. 4. Процедура для преобразования предложения в список атомов.

случае такой обработкой мог бы быть поиск во входном предложении определенных ключевых слов. Значительно более сложной задачей является понимание предложения, т. е. извлечение из него смысла, представленного в некотором избранном формализме. Это важная область исследований в искусственном интеллекте.

Упражнения

6. 4. Определите отношение

начинается( Атом, Символ)

для проверки, начинается ли Атом с символа Символ.

Посмотреть ответ

6. 5. Определите процедуру plural, которая преобразует английские существительные из единственного числа во множественное, добавляя к слову окончание s. Например:

?- plural( table, X).

Поделиться:
Популярные книги

«О» - значит омут

Графтон Сью
Кинси Милхоун
Детективы:
крутой детектив
5.00
рейтинг книги
«О» - значит омут

Кортни. 1-13

Смит Уилбур
Кортни
Приключения:
исторические приключения
прочие приключения
5.00
рейтинг книги
Кортни. 1-13

Я вас люблю

Муравьева Ирина Лазаревна
Семейная сага
Проза:
современная проза
6.25
рейтинг книги
Я вас люблю

Тор. Разрушитель

Хольбайн Вольфганг
1. Асгардская сага
Фантастика:
фэнтези
7.00
рейтинг книги
Тор. Разрушитель

Неучтенный элемент. Том 3

NikL
3. Антимаг. Вне системы
Фантастика:
фэнтези
5.00
рейтинг книги
Неучтенный элемент. Том 3

Война Ретифа (сборник)

Лаумер Кейт Джон
Классика мировой фантастики
Фантастика:
научная фантастика
юмористическая фантастика
7.33
рейтинг книги
Война Ретифа (сборник)

Сборник рассказов

Андреев Леонид Николаевич
Проза:
классическая проза
русская классическая проза
5.00
рейтинг книги
Сборник рассказов

Цвет сверхдержавы - красный 3 Восхождение. часть 1

Сергей Симонов
3. Цвет сверхдержавы - красный
Фантастика:
альтернативная история
5.00
рейтинг книги
Цвет сверхдержавы - красный 3 Восхождение. часть 1

Имперец. Том 5

Романов Михаил Яковлевич
4. Имперец
Фантастика:
попаданцы
альтернативная история
аниме
6.00
рейтинг книги
Имперец. Том 5

Пальмы в снегу

Габас Лус
Проза:
историческая проза
5.00
рейтинг книги
Пальмы в снегу

Матабар IX

Клеванский Кирилл Сергеевич
9. Матабар
Проза:
магический реализм
5.00
рейтинг книги
Матабар IX

Пушкин

Тынянов Юрий Николаевич
Я люблю Пушкина
Документальная литература:
биографии и мемуары
8.00
рейтинг книги
Пушкин

Последний Паладин. Том 13

Саваровский Роман
13. Путь Паладина
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последний Паладин. Том 13

"Фантастика 2023-201. Компиляция. Книги 1-26

Кароль Елена
Фантастика 2023. Компиляция
Фантастика:
боевая фантастика
попаданцы
5.00
рейтинг книги
Фантастика 2023-201. Компиляция. Книги 1-26