PDA

Просмотр полной версии : чат боты?


mira
04.04.2011, 13:01
это для нюби скорей)
вощем пробывал цеплять к проге движки нескольких айсикю чат ботов - отказалса. Даже заявленый аи там был ни чем иным как парсингом с выдачей заранее готового универсального ответа или вопрос на вопрос

Добавлено через 9 минут
если чтото получитса это будет в неск. Раз сложнее самого бота.
Есть у меня зачатки такова проекта но сразу скажу нужна дикая оптимизация кода и работа с тонной данных чтоб получить хотяб примитивные 'мозги' уровня амебы

Добавлено через 13 минут
а у нас есть клей момент
ипохваще

supernewbie
04.04.2011, 22:18
вообще, по сути по должен оперировать не словами (символами), а значениями слов. Плюс придется реализовывать человеческие чувства:
Желание, ненависть, радость и тд.
Думаю самое сложное будет реализовать слово "Я".

Добавлено через 6 часов 49 минут
*ля, это сложнее чем кажеца

mira
05.04.2011, 01:24
2 раза начинал, и потом просто переставал понимать что делаю, как это работает и как должно работать =)))))))
ассоциативные связи этож псдц

mikser
05.04.2011, 01:37
сделай лучше отображение чата бота в аську и сам общайся с легиней через неё :)

Xa4ik
05.04.2011, 02:13
если для бота, то проще всего через автомат состояний для самых распространенных случаев: сое, занято, бафни. и большой набор ответов для одного и тогоже смысла. Потом склонить диалог с легитом к вопросу, ненужна ли ему адена ))))

mikser
05.04.2011, 04:02
ы
настроить бота чтобы впаривал адену прикопавшимся легитам это мысль :)

Aries
05.04.2011, 10:05
если для бота, то проще всего через автомат состояний для самых распространенных случаев: сое, занято, бафни. и большой набор ответов для одного и тогоже смысла. Потом склонить диалог с легитом к вопросу, ненужна ли ему адена ))))

Да что уж автомат состояний?)))
Надо читать теорию компиляторов, как следует, а там уже похрен, что писать, будь то язык программирования или язык общения)))
Хотя одну грамматику заипешся строить, а уж про то что дальше я вообще молчу))) Зато в итоге будет бот более-менее адекватно отвечающий xD

mira
05.04.2011, 10:44
сделай лучше отображение чата бота в аську и сам общайся с легиней через неё :)

у меня это давно уже. 2 сторонняя трансляция чатов icq-bot и команды боту по асе. Ася на телефоне.

Это ппц полезно но уже не интересно.

Добавлено через 1 минуту
в пм писать бесит с трубы)

supernewbie
05.04.2011, 12:32
по факту слова - способ выражение мыслей, мыслей о мире, т.е. чат-бот должен иметь картину мира и мысли, и только потом уметь выражать их на письме

Добавлено через 5 минут
седня попробую че-нибудь написать на эту тему, но учитывая что мы получаем информацию о мире через органы чувств и всё, о чём мы знаем лишь набор образов\чувств и тд, то бот представляет человека без органов чувств: слепой, глухой, неимеющий нервов человек, научить его будет крайне сложно) как минимум придется заменять ему органы чувств описывая внеший мир вручную

destructor
05.04.2011, 12:33
бот должен иметь картину мира и мыслии как продвигаются дела в этом направлении ?

supernewbie
05.04.2011, 12:36
и как продвигаются дела в этом направлении ?
пока только соображениями как выразить это в классах дельфы

Aries
05.04.2011, 12:48
по факту слова - способ выражение мыслей, мыслей о мире, т.е. чат-бот должен иметь картину мира и мысли, и только потом уметь выражать их на письме


Робототехники и разработчика искуственного интеллекта до сих пор не смогли этого реализовать в полной степени xD xD

mira
05.04.2011, 14:05
седня попробую позабавило)
настоятельно советую нече не городить пока не сложиш картину как это будет работать

