Вернуться   CoderX :: Forums > Основные форумы > Программинг
Войти через OpenID

Программинг Форум для тем связанных с программированием

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 05.04.2011, 20:47   #1
Местный
 
Аватар для Aries
 
Регистрация: 19.01.2011
Сообщений: 241
Сказал Спасибо: 7
Имеет 26 спасибок в 22 сообщенях
Aries пока неопределено
По умолчанию

Цитата:
Сообщение от destructor Посмотреть сообщение
приходит тебе в чат:
>>Положить желтый стул под синий стол

бот разбирает предложение и строит(согласно правилам) дерево:

дальше что?
Принцип работы немного не такой
1.Фраза – > Гл., Гр. Сущ.
2.Гр. Сущ. – > Прил., Сущ
3.Гр. Сущ. – > Гр. Сущ., Предл., Гр. Сущ.
4.Гл. – > положить/взять
5.Сущ. – > стул/стол
6.Предл. – > в/на/под
7.Прил. – > синий/желтый

Допустим есть стек, куда кладутся лексемы
Считываем по словам, при этом анализируя содержимое стека:
Положить - Гл. (по правилу 4)
стек пустой, больше правила не применимы, значит
push (Гл.)
желтый - Прил. (7)
В стеке Гл., правил вида Гл., Прил. не существует, значит
push (Прил.)
стул - Сущ. (5)
На вершине стека Прил. -> применимо правило 2, значит
pop(),
Прил., Сущ. - Гр. Сущ.

смотрим стек, видим что можно применить правило 1, но на данном примере видим, что будет ошибка, соответственно не учли при построении грамматики у нас должно было быть дополнительное ограничение о применимости правила 1 (например, если след слово - не предлог)
с учетом этого условия, больше правила не применимы, значит
push (Гр. Сущ.)
и т.д.
в итоге стек: Гл. Гр. Сущ. Предл.
текущая лексема - Гр. Сущ.
Извлекаем из стека, получается Гр. Сущ. Предл. Гр. Сущ. - Гр. Сущ.
Затем Гл. Гр. Сущ. - Фраза
Т.е. предложение свернулось и значит фраза построена верно...
Значит можно включать мозги по распознанию смысла (т.е. синтаксический анализатор)... С этим вопросом я конечно уже не продумывал все как следует. Там по подобному принципу разбирается фраза, но при разбитии на лексемы уже делаются дополнительные действия, которые будут связаны с конкретными значениями слов, формирование внутренних таблиц и скорее всего формирование внутреннего представления значения данной фразы... Т.е. формирование однозначно определенной последовательности действий. Пример из теории компиляторов, это на уровне синтаксического анализа часто идет построение Польской Формы записи, которая как раз однозначно определяет всю дальнейшую последовательность действий.
Aries вне форума   Ответить с цитированием
Старый 05.04.2011, 21:42   #2
Рыцарь
 
Аватар для destructor
 
Регистрация: 26.06.2009
Сообщений: 2,433
Сказал Спасибо: 154
Имеет 692 спасибок в 426 сообщенях
destructor на пути к лучшему
По умолчанию

Цитата:
Сообщение от Aries Посмотреть сообщение
Принцип работы немного не такой
какая нафик разница как это происходит.

Цитата:
Сообщение от Aries Посмотреть сообщение
Т.е. формирование однозначно определенной последовательности действий.
опять ты про компиляторы
эта последовательность действий разбирается и выполняется без проблем.
тут не нужно ничего похожего на мозги.
__________________
Шожиделать.. ботить хочется..
destructor вне форума   Ответить с цитированием
Старый 05.04.2011, 22:43   #3
Местный
 
Аватар для Aries
 
Регистрация: 19.01.2011
Сообщений: 241
Сказал Спасибо: 7
Имеет 26 спасибок в 22 сообщенях
Aries пока неопределено
По умолчанию

Цитата:
Сообщение от destructor Посмотреть сообщение
какая нафик разница как это происходит.

