Некоторое время работаю над программой решающей отдельные задачи программирования интеллектуальных операций.
Компоненты программы находятся в разной степени готовности.
Представление знаний. Общие замечания.
Предметные области моделируются посредством структур имеющих общие черты с классами в программировании и фреймами в ии.
В дальнейшем данные структуры будут именоваться фреймами.
Фрейм включает в себя поля (слоты), значениями которых могут быть фреймы, ссылки, константы, итераторы, условия над элементами фрейма, объекты специальных форматов.
Объекты представленные фреймами образуют иерархию по отношению предок-потомок, включая механизм наследования.
Отношение предок –потомок в данном случае является формальным выражением для содержательного отношения абстрактное-конкретное.
Что по проекту должно быть в программе. Что сделано.
- Описание предметной области. Есть результаты.
- Классификация объектов. Есть результаты. Нет инвариантности относительно изменения формы описания объекта.
- Контроль жизненного цикла объекта. Есть результаты. Есть вопросы.
- Поиск решений задач. Делался жадный алгоритм – получился переборный.Пока отключен.
-Работа с естественным языком. Сделан анализ некоторых конструкций языка.
Представление знаний. Некоторые подробности.
Элементы фреймов сгруппированы. Группы элементов фрейма пронумерованы.
1. Название объекта.
2,3. Зарезервировано.
4. (4.1 … 4.n) Составные части объекта.
5. Зарезервировано.
6. Содержимое до конца не определено. Могут находится те же элементы что и в группе под номером 7.
7. Элементы которые определяют объект с той или иной стороны, но не имеют простого и(или) устоявшегося имени как имени свойства.
(Например центр тяжести)
8. Свойства с собственными именами. (цвет, масса и т.п.)
К имени поля элемента имеющего своим значением условие над элементами фрейма добавляется постфикс “_q_” .
Имена объектов уникальны. При появлении одинаковых объектов к имени добавляется префикс “$” c номером копии.
При любом изменении объекта кроме изменения формы описания изменяется имя. После изменения следует отложенная идентификация нового объекта. До идентификации имя объекта есть “object_temp_” плюс уникальный номер временного объекта.
После идентификации объекту присваивается имя включающее в себя имя предка и некоторое число.
Идентификация здесь это установление позиции нового объекта в общей классификации объектов.
Рассмотрим пример фрейма. Справа через пару символов “//” будут комментарии .
{ //начало записи базы знаний
a t_состояние // Указан предок
//d xyzt_состояние_1 //Закомментированное поле
d xyzt_состояние_2 // Дальше идут потомки
d xyzt_состояние_3
d xyzt_состояние_4
d xyzt_состояние_5
d xyzt_состояние_6
1 'xyzt_состояние' //Начало фрейма. Объект по значению близок понятию сцена. Составной элемент процесса над трехмерными объектами плюс время.
4 ит0_forall_.26 // Объект итератор. В данном случае итератор для неопределенного по размеру множества элементов состояния(сцены).
8_t_ время0 // Свойство время. В данном случае задано через объект “время”
8_value_t_ '??' //Свойство значение времени. Не определено.
8_data_time_ temp_1 //Свойство дата-время.
8_adddef_pred_ ansistring0 //Имя предыдущего состояния. Значение - объект ansistring0, строка как таковая.
8_adddef_next_ ansistring0 //Имя последующего состояние. Значение - объект ansistring0, строка как таковая.
8_adddef_process_ ansistring0 //Свойство – имя процесса составной частью которого является данное состояние.
// Объект итератор используется для доступа к элементам множества размер которого не определен или множества записанного в сжатой форме.
// Например выше использовался итератор с именем “ит0_forall_.26”. Рассмотрим его фрейм.
{
a ит0_forall_t_состояние
1_notdesc_ 'ит0_forall_.26'
4 простой_объект_сцены0 //Элемент , множества обслуживаемого итератором. В данном случае это объект-предок для объектов из которых строится
//сцена.
8/0_ит_ н1 //Переменная с типом – натуральное число.
8/1_ит_ 1 //Начальное значение номера элемента множества.
8/2_ит_ н1-8_value_ //Конечное значение. В данном случае не определено.
В итоге мы описали абстрактное состояние(сцену) с произвольным числом элементов .
Семантический анализ.
Простые предложения на русском языке преобразуются в комплекс фреймов. Для морфологического анализа используется библиотека MCR.DLL(http://macrocosm.narod.ru).
Слово должно быть связано со словарем через идентификатор и его значение должно быть представлено фреймом в базе знаний.
Порядок слов должен быть пока стандартным.
Тесты.
Связаться с автором можно по адресу viktorruvini@gmail.com