supernewbie
05.04.2011, 14:08
угу, даже самому как-то не очень хочется переходить к коду, всё думаю, начинать или не начинать..

mira
05.04.2011, 14:09
Робототехники и разработчика искуственного интеллекта до сих пор не смогли этого реализовать в полной степени xD xD

ну так бот даже с прямым интелектом уровня амебы это уже будет большим достижением.

Aries
05.04.2011, 14:10
Имхо, как я сказал выше, единственный верный вариант это начать с построения грамматики языка... Без этого все равно далеко не уйдешь))

destructor
05.04.2011, 14:12
база вопросов -> база ответов
если грамотно разрулить, все ваши нейросети пролетают.

supernewbie
05.04.2011, 14:13
причем тут какая граматика

Добавлено через 46 секунд
база вопросов -> база ответов
если грамотно разрулить, все ваши нейросети пролетают.
очень оригинально получится, а главное сразу тест Тьюринга пройдет такой бот)

mira
05.04.2011, 14:18
угу, даже самому как-то не очень хочется переходить к коду, всё думаю, начинать или не начинать..

после тонны потеряного времени и 50 раз переписаного медленного кода ты поймеш что сделана 1/1000 а результат уже непредсказуем)

Aries
05.04.2011, 14:20
база вопросов -> база ответов
если грамотно разрулить, все ваши нейросети пролетают.

Если так, то это скучно))))) Надо что-то более глобальное))))))

причем тут какая граматика

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

destructor
05.04.2011, 14:21
а главное сразу тест Тьюринга пройдет такой бот)это не корректный тест,
+ хрень в том что нейросети будут фейлить его быстрее

Добавлено через 25 секунд
Если так, то это скучно))))) Надо что-то более глобальное))))))согласен=)

supernewbie
05.04.2011, 14:29
При том, что это основа любого языка, и если хотите чтобы генерировались хотя бы правильно построенные фразы, то все начинается именно с посторения предложения, а не с какого-то там восприятия мира... А построение предложенния возможно только на основе грамматики... То бишь нужно сначала научиться генерить фразы, хотя бы не осмысленные, но как минимум правильно построенные... А потом уже дальше всякие анализаторы добавлять...
Хотя если действильно нужно банальные несколько десятков-сотен фраз, то это не стоит того))))
как он будет генерировать фразы не зная значения слов, граматика будет складыватся сама, по логике значения слов, воообщем уже дня 2 размышляю над этим, сегодня\завтра буду начинать 100%

Aries
05.04.2011, 14:44
как он будет генерировать фразы не зная значения слов
А вот это уже должен быть второй или третий шаг построения)))

граматика будет складыватся сама
грамматика сама не сложится, если ты ее не опишешь...

Ты когда-нибудь пытался писать компилятор, интерператор или что-нить такое? Если да, то принцип построения будет аналогичным...

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

destructor
05.04.2011, 14:55
компилятор, интерператор или что-нить такое? Если да, то принцип построения будет аналогичным...несогласен,
там четко определенные конструкции и можно ругатся "такого слова я не знаю"

Добавлено через 46 секунд
Описываем грамматику, т.е. принцип построения фраз в языкеможно пример?

Aries
05.04.2011, 15:02
несогласен,
там четко определенные конструкции и можно ругатся "такого слова я не знаю"

Добавлено через 46 секунд
можно пример?

ну а тут я не согласен, не такие уж там и четкие конструкции... чем a=q*d+f/d-13+543/234
отличается от обычного построения предложения? Только правилами построения, тут только у нас есть грубо говоря переменные, констаты и операции... А в языке есть подлежащие, сказуемые и т.п... Правило там такие же четкие... Просто их в разы больше))))
При этом, если я тебе напишу "йцукфываарв", ты тоже скажешь: такого слова я не знаю))))))

Пример ща накатаю)) Точнее наверно не сейчас, а после 5 - как домой приеду, а то на работе покарают, если увидят чем я тут занимаюсь xD

destructor
05.04.2011, 15:20
Правило там такие же четкие...
хм, поехали. http://ru.wikipedia.org/wiki/Предложение_(лингвистика).


