- •Содержание
- •Введение
- •Глава 1. Основные понятия
- •1.1. Понятие об искусственном интеллекте
- •1.1.1. Точка зрения Петрунина.
- •1.1.2. Интеллектуальные алгоритмы.
- •1.2. Основные направления исследования в области ии
- •1.3. Данные и знания. Основные модели представления знаний
- •Глава 2. Логические модели представления знаний
- •2.1. Логика высказываний
- •2.1.1. Булева алгебра.
- •2.1.2. Понятие о логическом следствии.
- •2.1.3. Метод резолюции в лв.
- •Имеет место теорема о полноте резолютивного вывода. Множество клозов противоречиво тогда и только тогда, когда из него методом резолюции можно вывести пустой клоз.
- •2.2. Логика предикатов первого порядка
- •2.2.1. Основные определения.
- •2.2.2. Метод резолюции в лппп.
- •2.2.3. Стратегии проведения резолюции.
- •2.2.4. Упорядоченный линейный вывод в лппп.
- •2.2.5.Применение поиска в пространстве состояний при реализации автоматизированного логического вывода.
- •2.2.6. Логический вывод на хорновских дизъюнктах.
- •Понятие экспертной системы и применение логического вывода при построении экспертных систем.
- •2.2.9. Запросы класса b.
- •2.2.10. Запросы класса c.
- •2.3. Понятие о нечетком выводе
- •2.4. Неклассические логики
- •2.4.1. Логики высших порядков.
- •2.4.2. Модальные логики.
- •2.4.3. Многозначные логики.
- •Глава 3. Продукционные модели представления знаний
- •3.1. Основные понятия
- •3.2. Стратегии управления
- •3.2.1. Поиск с возвратом.
- •3.2.2. Поиск в пространстве состояний.
- •3.3. Понятие о коммутативных системах продукций
- •3.4. Понятие о нечетком выводе на продукциях
- •3.5. Сравнение продукционных и логических моделей
- •Глава 4. Реляционные языки представления знаний
- •4.1. Основные элементы естественных языков
- •4.2. Дескрипторные модели
- •4.2.1. Понятие об ипс.
- •4.2.2. Линейная модель работы ипс.
- •4.2.3. Понятие о многоуровневом поиске.
- •4.2.4. Основные характеристики ипс.
- •4.4. Синтагматические цепи
- •4.4.1. Понятие синтагматических цепей.
- •4.4.2. Фреймы.
- •4.5. Сетевые модели представления знаний
- •4.5.1. Понятие семантической сети.
- •4.5.2. Структура интеллектуальной системы доступа к данным на основе семантической сети.
- •4.5.3. Задача поиска кратчайшего обхода образца в семантической сети.
- •4.5.4. Понятие о логическом выводе на семантических сетях.
- •Глава 5. Нейронные сети
- •5.1. Параллели из биологии
- •5.2. Базовая искусственная модель
- •5.3. Применение нейронных сетей
- •5.4. Обучение сети
- •Глава 6. Организация диалога с эвм на естественном языке
- •6.1. Элементы теории формальных языков
- •6.2. Обратная польская запись
- •6.3. Недостатки применения аппарата формальных грамматик
- •6.4. Элементы семиотики
- •6.5. Модель непосредственных составляющих
- •6.6. Многозначность в естественных языках
- •6.7. Расширенные сети переходов
- •6.8. Глубинные (семантические) падежи
- •Глава 7. Логическое программирование на языке пролог
- •7.1. Основные понятия в языке Пролог
- •7.2. Пакет Turbo Prolog
- •7.3. Структура программы
- •7.4. Поиск решений
- •7.5. Механизм отката
- •7.6. Операторы. Декларативный и процедурный смысл программы
- •7.7. Повторение и рекурсия
- •7.8. Повторение и откат
- •7.8.1. Метод отката после неудачи (опн).
- •7.8.2. Метод отсечения и отката (оо).
- •7.8.3. Метод повтора, определенный пользователем.
- •7.9. Методы организации рекурсии
- •7.10. Отладка программы и обнаружение ошибок
- •7.11. Графика в Turbo Prolog’е
- •7.11.1 Создание меню.
- •7.11.2. Создание графического режима.
- •7.11.3. Черепашья графика
- •7.12. Списки и их использование
- •7.12.1. Использование списка.
- •7.12.2. Поиск элементов в списке.
- •7.12.3. Создание нового списка путем слияния двух списков
- •7.12.3. Разделение на два списка.
- •7.13. Сортировки
- •7.13.1. Наивная сортировка.
- •7.13.2. Сортировка включением.
- •7.13.3. Метод «пузырька».
- •7.13.4. Быстрая сортировка.
- •7.14. Компоновка данных из базы в список
- •7.15. Работа с символами и строками
- •7.16. Специальные строки
- •7.17. Работа с файлами
- •7.18. Создание динамических баз данных
- •7.19. Библиотеки Turbo Prolog’а
- •7.19. Модульное программирование
- •7.20. Решение задачи о волке, козе и капусте
- •Глава 8. Введение в язык лисп
- •8.1. Основные особенности языка Лисп
- •8.2. Понятия языка Лисп
- •8.2.1 Атомы и списки.
- •8.2.2 . Внутреннее представление списка.
- •8.2.3 .Написание программы на Лиспе.
- •8.2.4. Определение функций.
- •8.2.5. Рекурсия и итерация.
- •В) maplist. Эта функция действует подобно mapcar, но действия осуществляет не над элементами списка, а над последовательными cdr этого списка.
- •8.2.6 . Функции интерпретации выражения.
- •8.2.7. Макросредства.
- •8.2.8. Функции ввода-вывода.
- •Список используемых источников
- •Перечень используемых сокращений
Глава 6. Организация диалога с эвм на естественном языке
Задача организации диалога состоит из двух подзадач.
-
Анализ фразы на естественном языке с целью распознания её смысла.
-
Генерация ответа на естественном языке.
Для решения этих подзадач необходимы модели, позволяющие формализовать и интерпретировать синтаксические конструкции, которые и рассматриваются в данной главе.
Рассмотрение начнем с классической языковой модели – аппарата формальных грамматик, уже рассмотренного в рамках дисциплин «Теория алгоритмов» и «Теоретические основы информатики».
6.1. Элементы теории формальных языков
Алфавитом (обозначается Σ) называется некоторое конечное множество символов. Будем считать, что |Σ|=n.
Если a, b Σ, то ab Σ2. Таким образом, Σ2 – это множество всевозможных цепочек длины 2. Рассуждая аналогично, видим, что Σ3 – множество цепочек длины 3, и т.д. В общем случае Σn – множество цепочек длины n.
Если обозначить пустую цепочку как λ, то можно определить полное транзитивное замыкание алфавита
Σ* = λ Σ Σ2 Σ3 ………
и положительное транзитивное замыкание алфавита
Σ+ = Σ Σ2 Σ3 …………..
В сущности, полное транзитивное замыкание есть множество всевозможных цепочек, состоящих из алфавитных символов, включая пустую цепочку, а положительное транзитивное замыкание – это множество всех непустых цепочек, состоящих из алфавитных символов.
Формальный язык или просто язык (обозначается L) определяется как некоторое подмножество полного транзитивного замыкания алфавита, т.е. L Σ*.
Очевидно, что в соответствии с данным определением, язык – это набор фраз (цепочек), состоящих из определенных алфавитных символов.
Поскольку множество L, в общем случае, бесконечно, то задать его простым перечислением невозможно и требуется специальный инструментарий. Один из способов задания языка – порождающие грамматики.
Четверка G(L)={Σ, N, S, P} называется порождающей грамматикой, задающей формальный язык L, если
Σ – множество терминальных символов (терминалов), т.е. алфавит языка, эти символы обозначаются строчными (малыми) буквами;
N – множество нетерминальных символов (нетерминалов), которые фактически соответствуют понятиям в языке, эти символы обычно обозначаются прописными (заглавными) буквами;
SN – начальный нетерминал, соответствующий некоторому глобальному понятию (суперпонятию), включающему в себя все понятия языка. Фактически этот нетерминал обозначает понятие «фраза на языке L»;
P – множество порождающих правил вида φ1→φ2, где φ1, φ2 – цепочки (фразы), состоящие из терминалов и нетерминалов.
Пример. Язык чисел с плавающей точкой.
S→C.C
C→0 C→1 C→2 C→3 C→4
C→5 C→6 C→7 C→8 C→9
C→0C C→1C C→2C C→3C C→4C
C→5C C→6C C→7C C→8C C→9C
Суть порождающих правил сводится к возможности замены цепочки, стоящий слева от «→», на цепочку, стоящую справа от «→». Цепочка терминальных символов считается принадлежащей языку в том случае, если ее можно получить путем применения последовательности порождающих правил к цепочке, состоящей из одного начального нетерминала. Последовательность применяемых правил называется процессом порождения, который удобно изображать в виде дерева.
Пример. Порождение числа 12.386.
//пример (1)
12.386
Задача проверки принадлежности цепочки языку носит название анализа языка. Многие алгоритмы анализа носят конструктивный характер, т.е. попутно позволяют распознать смысл фразы. Фактически те же алгоритмы могут использоваться и для генерации фраз.
Трудоемкость задачи анализа языка зависит от класса языка по Хомскому. В соответствии с данной классификацией принято выделять следующие классы языков:
0. Грамматика без ограничений – не накладывается никаких ограничений на порождающие правила.
1. КЗ-грамматики (контекстно-зависимые грамматики) – допускаются только правила вида:
ω1Aω2→ ω1φω2 (φ≠λ).
При этом цепочки ω1, ω2 могут содержать как терминалы, так и нетерминалы и называются контекстом, A – некоторый нетерминал, а φ – цепочка, которая может состоять из терминалов и нетерминалов.
2. КС-грамматики (контекстно-свободные грамматики) – допускаются только правила вида:
A→ φ (φ может быть = λ),
где A – некоторый нетерминал, а φ – цепочка, которая может состоять из терминалов и нетерминалов.
Например, к этому типу относится приведенный выше язык описания чисел с вещественной точкой.
3. Автоматные грамматики – допускаются только правила вида:
А→a (A – нетерминал, a – терминал) и
A→aB (A, B – нетерминалы, a – терминал).
Класс языка по Хомскому определяется максимальным классом грамматики, с помощью которой порождаются цепочки этого языка.
В курсе «Теория алгоритмов» были рассмотрены эффективно решаемые задачи анализа автоматных и контекстно-свободных языков и отмечена экспоненциальность анализа контекстно-зависмых языков и алгоритмическая неразрешимость анализа языков без ограничений.