Некоторое время работаю над программой решающей отдельные задачи программирования интеллектуальных операций.
Компоненты программы находятся в разной степени готовности.
Представление знаний. Общие замечания.   
Предметные области моделируются посредством структур имеющих общие черты с классами в программировании и фреймами в ии.
В дальнейшем данные структуры будут именоваться фреймами.
Фрейм включает в себя поля (слоты), значениями которых могут быть фреймы, ссылки, константы, итераторы, условия над элементами фрейма, объекты специальных форматов.
Объекты представленные фреймами образуют иерархию по отношению предок-потомок, включая механизм наследования.
Отношение предок –потомок в данном случае является формальным выражением для содержательного отношения абстрактное-конкретное.
Что по проекту должно быть в программе. Что сделано.
- Описание предметной области. Есть результаты.
- Классификация объектов. Есть результаты. Нет инвариантности относительно изменения формы описания объекта.
- Контроль жизненного цикла объекта. Есть результаты. Есть вопросы.
- Поиск решений задач. Делался жадный алгоритм – получился переборный.Пока отключен.
-Работа с естественным языком. Сделан анализ некоторых конструкций языка.
Представление знаний. Некоторые подробности.
Элементы фреймов сгруппированы. Группы элементов фрейма пронумерованы.
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