1.Предложе́ние (в языке) — это минимальная единица языка, ок. "минимальная единица языка" полезный термин.

2. С точки зрения пунктуации, предложение как законченная единица речи оформляется в конце точкой, восклицательным или вопросительным знаками — или многоточием.в реалиях чатбота по этой херне ориентироватся нельзя, катит только "смысловая законченнось" (в компиляторе\интерпритаторе проще).

3. которая представляет собой грамматически организованное соединение слов (или слово), обладающее смысловой и интонационной законченностью.
WTF??? и как это наруливать?

Добавлено через 5 минут
ну это ваще бугога:
Слово «дождь», произнесенное с особой интонацией, в отличие от нейтральной лексической единицы «дождь» также характеризуется тем, что актуализирует информацию — «[Идет] дождь!».

Aries
05.04.2011, 15:46
Ок)
1 - все понятно, проблем нет)
2 - Если не нужна пунктуация, то ее можно и опустить... Хотя правильнее сделать на уровне описания правил, что-то типо
предложение -> фраза
предложение -> фраза!
предложение -> фраза.
предложение -> фраза?

3. Повторюсь. Я пока говорю о первом этапе, т.е. описание грамматики. Т.е. смысловая законченность, это уже дело синтаксического анализатора, который надо строить после описания грамматики. Про него, предлагаю говорить уже потом, т.к. там все куда более сложно) Ну а про интонацию... Тут я хз))) Если уж так глубоко копать и все это реализовать, то смело можно нобелевскую премию получать)))))
4. См. последнее предложенияпункта 3)

ЗЫ и вообще я всего лишь стал объяснять как правильно было бы строить язык... Но если бы все было настолько просто, то я хз чем бы ща занимались разработчики искуственного интеллекта и робототехники))))
ЗЫЫ готового решения у мну тож нет, есть только идеи, но и то не продуманные до конца... Т.е. первый шаг построения грамматики - легко, затем лексический анализатор - сложнее (хотя если конечные автоматы подойдут, то все отл, а если нет, то надо искать или придумывать свой механизм сравнения фразы с правилами грамматики), затем синтаксический анализатор (это вообще ипануться,т.к. тут идет уже не просто разбор, а осмысление фраз, тут я пока даж не пытался думать о реализации, есть только общее представление)

destructor
05.04.2011, 15:55
Я пока говорю о первом этапе, т.е. описание грамматики. ок. подожду понятный пример.

Aries
05.04.2011, 16:30
Кстати так на почитать для начала кому интересно
http://www.programmersclub.ru/%D0%98%D1%81%D1%82%D0%BE%D1%80%D0%B8%D1%8F-%D0%BE%D0%B4%D0%BD%D0%BE%D0%B3%D0%BE-%D0%BB%D0%B5%D0%BA%D1%81%D0%B8%D1%87%D0%B5%D1%81%D 0%BA%D0%BE%D0%B3%D0%BE-%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0/

mira
05.04.2011, 18:23
база вопросов -> база ответов
если грамотно разрулить, все ваши нейросети пролетают.

я делал так примерно. из предложения формируетса реквест, если непонятна конструкция то такойже размазаный ответ.
по реквесту читаетса там чето и формируетса машинный ответ.

тока это не есть интеллект, и даже не близко к тому)
но в качестве оболочки хотябы это реализовать, что тоже не быстро

Aries
05.04.2011, 19:23
Таааакс… Маленький фейл с моей стороны))))
Хотел все показать на конкретном программном примере, но понял, что даже для простейшего случае надо не так уж мало времени, как показалось….

В общем начну сначала (т.е. с лингвистики по сути), с кодом если повезет все же потом доделаю, но пока чисто покажу простейшее описание грамматики языка, построенное по принципу описания грамматики языка программирования… Кто занимался теорией компиляторов, думаю, и сам сможет разобраться как на основе этого описания строить анализаторы.

Для начала по теории… По сути грамматика состоит из 4 элементов:
- входной алфавит
- нетерминальные символы
- начальный символ (из нетерминальных)
- правила применения