опять ты про компиляторы
эта последовательность действий разбирается и выполняется без проблем.
тут не нужно ничего похожего на мозги.
видимо кто-то кого-то не понял))))
а я говорил про мозги?
Я говорил, что прежде чем писать мозги, нужно построить грамматику языка и разобраться с этим, а не начинать сразу с "восприятия мира"

А общий принцип создания в любом случае 1 в 1 с компилятором... Разница будет заключаться в том что при разборе текста на этапе синтаксического анализа в случае компилятора мы сразу формируем форму которая грубо говоря будет потом исполняться, а вот при разборе естественного языка тут уже нужен более сложный анализ (и только начиная с этого момента нужно задумываться о смысловой его составляющей). Хотя в любом случае надо строить какую-то внутреннюю форму представления фразы с жесткими правилами (так что и тут отличия от компилятора заключаются только в наличии большего количества правил и ограничений).

ЗЫ а ты надеялся, что я тебе раскрою секреты построения искусственного интеллекта? xD
Aries вне форума   Ответить с цитированием
Старый 06.04.2011, 01:09   #4
Рыцарь
 
Аватар для destructor
 
Регистрация: 26.06.2009
Сообщений: 2,433
Сказал Спасибо: 154
Имеет 692 спасибок в 426 сообщенях
destructor на пути к лучшему
По умолчанию

Цитата:
Сообщение от Aries Посмотреть сообщение
нужно построить грамматику языка и разобраться с этим
для примера язык можно упростить
Код:
правила:
фраза = глагол + существительное
существительные:
пвп, город, локация, адена, нуб, моб, эксп
глаголы:
пошли, продам, куплю, убей
для этого случая проблемы типа:
>>нужно построить грамматику языка и разобраться с этим
>>фразу нада сначало привести в программно-понятный вид
решены

вот как действовать дальше?
__________________
Шожиделать.. ботить хочется..

Последний раз редактировалось destructor, 06.04.2011 в 01:12.
destructor вне форума   Ответить с цитированием
Старый 06.04.2011, 01:59   #5
Местный
 
Аватар для Aries
 
Регистрация: 19.01.2011
Сообщений: 241
Сказал Спасибо: 7
Имеет 26 спасибок в 22 сообщенях
Aries пока неопределено
По умолчанию

Цитата:
Сообщение от destructor Посмотреть сообщение
для примера язык можно упростить
Код:
правила:
фраза = глагол + существительное
существительные:
пвп, город, локация, адена, нуб, моб, эксп
глаголы:
пошли, продам, куплю, убей
для этого случая проблемы типа:
>>нужно построить грамматику языка и разобраться с этим
>>фразу нада сначало привести в программно-понятный вид
решены

вот как действовать дальше?
Ну если совсем идеально делать, то тут у нас уже должен быть некий словарь для описания всех слов, а так же только тут уже должно быть описание какой-то физики, т.е. к примеру слово убей может быть применимо к "нуб" или "моб"... Хотя если правильнее, то должна быть категория живых существ и категория действий применимых к ним...
Если ближе к конкретике, то видимо на этапе синтаксического анализа надо формировать объекты, например самое примитивное с 2-мя параметрами: имя, характеристика. В характеристику например записывать прилагательное, относящееся к данному объекту. Если брать во внимание пока разбор строки с каким-то действием (в данном случае остальное не особо интересует, хотя не составит труда доработать до разбора предложений без сказуемого), то можно формировать элементарную постфиксную форму записи (надеюсь не стоит объяснять, что это).
Данная постфиксная форма и будет составлять программно понятный вид. Дальше на основе какой-то базы слов и физики необходимо определение возможности выполнения того или иного действия и соответственно выполнение или сообщение о невозможности выполнения. (усложняя все это, можно привести к виду не только приема сообщений, содержащих указания к действию, но и к вопросительным и т.д.)

ЗЫ можешь порыть инфу про SHRDLU, я много не читал про это, но как раз именно то о чем мы сейчас говорим)

Последний раз редактировалось Aries, 06.04.2011 в 02:17.
Aries вне форума   Ответить с цитированием
Ответ

  CoderX :: Forums > Основные форумы > Программинг



Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 13:21.

vBulletin style designed by MSC Team.
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Locations of visitors to this page
Rambler's Top100

Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!