Т.к. простейший, то словарный запас маленький, и описание языка тоже минимальное… Но дальнейшее усложнение – чисто дело техники, т.к. в плане понимания вопроса ничего не изменит уже.

Возьмем:
Входной алфавит: положить, взять, синий, желтый, стул, окно, в, на, под…
Нетерминальные символы – Фраза, Гл., Гр. Сущ., Сущ., Прил., Предл.
Начальный символ – Фраза.

Теперь правила:
Фраза – > Гл., Гр. Сущ.
Гр. Сущ. – > Прил., Сущ
Гр. Сущ. – > Гр. Сущ., Предл., Гр. Сущ.
Гл. – > положить/взять
Сущ. – > стул/стол
Предл. – > в/на/под
Прил. – > синий/желтый

На основе данной грамматики можно в принципе строить фразы любой сложности, т.к. есть рекурсия вида Гр. Сущ. – > Гр. Сущ., Предл., Гр. Сущ.
Про осмысленные фразы конечно пока не говорим, но с точки зрения грамматики фразы будут построены правильно
Например:
«Взять синий стол»
«Положить желтый стул под синий стол»

Конечно на моем примере много не построишь, надо куда больше правил (при этом если брать случай синтаксического анализатора, на правила применения накладываются дополнительные ограничения применения).
Дальше делается на основе конечных автоматов:
считывается строка по словам и на основе правил грамматики ее нужно свернуть к начальному символу. В случае если строка не свернулась, то с точки зрения грамматики строка заведомо неверная и разбор ее смысла уже не имеет значения.
А если свернулась, то надо переходить к синтаксическому анализу…

ЗЫ все это описываю в большей степени для supernewbie, чтобы не занимался всякой фигней и понял, что проще сделать конечный набор фраз))) Ну или хотя бы, чтобы попробовал понять, что без определения начальной грамматики языка все равно в итоге ничего хорошего не выйдет, если создавать бота хотя бы умеющего понимать не сложные, но уже более-менее естественные фразы.

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

supernewbie
05.04.2011, 20:13
буду заниматся всякой фигней, набор фраз - полный отстой

destructor
05.04.2011, 20:18
приходит тебе в чат:
>>Положить желтый стул под синий стол

бот разбирает предложение и строит(согласно правилам) дерево:
Фраза =
Гл.[Положить]
+
Гр. Сущ[желтый стул под синий стол]
(
Гр. Сущ.[желтый стул]
(
Прил.[желтый]
+
Сущ [стул]
)
+
Предл.[под]
+
Гр. Сущ.[синий стол]
(
Прил.[синий]
+
Сущ.[стол]
)
)

дальше что?

Aries
05.04.2011, 20:19
Ну тогда все таки советую внимательнее посмотреть что я написал и подумать еще 500 раз хотя бы о самом принципе построения.
Пока это единственный известный мне способ, который используется при распознании и генерации речи в робототехнике

ЗЫ Если все таки согласишься с данным методом, то мб и помогу в чем-то (хотя пока времени свободного практически нет)

supernewbie
05.04.2011, 20:23
думаю сейчас вся моя работа будет заключатся в наступаниях на грабли

Aries
05.04.2011, 20:47
приходит тебе в чат:
>>Положить желтый стул под синий стол

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

дальше что?

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

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

смотрим стек, видим что можно применить правило 1, но на данном примере видим, что будет ошибка, соответственно не учли при построении грамматики у нас должно было быть дополнительное ограничение о применимости правила 1 (например, если след слово - не предлог)
с учетом этого условия, больше правила не применимы, значит
push (Гр. Сущ.)
и т.д.
в итоге стек: Гл. Гр. Сущ. Предл.
текущая лексема - Гр. Сущ.
Извлекаем из стека, получается Гр. Сущ. Предл. Гр. Сущ. - Гр. Сущ.
Затем Гл. Гр. Сущ. - Фраза
Т.е. предложение свернулось и значит фраза построена верно...
Значит можно включать мозги по распознанию смысла (т.е. синтаксический анализатор)... С этим вопросом я конечно уже не продумывал все как следует. Там по подобному принципу разбирается фраза, но при разбитии на лексемы уже делаются дополнительные действия, которые будут связаны с конкретными значениями слов, формирование внутренних таблиц и скорее всего формирование внутреннего представления значения данной фразы... Т.е. формирование однозначно определенной последовательности действий. Пример из теории компиляторов, это на уровне синтаксического анализа часто идет построение Польской Формы записи, которая как раз однозначно определяет всю дальнейшую последовательность действий.

destructor
05.04.2011, 21:42
Принцип работы немного не такойкакая нафик разница как это происходит.

Т.е. формирование однозначно определенной последовательности действий.опять ты про компиляторы:)
эта последовательность действий разбирается и выполняется без проблем.
тут не нужно ничего похожего на мозги.

Aries
05.04.2011, 22:43
какая нафик разница как это происходит.

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

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

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

ЗЫ а ты надеялся, что я тебе раскрою секреты построения искусственного интеллекта? xD

mira
05.04.2011, 22:58
в любом случае фразу нада сначало привести в программно-понятный вид, так сказать структуру. потом уже обработать и дать ответ. в идеале переварив его еще и мозгами (это уже последнее что стоит делать)

Aries
05.04.2011, 23:04
в любом случае фразу нада сначало привести в программно-понятный вид, так сказать структуру. потом уже обработать и дать ответ. в идеале переварив его еще и мозгами (это уже последнее что стоит делать)

по-моему единственный человек, который сейчас понял меня, да?)))))

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

вот как действовать дальше?

Link
06.04.2011, 01:15
мб прикрутить мат генератор и не парится?

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

вот как действовать дальше?

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

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

mira
06.04.2011, 09:44
для определения глаголов я хз сам недопер как их определять. Для существительных проще. Выполняетса поиск в пространстве имен бота- имена, названия лок, предметов, умений а также определеные системой шаблоны типа - инвентарь , перс

Добавлено через 18 минут
этот обьект будет имет свойства и методы. Методы это посути применые глаголы а свойства прилагательные. Методы и свойства должны быть виртуальные так как скажем метод move для предмета и перса будет реализован иначе.
А свойство возраст для обьекта 'инвентарь' вообще должен вернуть null

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

Добавлено через 4 минуты
удобно использование интерфейсов. Но свойства придетса обернуть в методы что тоже неочень

Aries
06.04.2011, 10:27
По сути все верно... Только надо объект обязательно в иерархии строить... Т.е. создаем единственный родительский объект, например имеющий свойство цвет, хз надо подумать какие еще свойства присущи всем объектам. Дальше на основе его создается еще например 2 объекта: живые существа, и не живые существа, они уже имеют больше свойств и методов.
Глагол - так же объект, только насчет иерархии глаголов - хз, но мб и тут нужны. Самые обязательные свойства глагола: первое - предлог, и второе - список объектов, к которым глагол применим, тогда не надо будет описывать каждый объект, если например данный глагол может быть использован к родительскому объекту.

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

mira
06.04.2011, 10:42
я ваще руский не учил) хз как там разбирать граматику итд.
С глаголами несогласен что это обьекты. Это скорее методы обьектов.
Хотя хуле я о высоком. Галуха давай делай парсер текста поделишся реализацией) я подскажу тоже пару тем чотких

Aries
06.04.2011, 10:53
я ваще руский не учил) хз как там разбирать граматику итд.
С глаголами несогласен что это обьекты. Это скорее методы обьектов.
Хотя хуле я о высоком. Галуха давай делай парсер текста поделишся реализацией) я подскажу тоже пару тем чотких

глаголы имеют прямое отношение к методам объектов, но при разборе их 99% надо выделять в отдельные объекты...
Грубо говоря должно быть 2 объекта, один - описывает предмет, его свойства и действия, которые применимы, второй - описывает что и как делается и к каким объектам можно применить...
Хотя в принципи если в объекте предмета ввести доп свойства типа действие,которое надо выполнить и т.д., то можно и так... Но по мне это не так удобно...

А что по поводу грамматики сложного?)) Я в принципи привел пример самой простейшей и примитивной грамматики как ее написать и разбирать, но между тем любое предложение в ней и так уже можно строить... И при таком подходе наращивание правил грамматики при правильно построенном коде вообще не должно составить труда...

По-моему, осталось придумать правильную внутреннюю форму представления и можно приступать кодить xD

alexteam
06.04.2011, 12:49
у амебы есть интеллект ? Х_х

mira
06.04.2011, 18:11
у амебы есть интеллект ? Х_х

а ты думал? делитса деленеем это тебе не СОКЕТЫ хукать!!111

Link
07.04.2011, 01:11
mira, и не гоори!

Вот как сейчас помню... Плаваешь ты - плаваешь, хватаешь всех ложеножкой... хорошо...
А тут БАЦ! деление. Смутные чувства, раз - а вас уже двое...

destructor
07.04.2011, 01:58
некий словарь для описания всех слов, а так же только тут уже должно быть описание какой-то физики, т.е. к примеру слово убей может быть применимо к "нуб" или "моб"... фактически на выходе получим "компилятор" для определенного языка...
и теоретически он сможет работает

Добавлено через 2 минуты
ну теперь я понимаю\увидел почему ты постоянно писал "как в копиляторе"

mira
07.04.2011, 11:41
я тока непонимаю во что приводить фразу для обработки програмой. Толи в какуюто иерархию обьектов толи еще в че.
Вот фраза 'эй вася справа есть аденка?' какая будет иерархия?)
и как фраза будет выглядеть в виде промежуточных даных чтоб быть однозначно понятной движку

Добавлено через 51 минуту
парсим,должо получитса чето типа:
вася(prop справа)
адена.(prop есть)?
Затем
o1:=findobj(root,'вася',<prop=справа val=true>')
if o1=nil them exit
o2:=findobj(o1,'адена',<prop=count val!=0>')
if o2<>nil then makeanswer(1) else makeanswer(0)

Добавлено через 3 минуты
модеры добавте теги кода то о5 уе бище получилось)

Aries
07.04.2011, 12:05
фактически на выходе получим "компилятор" для определенного языка...
и теоретически он сможет работает

Добавлено через 2 минуты
ну теперь я понимаю\увидел почему ты постоянно писал "как в копиляторе"

аминь!!))

я тока непонимаю во что приводить фразу для обработки програмой. Толи в какуюто иерархию обьектов толи еще в че.
Вот фраза 'эй вася справа есть аденка?' какая будет иерархия?)
и как фраза будет выглядеть в виде промежуточных даных чтоб быть однозначно понятной движку

Ну тут я даж сам не понимаю, что ты написал)))) Это Вася, который сидит справа, или аденка справа от Васи?)))

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

В итоге получаем, что: "эй вася, есть аденка?" и "есть аденка?" не различаются во внутренней форме...

При этом строка "эй вася, есть аденка и что-то" во внутренней форме будет записана
что-то - аденка - 2 - есть

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

mira
07.04.2011, 13:01
а мне кажетса галуха уже слил эту затею :р

Aries
07.04.2011, 13:06
Ну пусть сливает))) никто ж не запрещает мну излагать свои мысли?)))))))))))

mira
07.04.2011, 13:10
-эй вася справа есть аденка?
-я ем сверху, адена есть нельзя.

Aries
07.04.2011, 13:12
ахахаха))))
ну данный вариант возможен только при плохо построенном словаре)

destructor
07.04.2011, 14:10
осталось нарулить механизмы которые позволят учить правила граматики, описания слов.
типа ребенок русский язык тоже не сразу компилирует.

Добавлено через 1 минуту
ну данный вариант возможен только при плохо построенном словаре)
не только,
возможно это китайский фармер, который плохо понимает язык.

upd:
хм... у этого китайского фармера точно такойже "плохо построеный словарь"...

Aries
07.04.2011, 14:25
Ну опять же из теории компиляторов можно посмотреть готовые механизмы для правил грамматики (Автомат с магазинной памятью, Синтаксически-управляемый перевод, матрицы переходов и т.д.). На основе их можно попробовать что-то подобное только свое сделать.
А про описание слов, это пока смутно видится, что вообще это такое получится))

PS что-то сейчас стал обдумывать. И понял, что на самом первом этапе у нас грубо говоря просто должно идти посимвольное сканирование, разбиение на токены (например слово, цифра, знак препинания, или более усложненное с разбиением слов на категории (глагол, сущ, прил и т.д.)) и это является лексическим анализатором... Т.е. на входе последовательность символов, на выходе последовательность токенов. А сворачивание по правилам грамматики и т.д. - это уже на этапе синтаксического анализа.

destructor
07.04.2011, 14:34
А про описание слов, это пока смутно видится, что вообще это такое получится))тут не "физику" слов надо описывать, задача будет нерешаемая, надо наоборот от этого уйти.

Aries
07.04.2011, 14:43
тут не "физику" слов надо описывать, задача будет нерешаемая, надо наоборот от этого уйти.

с этим согласен. Точнее физика нужна, но она грубо говоря может получаться на основе применимости действий к тем или иным объектам.
Т.е. в словаре например должно быть уже описание как записывается слово во внутреннюю форму, например слова имеющие одинаковый смысл, разные формы одного слова в итоге должны иметь одно значение. Например подвинуть, передвинуть, переставить и т.д. - move.

и запись вида adena-move (во внутренней форме). Будет уже определяться методом move для объекта adena.

При этом эта форму будет формироваться из записи: подвинь адену, передвинь адены и т.д.

supernewbie
07.04.2011, 15:02
по-моему это бред, предлогаю сделать также как в человеческом мозге, в нём есть только явления, а описать их можно как угодно
и не надо пытатся выражать мысли которых нет)

destructor
07.04.2011, 15:09
Будет уже определяться методом move вот от этого и не надо делать.
оно както обьясняется ребенку что такое "move", тут надо чтото похожее

Добавлено через 1 минуту
предлогаю сделать также как в человеческом мозге, в нём есть только явления,предлагаю привести пример:D

supernewbie
07.04.2011, 15:12
это не так просто как я думал)
но это единственный способ сделать робота который думает, а не оперирует символами

Aries
07.04.2011, 15:21
вот от этого и не надо делать.
оно както обьясняется ребенку что такое "move", тут надо чтото похожее


Хм, а как ты себе это представляешь?)) Мое представление было - как раз вшитие каких-то базовых понятий и операций... А словарь, тогда бы представлялся как что-то похожее на пояснение, что передвинуть, это то же самое, что move.

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

думаешь, ты один решил так сделать, и до сих пор никто не задумывался об этом?))) по-моему еще никто не смог описать мозговую деятельность и пока даже не представляют всю ее))))

mira
07.04.2011, 16:38
я пробывал сначала разбивать на слова. Слова разбивать на части приставка/корень/окончание. Корень искалса в базе а из окончания определялса типа время род хз как назвать я не учил руский. Иза этова отчасти и тормознуло- как можна описать граматику языка незная ее.

Проблема там еще сразу возникла с такими вещами. На пример если слово не было определено в бд целиком оно ра3биралось:
посуда -по(прист) суд(корень)а(окончание)
дорога до(прист) рог(корень)а(окончание)

я понял что это жопа
могу прогу даже выложить пытающуюся разбирать слова правро в бд там мб слов 100 забито)

Добавлено через 6 минут
насчет базовых определений согласен с аерис. Иначе вы врятле ченеть сделайте прямо.

Но пока не вижу начала работы даже парсинга)

destructor
07.04.2011, 17:04
Британские ученые сообщают:
По рзелульаттам илссеовадний одонго анлигйсокго унвиертисета, не иеемт
занчнеия, в кокам пряокде рсапожолены бкувы в солве. Галвоне, чотбы
преавя и пслоендяя бквуы блыи на мсете. Осатьлыне бкувы мгоут селдовтаь
в плоонм бсепордяке, все-рвано ткест чтаитсея без побрелм.
Пичрионй эгото ялвятеся то, что мы не чиатем кдаужю бкуву по
отдльенотси, а все солво цликеом.

если в парсинге учитывать эту особеннось, будет проще или сложнее?

supernewbie
07.04.2011, 17:22
не забывайте что он будет общатся в мире л2, со школьниками)
которые в 40% случаев говорят "че" -< причём именно так)

mira
07.04.2011, 17:53
Британские ученые сообщают:


если в парсинге учитывать эту особеннось, будет проще или сложнее?

солжнее

Aries
07.04.2011, 20:46
Британские ученые сообщают:


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

не забывайте что он будет общатся в мире л2, со школьниками)
которые в 40% случаев говорят "че" -< причём именно так)
ну ни что не мешает описать грамматику такого "русского" языка))) Но для начала описать хотя бы мизерное подмножество правильного русского языка, а дальше уже и думать об остальном. Хотя конечно такое механическое описания языка - довольно геморная работа, но никуда от нее не деться... Если только сразу копать в сторону обучения бота юзать гугл))))))

Добавлено через 7 минут
я пробывал сначала разбивать на слова. Слова разбивать на части приставка/корень/окончание. Корень искалса в базе а из окончания определялса типа время род хз как назвать я не учил руский. Иза этова отчасти и тормознуло- как можна описать граматику языка незная ее.

Проблема там еще сразу возникла с такими вещами. На пример если слово не было определено в бд целиком оно ра3биралось:
посуда -по(прист) суд(корень)а(окончание)
дорога до(прист) рог(корень)а(окончание)

я понял что это жопа
могу прогу даже выложить пытающуюся разбирать слова правро в бд там мб слов 100 забито)


все таки надо начинать с разбора предложения и его структуры... А потом уже задумываться о разборе слов... Тут пока не научишь распознавать хотя бы строку :"я делать что-то", безтолку думать об окончаниях, приставках.


Но пока не вижу начала работы даже парсинга)
Ну я например готов прицепиться к кому-нить в помощь (в связи с ооооочень ограниченным временем сложно себе более глобальные задачи ставить, хотя вопрос этот очень интересен).

ЗЫ тут сегодня выяснил, что ребята знакомые занялись разработкой искусственного языка для общения с роботом, но будут стараться приблизить его к естественному))) Посмотрю, что у них выйдет, мб подкинут какие-нить идейки заодно)

mira
08.04.2011, 01:48
все таки надо начинать с разбора предложения и его структуры... А потом уже задумываться о разборе слов... Тут пока не научишь распознавать хотя бы строку :"я делать что-то", безтолку думать об окончаниях, приставках.

а как ты распознаеш структуру не зная где существительное где глагол где прилагательное =/ или в базе хранить каждое слово во всех склонениях?

Aries
08.04.2011, 02:06
нет, эт ни в коем случае так нельзя хранить... Просто использовать для начала глагол в одной форме... Будет конечно кривовато звучать, но зато понятно для бота...

SeregaZ
12.04.2011, 02:41
ооо! какая тема хорошая :) половину прочитал, дальше терпение кончилось...
сам чем-то подобным занимаюсь, но я остановился на варианте таблицы вопросов и ответов. так как нет ни малейшего понятия как перевести текст в математику :)
примерно 100 фраз набралось, потом случился творческий кризис и развитие застопорилось.

mira
12.04.2011, 10:24
Если тебя устраивает табличный механизм бери длл от айсикю бота 'болтун' там экспортируетса 3 функции
loadmind(filename:pchar)
savemind(filename:pchar)
getanswer(vopros:pchar):pchar
бдшка ответов в понятном текст формате. Интелекта 0 но отвечает адекватно вроде хоть и тупо

angel653922
15.04.2011, 12:05
Есть у меня зачатки такова проекта но сразу скажу нужна