PDA

Просмотр полной версии : Кто-то увлекается AI, чатботами и т.д. ?



!Vlad
01.05.2006, 11:01
Всем привет!

Интересуюсь разработками в сфере ИИ. В первую очередь чатботами, т.к. если комп начнет действительно понимать речь - это будет большой шаг вперед в IT.

Около года назад написал на VB примитивную прогу-справочник о себе :-).
Два окна и фотка. В "мозгах" база вопросов - ответов. Если введенный вопрос отсутствует в базе, прога отвечает случайным образом : "Не знаю", "Не помню"... и т.д.

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

Поэтому:
Обращаюсь ко всем программистам Одессы, которые интересуются/занимаются подобными разработками:

"Разом нас багато..." т.е.

Чтобы сделать что-то значимое нужна команда хотябы из 5-7 человек.

Цель: создание чат-ботадостойного как минимум для участия в номинации на ежегодую премию Лебнера, максимум - проходящего тест Тьюринга . Возможно попутно будут еще коммерческие заказы из области IT.

Приглашаю к совместной работе!


Дополнено 07.06.2006

В связи с функционирование нового сайта проекта прошу продолжать обсуждение тут:

www.logos.clan.su

Яр
01.05.2006, 15:21
Ну это довольно сложная затея, если ставить серьёзные цели :)

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

!Vlad
01.05.2006, 16:20
Ну это довольно сложная затея, если ставить серьёзные цели :)

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

да не спорю :-)
такое за два дня не делается....
и по началу это скорее действительно будет просто прикольно :)

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

поживем - увидим....

!Vlad
01.05.2006, 18:57
............... чуть не забыл,

Для проэкта нужны:

Программер (delphi)
Психолог (НЛП и т.д.)
Дизайнер (Photoshop)
Web-программер
двое помошников - пользователей ПК

Думаю к началу лета соберемся :-)

!Vlad
01.05.2006, 20:29
исправление - вместо 2 помошников:

переводчик (англ-рус и обратно :-)
лингвист

boo
01.05.2006, 20:42
Могу быть тем самым переводчиком.

VOD
01.05.2006, 20:47
Могу быть вторым переводчиком(чем его функции будут отличаться от функций лингвиста?)

!Vlad
01.05.2006, 21:45
начало мне нравится!

по идее в функции переводкика должно входить:
- консультации по грамматике английского :-)
- обяснение различий в структуре речи в англ и русском (правила построения предложений, соглосование временен и т.д.)
- общение с ботом на англ
- анализ ПО для автоматизированного перевода

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


Это все ОЧЕНЬ примерно, по ходу работы будет яснее.
Просто я чуствую, что специалисты в этих сферах нужны.



Еще вот что : пожалуйста прочитайте "Историю одного байта"
по моему это важнее чем все остальное вместе взятое....

Inky
01.05.2006, 21:47
Гы, а чего программер именно на делфи? Если он один, то не всё ли равно на чем он пишет?

!Vlad
01.05.2006, 21:50
Могу быть тем самым переводчиком.

Супер!

ты на РГФ учишься?

думаю где-то за месяц народ соберем, до этого просто заглядывай на форум
:-).

!Vlad
01.05.2006, 21:55
Гы, а чего программер именно на делфи? Если он один, то не всё ли равно на чем он пишет?

не программер не один :-)

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

!Vlad
04.05.2006, 19:35
Предлогаю Вашему вниманию демо-версию сайта пректа

www.logosofteam.jino.ru

Яр
05.05.2006, 09:21
Проект, вижу, на первых парах - на коллективных началах и некоммерческий?.
Жаль времени не много, а так смог бы, наверное, чем-то помочь).

На счёт программирования - почему только делфи?
Зачем ограничиваться рамками одной среды и одного языка?.

Ещё, думаю, без какого-нибудь математика будет не обойтись. Ибо по ИИ написаны огромные труды в этой области, и понятны они лишь избранным :).

В общем, интересная идея. И сложная. Похоже, выявление каких-то новых зависимостей и разработок в этой области - как минимум неплохая научная работа.

Acden
13.05.2006, 11:39
Есть такая Российская разработка.

Называется, кажется ChatMaster.

Ещё была обалденная вещь, называется подобным образом.

!Vlad
13.05.2006, 12:32
Есть такая Российская разработка.

Называется, кажется ChatMaster.

Ещё была обалденная вещь, называется подобным образом.

:-)
да, а еще "Болтун", Эллочка, Eliza, A.L.I.C.E, jabberwacky (чемпион в последней номинации Лебнера ) и т.д.
но: Премию в 100 000 у.е. за прохождение теста Тьюринга еще никто не получил
...

homo ludens
15.05.2006, 21:56
Задачка конечно интересная, но для создания хоть как-то болтающего прототипа требуется имхо команда из 3-5 математиков для начала.
Я работаю в области прикладного AI и представляю насколько эта задача неалгоритмизируема.
Мне кажется, успешность такого проекта еще зависит и от того, кто задает направление - программист или лингвист.
Интересно было бы пообщаться на тему возможных реализаций.

Да и на счет Дельфей сомнительно, большие проекты на них плохо ложатся.
Вот тут вспомнился старый древний www.cyc.com такого монстра AI как Дуглас Ленат. Тоже язык понимает (анлийский) плюс полностью среда разработки на своем диалекте ЛИСПа.
Можно брать opensource версию и накачивать своими онтологиями.

!Vlad
15.05.2006, 22:33
хоть как-то болтающего

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



Я работаю в области прикладного AI и представляю насколько эта задача неалгоритмизируема.


Очень уважаю опыт, но у меня изначальный посыл такой -
причина - следствие
т.е. у всего есть причина, даже у каждой сказанной человеком фразы. Причин много. Знания, развитие интеллекта, словарный запас, настроение.... и т.д.
Не в коем случае не хочу навязывать свою точку зрения, но если рассмотреть все с точки зрения причино-следественной определенности, то
алгоритм есть у всего.
Ясно что у человека он очень сложен и порой не пресказуем, но разве можно предсказать генератор случайных чисел?







Мне кажется, успешность такого проекта еще зависит и от того, кто задает направление - программист или лингвист.



по идее оба...





Интересно было бы пообщаться на тему возможных реализаций.



давай пообщаемся :-)




Да и на счет Дельфей сомнительно, большие проекты на них плохо ложатся.


возможно





Вот тут вспомнился старый древний www.cyc.com



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





Можно брать opensource версию и накачивать своими онтологиями.


может есть смысл с чистого листа начать?




Можно поинтересоватся каким именно практическим применением AI занимаешься?

Апельсинка
15.05.2006, 23:04
В идее чувствуется размах... Не хочу гасить азарт автора, но реализация подобной задумки силами двух программистов да ещё и на Дельфи - задача антиреальная.

!Vlad
15.05.2006, 23:28
В идее чувствуется размах... Не хочу гасить азарт автора, но реализация подобной задумки силами двух программистов да ещё и на Дельфи - задача антиреальная.

спасибо за поддержку :-)

pEtr0
16.05.2006, 11:11
Амбициозная задача!!!

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

!Vlad
16.05.2006, 12:48
Амбициозная задача!!!

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

На счет концепции согласен полностью.

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

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

pEtr0
16.05.2006, 13:51
На счет узкой темы - не совсем, ...

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



... в идеале нужно научить программу самостоятельно находить нужные знания в сети.

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

!Vlad
16.05.2006, 14:03
На счет узкой темы - не совсем, ...

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




мне кажется что знания второго типа - это скорее алгоритм а не информиция, т.е. он по идее должен быть "вшит" в программу. На счет того что этим надо занятся в первую очередь - так это однозначно






... в идеале нужно научить программу самостоятельно находить нужные знания в сети.

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

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

!Vlad
16.05.2006, 14:12
Сейчас у меня главная задача - собрать коллектив.
Хороший коллектив.
Команду.

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

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

pEtr0
16.05.2006, 17:13
Это не просто.
Но только совместная работа в дружной и сплоченной группе даст результаты.


Согласен. Но коллектив нужно собирать вокруг какой-то идеи, в которую все должны верить, тем более что работа будет основана на чистом энтузиазме.

В любом случае тема очень сложная но и очень интересная. Если она получит серьезное развитие, буду рад поучаствовать или хотябы просто пообщатся :)

!Vlad
16.05.2006, 18:34
Согласен. Но коллектив нужно собирать вокруг какой-то идеи, в которую все должны верить,


возможно идея может быть выражена целью, а путь достижения сформирован всей командой





тем более что работа будет основана на чистом энтузиазме.


:-) не факт :-)
пока без коментариев, но думаю через несколько месяцев будет о чем говорить






В любом случае тема очень сложная но и очень интересная. Если она получит серьезное развитие, буду рад поучаствовать или хотябы просто пообщатся :)


а вот это очень радует:-)

homo ludens
16.05.2006, 20:01
наверное стоит определить что значит "хоть как-то" , т.к. прога описаная в первом посте тоже вроде болтает

хоть как-то болтающая - это программа проходящая тест Тьюринга в ограниченной предметной области. Например есть программы, которые проходят тест Тьюринга среди детей-школьников младших классов.
Хотя я лично удовлетворился бы естественно-языковым запросчиком к текстовым базам данных/знаний. Эффективным. ИМХО такая весчь была бы полезнее, чем чатбот и стоила бы дороже, чем премия Лебнера.


алгоритм есть у всего

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


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


плюс естественно-языковой интерфейс. Т.е. почти ВСЕ, что надо для создания чатбота имитирующего человека. Хотя я конечно не агитирую, просто это первое, что вспомнилось.



может есть смысл с чистого листа начать?

ну, это мазохизм какой-то получается. ;-) можно и RISC-процессор на коленке спаять, просто сильно дорого и неэффективно.


Можно поинтересоватся каким именно практическим применением AI занимаешься?

Классификация паттернов (нейронки, деревья решений, генетические алгоритмы, генетическое программирование, SVM) для одной финансовой конторы. Им это действительно нужно.



давай пообщаемся

могу скинуть свое видение проблемы, если интересно. Только оно несколько пессимистическое, увы...

!Vlad
16.05.2006, 21:25
наверное стоит определить что значит "хоть как-то" , т.к. прога описаная в первом посте тоже вроде болтает

Хотя я лично удовлетворился бы естественно-языковым запросчиком к текстовым базам данных/знаний. Эффективным. ИМХО такая весчь была бы полезнее, чем чатбот и стоила бы дороже, чем премия Лебнера.



100 % я тоже об этом думаю

Для четкости в понимании:

Есть любой текст (книга, учебник, help.doc и т.д.)
Задача в том что-бы на любой вопрос об информации содержащейся в этом тексте, программа могла ответить. Примерно так?





ну, для меня будет сюрпризом существование алгоритма нахождения корней Диофантовых уравнений.


не спорю :-)





ну, это мазохизм какой-то получается. ;-) можно и RISC-процессор на коленке спаять, просто сильно дорого и неэффективно.


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






Классификация паттернов (нейронки, деревья решений, генетические алгоритмы, генетическое программирование, SVM) для одной финансовой конторы. Им это действительно нужно.


хм... интересно... это что скоринг? или фундаментальны анализ фондового рынка?






могу скинуть свое видение проблемы, если интересно. Только оно несколько пессимистическое, увы...

конечно скидывай!

[email protected]

pEtr0
17.05.2006, 09:52
могу скинуть свое видение проблемы, если интересно. Только оно несколько пессимистическое, увы...

было бы интересно почитать ([email protected]), хотя лучьше здесь выложить :)

homo ludens
17.05.2006, 12:59
Если хозяи ветки не против, я бы выложил здесь, так как это не готовый рецепт, а скорее тема для обсуждения.

!Vlad
17.05.2006, 13:11
Если хозяи ветки не против, я бы выложил здесь, так как это не готовый рецепт, а скорее тема для обсуждения.

:shock:

"хозяи ветки" - это ты про кого :D

Тема создавалась чтобы собрать не тллько коллектив, но и максимум инфы, мнений и личного опыта учасников форума.

homo ludens
17.05.2006, 13:33
тогда поехали. ;-)

Итак, прикинем для начала архитектуру нашего болтателя.

1. Естественно-языковой интерфейс - это то, что бросается в глаза, более того, после того как он туда бросился, кажется, что этого достаточно для реализации. ;-)

Однако с моей точки зрения, это всего лишь интерфейс, интерфейс, который может быть заменен с различной степенью эффективности другим интерфейсом (например GUI, XML, HTTP и т.п.) без принципиальной потери функциональности.

В самом деле, рассмотрев любой реальный диалог, можно увидеть в нем большое количество знакомых любому программисту или сетевику элементов - информативы ("блин, как теща достала..."), директивы ("а пошел бы ты на...") протоколы подтверждения ("Спасибо - пожалуйста", "дурак - сам дурак"), средства синхронизации состояний ("Ты меня уважаешь?" или "Эх, хорошо, Маша!") и т.п.

Если работать собственно с семантикой, то последовательность "Как дела любимая? - Все в порядке, милый!" полностью эквивалентна паре Get /current_state HTTP/1.0 - 200 ok. ;-)

И надежда построить реального болтателя только на ЕЯ - это надежда на создание сайта anekdot.ru пользуясть только http-протоколом и чувством юмора. Без сервера, html, веб-дезигнера и файловой системы. Да простит меня файловая система, за то, что я поставил ее после веб-дезигнера. ;-)

Короче, наполнение требуется. Т.е. некоторая база данных с некоторым содержимым.

2. База данных об общеупотребительных фактах. aka семантическая сеть. Пример - на уже приводившемся www.cyc.com
По моему мнению, эта компонента, несмотря на кажущуюся простоту наиболее сложна в реализации. Программисты-корпоратчики, способные написать драйвер мышки на Oracle с этим не всегда соглашаются, но мы их пока проигнорируем.
Пролема в том, что реляционнные технологии здесь нервно курит за дверью. Профессора-университетчики, способные доказать эстетичность нормальных форм Бойса-Кодда с этим тоже не всегда согласятся, но мы пока проигнорируем и их.
Потому что есть хороший пример. Вот возьмем например трехтомник Кнута. Или "Войну и Мир" Толстого. Или "Справочник по С++" небезызвестного трупа Страуса. Короче большую и толстую книгу. И переведем ее в реляционку с помощью крайне примитивного алгоритма. Все существительные в книге заменяем на сущности БД. Все прилагательные на атрибуты. Все глаголы на отношения БД. Алгоритм конечно не совсем корректный, но нам интересна сложность проблемы.
И вот вопрос - сколько отношений будет в такой базе? И как их нормализовать? И сколько времени будет выполняться средненький запрос с несколькими сотнями джойнов?
Вывод - нужна эффективная навигационная база данных (семантическая сеть) с кучей очень странных и неожиданных фич. Иначе человек с его скромной скоростью передачи сигнала по нервному волокну 3 м/с будет ожидать ответа неделями. Пусть мне кто-то покажет мне такую базу. И не университетские разработки public domain слепленные из курсовиков студентов, а industrial strength. Ибо работать такой базе с терабайтами.
Писать такую махину самому с нуля - минимум десятки человеколет. Хотя задачка крайне интересная. И, как мне кажется, результат стоит не сто килобаксов, в отличие от чатбота. Даже если его купит кто-то из монстров DBMS с целью эвтаназии.

3. Машина вывода.
База вообще-то должна содержать механизмы вывода фактов, которые в ней не содержатся. Т.е. механизмы логического вывода. Тут тоже проблемы, хотя имхо проблемы скорее реализации, чем теории. Однако писать свое придется, реальных пролог- или дейталог- систем под эту задачу я честно говоря не вижу. Кстати индуктивный вывод тоже должен иметь место быть. :-)

4. Наполнение базы данных. aka онтология.
Вот тоже проблема. Спросят чатбот - а правда ли, что ты жаришь картошку на медном купоросе? Или почему паркет из майонеза насвистывает, когда по нему бегаешь босиком? И что ответит чатбот? Полшестого? ;-)
Следовательно в базе должны быть практически все факты, которые известны взрослому человеку, которого наш болтатель будет имитировать. Из чего делается паркет и как жарится картошка. Человек учится этим фактам десятилетиями. Сколько будет учиться чатбот? И как этот процесс будет происходить? Руками набивать факты в базу? Можно конечно, но как-то примитивно. Коммерческая ценность бота, который знает не больше, чем операторы, набивающие текст всегда меньше, чем стоимость этих операторов. Плюс полная перепрошивка при смене предметной области. Следовательно требуются механизмы самостоятельного обучения. Которые тоже нужно начинать с нулевого цикла. Постоянное участие бота в диалогах с кучей людей, поиск инфы в Инете и т.п. А ведь есть еще информация, принципиально недоступная машине сегодня - например сравнение запахов. А разговор о запахах она поддерживать должна.
"Какие ассоциации у Вас вызывает платье Мерилин Монро на вентиляционной решетке?" - я хочу посмотреть на тот чатбот, который ответит на этот вопрос (при условии, что ответ не зашит оператором).

Общее время создания компонент - десятки, если не сотни квалифицированных человеколет.
Это время можно сильно съэкономить, если делать жестко запрограммированный чатбот с предельно суженной предметной областью, фиксированной лексикой и невозможностью самообучения. Тогда большинство компонент становятся ненужными. Но это не очень интересно с точки зрения оригинальности идеи и последующей полезности нашего Шалтай-Болтая. Игрушка, которых уже много. Я как-то на спор написал программку motherhacker - генератор матюков произвольной этажности. Единственный вариант использования этой фигни, который я вижу сейчас - это передать PHP порт в подарок на udaff.com для автоматизированного флуда на форумах ;-)

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

PS

Надеюсь эти килобайты пессимизма не убьют желание двигаться дальше, а позволят избежать повторного наступания на грабли и траты времени на то, что уже кто-то сделал.
Удачи!

SWARM
17.05.2006, 15:48
В Одессе было написано как минимум 2 чатбота, возможно еще можно найти программистов.

И решение этой задачи лежит за пределами "технического" программирования.

pEtr0
17.05.2006, 16:17
1. ...

с тем что без базы данных/знаний ничего кроме игрушек не получится согласен. Хотя ИМХО ЕЯ сильно отличается от компьютерных языков или интерфейсов, во-первых неограниченостью словаря, во-вторых неограниченостью способов исспользования языковых конструкций.
К тому же ЕЯ является сильно контекстно зависимым :) .



2. ...

Детально в описание проекта www.cyc.com не вникал, но помоему они там используют дополненую ими логику предикатов первого порядка. Насколько я знаю еще сразу после изобретения Prolog многие пытались строить на основании её различные онтологии, но дальше экспертных систем дело не зашло.



3. ...

Вывод это один из самых важных моментов... так как с помощью него можно получать новые знания без обучения на основе анализа уже накопленых. И с ним как раз очень много именно теоретических проблемм. Единственный теоретически 100% обоснованый механизм вывода, в виде метода резолюции как раз примеятся в Prolog.



4. ...

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

В любом случае попытка написать чатбота основаного на знаниях очень полезна, хотя бы в образовательных целях... Может в процессе удастся найти новый способ представления знаний, способный решить все проблеммы :wink:


З.Ы. а можно взглянуть на генератор мата :?:

pEtr0
17.05.2006, 16:21
В Одессе было написано как минимум 2 чатбота, возможно еще можно найти программистов.

И решение этой задачи лежит за пределами "технического" программирования.

а сами программы можно найти, чтобы узнать стоит ли искать программистов? :)

!Vlad
17.05.2006, 18:27
супер!
homo ludens, пожалуйста!
скинь алгоритм своего чувства юмора, :wink:
можно без естественно-языкового интерфейса, без безы данных, без машины вывода, без средств наполнения.
Если бы так писали лекции хотя бы половина преподов, мы бы искоренили непосещяемость вузов и создали бы предпосылки для научно-технической революции....


ну теперь по сути


1 Интерфейс.
На моем столе сейчас лежит толстенная такая книга....
"Русский язык" называется.
там все от фонетики до стилей речи

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

задача не на два дня, но и не на мега-профессионало-человеко-год.



2. База

попробую включится в пример с многотомным толмудом знаний.

при условии реализации небольшой части интерфейса описанного выше, не трудно будет заполнить БД такой структуры:

Таблица 1
Имя = Существительные
Имя поля №1 = Существительные
( трудно сказать как этот объект выбился из класса "список" и попал в класс "таблица" но не в этом суть :) )

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

1 имя = девочка.бывает
2 имя = девочка.может
3 имя = девочку.можно (иногда даже нужно :D )

в 1 заносятся все прилагательные которые встречаются в тексте и относятся к существительному (девочка.бывает - красивая, страшная, неумелая....)

в 2 все глаголы которые то тексту выполняет существительное
(девочка.может - стирать, убирать, готовить, понимать, помогать, думать, любить... (если встретите - пишите на мыло :D )

в 3 все глаголы которые исполняются на существительном
(можно.девочку- пригласить, потрогать, ну и т.д. :) )

Примитивная структура, согласитесь....

но на вопрос про насвистывающий пакет, бот может ответить:
"Я прочитал 5 книг, 4 569 страниц , очень много абзацев и еще больше предложений, и не встречал чтобы пакет насвистывал. Ты меня что, за чат-бота держишь?"



это конечно далеко не интеллект и не понимание речи, просто первое что пришло в голову... :-)

3 Вывод

На сколько я знаю в лубом вузе в курс "молодого бойца" входит такой предмет как логика, с целым "разделом выводы"

Если идем от общего к конкретному, все вообще просто
(у Васи после всех пьянок болит голова
+
сегодня у Васи пьянка
=>
завтра будет :twisted:
)

В обратном случае можно примерно так
(
боксер победил каратиста
боксер победил каратиста
боксер победил каратиста

вопрос боксер победит каратиста?
БОТ РАЗМЫШЛЯЕТ

предыдущий опыт:
объект (боксер) выполнил над объектом (каратист) действие (победил)
- 3 раза
наоборот - 0 раз

Вывод
ВЕРОЯТНЕЕ ДА
)

+ есть кажется какой-то критерий Фишера или Стьюдента позволяющий определить точность модели....



4 наполнение БД

Пища для описанной системы - просто текст.
Можно запихивать гигабайтами прямо из сети, причем целенаправленно :

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

бол лезет на яндекс, рамблер, и т.д.
Запоминает все ссылки
Закачивает все страницы с всех уникальных сайтов

и вперед - пища для размышления готова....



все написанное НЕ РУКОВОДСТВО
Это только возможный подход....
Причем наибольших усилий требует на мог взглад второй пункт - организация знаний...



ПС
Пессимизма в тексте homo ludens если честно я не заметил :-)

Яр
17.05.2006, 18:47
!Vlad,
кстати, интересно об ИИ рассказано у Пенроуза в книге "Новый ум короля". :) Без рецептов, но как физико-философская сторона проблемы - довольно интересно.

!Vlad
17.05.2006, 18:56
!Vlad,
кстати, интересно об ИИ рассказано у Пенроуза в книге "Новый ум короля". :) Без рецептов, но как физико-философская сторона проблемы - довольно интересно.

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

Возможно стоит вернутся...

!Vlad
17.05.2006, 19:10
Вывод это один из самых важных моментов... так как с помощью него можно получать новые знания без обучения на основе анализа уже накопленых. И с ним как раз очень много именно теоретических проблемм. Единственный теоретически 100% обоснованый механизм вывода, в виде метода резолюции как раз примеятся в Prolog.


здается мне что алгоритмизтровать четкую логику - не тек уж сложно
могу ошибатся, но по большому счету ВСЯ она сводится к классификации, операциям со множествами и наследованием свойст. Абсолютно алгоритмизируемые вещи.
Намного интереснее нечеткая логика, могу ошибатся. но я вижу разницу между ними только в одном:

В четкой логике результат(вывод) однобитовый
(да-нет, мходит во множество - не входит)

А в нечеткой это диапазон между 0 и 1
Скорее всего что-бы написать тот интерфейс о котором я говорил четкой логики будет не достаточно...

homo ludens
17.05.2006, 22:29
З.Ы. а можно взглянуть на генератор мата?

Без проблем. Скажи куда выложить, я не хочу его сильно пускать на волю, из него флудер гнусный получается, сотни киломатюков в минуту. ;-) Админы потом будут вспоминать меня добрым словом...
Но вообще это очень примитивная поделка на perl'е.


сразу после изобретения Prolog многие пытались строить на основании её различные онтологии, но дальше экспертных систем дело не зашло.

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


Единственный теоретически 100% обоснованый механизм вывода, в виде метода резолюции как раз примеятся в Prolog.

Есть куча оптимизаций под это дело. Классическая резолюция - это прошлый век. Например если предикат, участвующий в резолюции - это отношение запчасть - поставщик в классической реляционной таблице в сотни тысяч записей, то резолюция просто задохнется. Но есть методы, которые эту штуку оптимизируют.
Кстати человек не использует резолюцию, я бы сказал, что человек не использует логику вообще (пример - "Сынок, закрой рот и кушай!"). ;-)


Может в процессе удастся найти новый способ представления знаний, способный решить все проблеммы

Эффективное представление знаний - это по моему мнению ключ ко всему, все остальное - это оболочки к системе, которая хранит это представление.

homo ludens
17.05.2006, 23:16
2 !Vlad

Алгоритм чувства юмора? Блин, это круче чатбота! А какие перспективы! Армия электронных Петросянов, флудящих на просторах Интернета ;-) Хичкок отдыхает вместе с anekdot.ru. ;-)



На моем столе сейчас лежит толстенная такая книга....
"Русский язык" называется.
там все от фонетики до стилей речи

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

ИМХО правила работы ЕЯ должны храниться в той же базе, что и онтология. И должна быть возможность их пополнения на лету. Взять справочник русского языка за основу можно, но только за основу. Критерий здесь такой - если русскоязычная система способна самостоятельно по учебнику научиться чукотскому, то все работает как надо.
Мне кстати больше нравится подход, реализованный в системе ADIOS - автоматическая дистилляция синтаксических правил прямо из текста. Это намного красивее и правильней.


Пища для описанной системы - просто текст.
Можно запихивать гигабайтами прямо из сети, причем целенаправленно

Это верно, так и должно быть. Хотя... Читал я не так давно статью - интервью с чат-ботом, который обучался, вися в нете и болтая с сотнями желающих одновременно. Результат меня лично впечатлил и напомнил, что наиболее популярная строка поиска в яндексе - "голые бабы" ;-) Во всяком случае стало понятно о чем с ним болтали посетители. ;-)


Причем наибольших усилий требует на мог взглад второй пункт - организация знаний...

Согласен на 100%.

to be continued.

pEtr0
18.05.2006, 09:50
!Vlad, зачем мучать книгу по русскому языку?... Во-первых есть готовые библиотеки морфологического, синтаксичесого, и всяких там других анализов (например http://www.aot.ru), а во-вторых каждый из нас прекрасно умел говорить и читать до того как узнал что такое "подлежащее", "сказуемое", итд :D

Четкая логика, всмысле логика 1-го порядка, уже алгоритмизирована, присем есть не только алгоритмы вывода, но и алгоритмы обучения, типа ID3... но это все не работает на больших объемах данных, плюс ко всему я сомневаюсь что логикой (в том числе нечеткой) можно адекватно описать например такие понятия как "юмор" или высказать свое отношение к Петросяну :)



Без проблем. Скажи куда выложить, я не хочу его сильно пускать на волю, из него флудер гнусный получается, сотни киломатюков в минуту.

([email protected]). Прсто когда-то начинал писать генератор бредовых текстов, на математическую тему, правда так и не закончил...

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

SWARM
18.05.2006, 11:28
В Одессе было написано как минимум 2 чатбота, возможно еще можно найти программистов.

И решение этой задачи лежит за пределами "технического" программирования.

а сами программы можно найти, чтобы узнать стоит ли искать программистов? :)

Может и можно ) только для нохождения программ надо сначала найти программистов )))

Вы дружно забыли еще одного "товарища" который должен участвовать в проекте - это философ
Потому как надо будет копировать логику Человека, а не реализовывать математическую логику, а это две большие разницы )

SWARM
18.05.2006, 11:30
Эллочка-людоедочка обходилась 30 словами , и не была программой )))

!Vlad
18.05.2006, 16:36
У меня тут некоторые мысли по поводы логики возникли.
Точнее не мысли а задача. Подскажите может это уже давно решено ...
а может нет..... :-)


пусть

X,Y - утверждения

"X и Y" конъюнкция (and)
"X или Y" дизъюнкция v (or)
"не X" отрицание ¬ (not)
"если X, то Y" импликация —> (then)

N(1...m) - массив утверждений

Опишем матрицу такой размерности

Ось №1 n(1), n(2), n(3) ... n(m)
Ось №2 n(1), n(2), n(3) ... n(m)
Ось №3 not(0), not(1). not(2), not(12)
Ось №4 and, or, then

Теперь подробнее
Рассмотрим оси 1 и 2 - это таблица в коротой представлены все комбинации двух утвержденийс учетом последовательности (сначала ось 1 потом 2)

Ось 3 обозначает NOT , т.е. с ее помощью представленны все комбинации двух утверждений причем :
в плоскости not(0) просто два утверждения
в плоскости not(1) перед первым стоит not
в плоскости not(2) перед вторым стоит not
в плоскости not(3) перед первым и вторым стоит not


С помощью четвертой оси реализована логическая связка двух утверждений


Каждая ячейка матрицы может принимать значение

Истина (1)
Ложь(0)
Неопределенность (-1)

Изначально все значения = -1


случайным образом в таблицу вносятся значения 0 и 1



Задача №1

Определить все протеворечивости
(т.е
Например
(1,2,not(0), and) = 1 противоречит (1,1,not(0), and) = 0
другими словами
(n(1) and n(2)) = true противоречит (n(1) and n(1)) = false

)

Задача №2
При условии что противоречивостей нет (убраны программо или пользоветелем по подсказкам)
заполнить все незаполненные ячейки следствиями из совокупностей уже указанных ячеек

( Пример
Изначально
(1,2,not(0), and) = 1
Результат
(1,1,not(0), and) = 1
(2,2,not(0), and) = 1
(1,1,not(0), or) = 1
(2,2,not(0), or) = 1
(2,1,not(0), and) = 1


)



Не уверен что все объясним доходчиво....
Если что не понятно - спросите.

И еще раз : хочется понимать решенная это задача или нет.

!Vlad
18.05.2006, 16:44
Четкая логика, всмысле логика 1-го порядка, уже алгоритмизирована

ну тогда все что я писал в преведущем сообщении- можете не читать :D

!Vlad
18.05.2006, 16:53
Алгоритм чувства юмора?


Звучит глупо:-)

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

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


так что .... как знать....

pEtr0
18.05.2006, 17:23
Насчет ЕЯ интерфейса к БД:
http://www.inbase.artint.ru/proinfo/proinfo.asp

homo ludens
18.05.2006, 18:01
Четкая логика, всмысле логика 1-го порядка, уже алгоритмизирована
Если нам нужна логика, то это не логика первого порядка. В реальной жизни имена предикатов тоже могут быть переменными, как в F-logic.

Другой вопрос, что можно пойти другим путем, например например реализовав ИП1 как базовую библиотеку, а вместо логики строить аналогии, в том числе и ложные. Что-то типа метаэвристического поиска.

Просто тут надо более точно поставить задачу и правильно разбить ее по этапам.

Я бы предложил не заниматься созданием гомункулуса, а попробовать начать с естественно-языкового запросчика к обычным базам данных. Эта штука с одной стороны может иметь реальную коммерческую ценность, а с другой стороны нужна и для чатбота.

А дальше можно и к онтологиям привязывать.

!Vlad
18.05.2006, 18:30
.

Я бы предложил не заниматься созданием гомункулуса, а попробовать начать с естественно-языкового запросчика к обычным базам данных. Эта штука с одной стороны может иметь реальную коммерческую ценность, а с другой стороны нужна и для чатбота.



Сейчас достаточно распространена система 1С
Программеры под нее получают неплохие деньги, т.к. она реально нужна для бизнеса.

я по образованию - бухгалтер.

предлогаю конкретизировать: написать такой интерфейс для 1С. Штука явно полезная и спрос гарантирован.

Если будет выполнена только (!) это задача можно будет решить несколько вопросов:

- сработаться командой
- заработать денег ( в бюджет участников + инвестирование на развитие)
- установить производственные связи с предприятиями
- освоиться с орг и юр вопросами интелектуальной собственности и патентования


У меня сейчас начинается сессия, в комбинации с работой это вещь весьма веселая :-)

Возможно в ближайшие два месяца удельный вес моих ответов на форуме снизится - сразу предупреждаю явление временное.

pEtr0
19.05.2006, 08:54
Сейчас достаточно распространена система 1С
Программеры под нее получают неплохие деньги, т.к. она реально нужна для бизнеса.

я по образованию - бухгалтер.

предлогаю конкретизировать: написать такой интерфейс для 1С. Штука явно полезная и спрос гарантирован.


А я пару лет назад работал программером в 1С, хотя по образованию математик :lol:
Непонятно зачем там такой интерфейс, помоему бухгалтерия штука очень сильно формализированая, и с ней работают в основном люди которые в бухгалтерии разбираются, и им ЕЯ интерфейс не нужен. Хотя возможно будет полезна штука которая может интеллектуально формировать отчеты, типа: "А сколько мы там продавали за последние 10 дней между 5:00 и 5:30?"
Мысль интересная, надо подумать.




Я бы предложил не заниматься созданием гомункулуса, а попробовать начать с естественно-языкового запросчика к обычным базам данных. Эта штука с одной стороны может иметь реальную коммерческую ценность, а с другой стороны нужна и для чатбота.

Согласен, вообще первоначальную задачу надо ставить как можно конкретнее и уже. Я думал о написании автоматической системы тестирования с ЕЯ интерфейсом, тоже штука очень полезная.

homo ludens
19.05.2006, 09:39
Я думал о написании автоматической системы тестирования с ЕЯ интерфейсом, тоже штука очень полезная.

Автоматизированная система тестирования сама по себе штука очень полезная... Где бы такую хорошую найти...

Мне кажется, что минимальный ЕЯ интерфейс должен работать с любым бэкэндом, будь то 1С, реляционка или система тестирования. Должен быть настраиваемый adaptation layer и семантика, привязываемая, возможно даже руками (как в inbase).
С другой стороны нельзя делать библиотеку без хотя бы одного конкретного применения, на котором можно оттачивать ее полезность.

Я бы выбрал поиск по текстовым базам данных. Мне кажется это наиболее общая задача, которую можно потом прикрутить и кдругим приложеиям. Опять таки, семантического WEB-поисковика с ЕЯ интерфейсом и последовательным уточнением поиска мне например часто нехватает. Пример такого поисковика без ЕЯ - Quintura search и все об этой штуке отзываются очень хорошо.
Опять таки, буржуины, услышав выражение "semantic web' сразу начинают пИсать кипятком.

pEtr0, а ты реально писал что-то по автоматическому тестированию? У меня на работе это больной вопрос.

SWARM
19.05.2006, 09:53
Хотя возможно будет полезна штука которая может интеллектуально формировать отчеты, типа: "А сколько мы там продавали за последние 10 дней между 5:00 и 5:30?"
Мысль интересная, надо подумать.


Это уже давно реализовано в обычных БД.


Мда .... Начали с теста Тьюринга закончили 1С.

homo ludens
19.05.2006, 10:25
Начали с теста Тьюринга закончили 1С.

Чтобы собрать автомобиль надо начинать с подшипника...

А тест Тьюринга имхо реально не очень полезная весчь. Да и необъективный этот тест.
Вот представь себе, что что вместо компьютера сидит его аналог - человек. Это инвалид без зрения и слуха, обоняния и осязания (ведь у компа нет этих чувств). Он паралитик, ведь компьютер не может двигаться и ему недоступны кинестетические ощущения, он не чувствует ускорения. Он асоциален - ведь он не воспитывался в нормальной семье, не ходил в школу, не любил, не простужался, никогда не видел солнца. Он общается только с десятком человек из команды программистов и онтологических инженеров, накачивающих его знаниями. Общается единственно доступным ему способом - некоторым участком кожи он может читать шрифт Брайля. А инженеры ему рассказывают о том, что такое Солнце, огонь, вода, тепло и холод и запах, страх и смех.
И тут приходит тестер из большого уютного мира и спрашивает его - "в каком месте фильма про зловещих мертвецов ты испугался больше всего?".

Давайте сравнивать так, по честному. Кто победит? Человек-инвалид, низведенный до состояния машины или машина, поднятая до уровня человека?
И будет ли это на самом деле победа, а не имитация разговора?

!Vlad
19.05.2006, 11:08
да уж...

pEtr0
19.05.2006, 11:41
pEtr0, а ты реально писал что-то по автоматическому тестированию? У меня на работе это больной вопрос.

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



Это уже давно реализовано в обычных БД.


Мда .... Начали с теста Тьюринга закончили 1С.

А можно пример какой нибудь. Просто я за год работы по автоматизации учета с помощью 1С, таких средств не видел, хотя были очень крупные проекты... А вообще чем 1С не обычная БД? :)

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

pEtr0
19.05.2006, 11:56
Мне кажется, что минимальный ЕЯ интерфейс должен работать с любым бэкэндом, будь то 1С, реляционка или система тестирования. Должен быть настраиваемый adaptation layer и семантика, привязываемая, возможно даже руками (как в inbase).

Согласен на 100%. ЕЯ интерфейс должен содержать только зания о самом языке, знания самой предметной области должны быть внешними (и в идеале независящими от языка), но допускающими представление в виде необходимом для работы ЕЯ интерфейса. Тогда для одной и той-же предметной области можно использовать несколько интерфейсов (русский, английский) и наоборот.
Кстати еще одна важная область, автоматический перевод.

!Vlad
19.05.2006, 12:28
просветите: о каком автоматизированном тестировании идет речь?

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

SWARM
19.05.2006, 12:39
Начали с теста Тьюринга закончили 1С.

Чтобы собрать автомобиль надо начинать с подшипника...

Не совсем ) Сначала "концепция" потом чертежи и только потом детали.



А тест Тьюринга имхо реально не очень полезная весчь. Да и необъективный этот тест.
Вот представь себе, что что вместо компьютера сидит его аналог - человек. Это инвалид без зрения и слуха, обоняния и осязания (ведь у компа нет этих чувств). Он паралитик, ведь компьютер не может двигаться и ему недоступны кинестетические ощущения, он не чувствует ускорения. Он асоциален - ведь он не воспитывался в нормальной семье, не ходил в школу, не любил, не простужался, никогда не видел солнца. Он общается только с десятком человек из команды программистов и онтологических инженеров, накачивающих его знаниями. Общается единственно доступным ему способом - некоторым участком кожи он может читать шрифт Брайля. А инженеры ему рассказывают о том, что такое Солнце, огонь, вода, тепло и холод и запах, страх и смех.
И тут приходит тестер из большого уютного мира и спрашивает его - "в каком месте фильма про зловещих мертвецов ты испугался больше всего?".

Давайте сравнивать так, по честному. Кто победит? Человек-инвалид, низведенный до состояния машины или машина, поднятая до уровня человека?
И будет ли это на самом деле победа, а не имитация разговора?
В этом тесте слово "победит" не совсем уместно. Это тест программы и победить может только автор этой программы, человеку участвующему в тесте врядли заплатят сумму выйгрыша )

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

Мое мнение, Вы не стого начали. Если стоит задача написать программу чат-бота то начинать надо не с накачки его правилами русского языка (еще тот гембель) а с создания "образа" )

SWARM
19.05.2006, 12:53
Это уже давно реализовано в обычных БД.


А можно пример какой нибудь. Просто я за год работы по автоматизации учета с помощью 1С, таких средств не видел, хотя были очень крупные проекты... А вообще чем 1С не обычная БД? :)


Пример запроса суммы оплат по отделам:

select sum(sal) OVER (partition by deptno order by ename) department_total

1C БД не является ) она использует MSSQL или dbase3 (bdf)

!Vlad
19.05.2006, 12:55
с создания "образа"

что ты понимаешь под "образом"?

если исходить из теории систем - все есть система (взаимосвязь елементов)
елементы системы "чат-бот" четко определил homo ludens
1. ЕЯИ
2 База
3 Машина вывода
4 Машина обучения

с формальной точки знения это все что нужно.

лично у меня "образ" ассоциируется только с эзотерикой :)
(в частности с Владимиром Мегре )

SWARM
19.05.2006, 13:03
Хотя возможно будет полезна штука которая может интеллектуально формировать отчеты, типа: "А сколько мы там продавали за последние 10 дней между 5:00 и 5:30?"
Мысль интересная, надо подумать.


Это уже давно реализовано в обычных БД.

.


да?
:D :D
скинь мне на мыло пожалуйста БД с которой смогут без предварительного обучения работать директора , учредители. топ-менеджмент...
который у нас иногда файл с трудом в другую директорию переносит...
а вместо того чтобы учиться - кроет матом IT отдел?
думаю даже у motherhacer-а, кибер-уши бы в интеграл превратились от систематического выслушивания такого.... :D


+ даже в таком монстре как 1С, с использованием пятикратной вложенности субконто (версия 7) не все запросы можно задать
напирмер
кто из контрагентов с которыми мы в прошлом году работали по газу и котрые рассчитались с просрочкой, нам сейчас больше всего должен за шарикоподшипники?

- а подобное спашивают :D
1C не монстр ) монстров Вы не видели ))
А теперь наводящий вопрос: Сколько успешных предприятий Вы вокруг себя наблюдаете где директора и учредители работают с БД ? Все коммерческие вопросы решаются в ресторанах а не за экраном компьютера )

SWARM
19.05.2006, 13:12
с создания "образа"

что ты понимаешь под "образом"?

если исходить из теории систем - все есть система (взаимосвязь елементов)
елементы системы "чат-бот" четко определил homo ludens
1. ЕЯИ
2 База
3 Машина вывода
4 Машина обучения

с формальной точки знения это все что нужно.

лично у меня "образ" ассоциируется только с эзотерикой :)
(в частности с Владимиром Мегре )
А с практической точки зрения это запчасти и не более того.
"Образ" это модель поведения , набор часто используемых слов (понятий), реакция на внешние раздражители (положительная , отрицательная , безразличная). Пример : Вы можете себе представить чтобы 2 системных администратора лет 20 -25 обсуждали вопрос что дало Русской литературе "Слово о полку Игоревом" или они найдут более интерестную с их точки зрения тему )

homo ludens
19.05.2006, 15:00
"Образ" это модель поведения , набор часто используемых слов (понятий), реакция на внешние раздражители (положительная , отрицательная , безразличная).

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

Кроме того, образ - это не шасси автомобиля (т.е. абстрактная концепция выраженная в конкретных библиотеках), это положение ручек громкости на магнитоле ;-) Имея правильно разработанный движок все можно подрегулировать. А самое первое, что надо разрабатывать - это шасси.
ИМХО в крупных проектах безрисковая разработка сверху вниз возможна лишь при крутом менеджменте и больших ресурсах. В нашем случае такого нет, поэтому разрабатывать надо снизу вверх. Что не исключает этап планирования и разработки базового кода или соглашений о стиле кодирования.

SWARM
19.05.2006, 16:46
Ага , писали стратегическую игру , а наваяли движок под квест )) В результате ни то ни другое

pEtr0
20.05.2006, 13:38
Пример запроса суммы оплат по отделам:

select sum(sal) OVER (partition by deptno order by ename) department_total

1C БД не является ) она использует MSSQL или dbase3 (bdf)
...
А теперь наводящий вопрос: Сколько успешных предприятий Вы вокруг себя наблюдаете где директора и учредители работают с БД ? Все коммерческие вопросы решаются в ресторанах а не за экраном компьютера )

Чето это на естественный язык не сильно похоже, слегка видоизмененный SQL.
А под БД я имел ввиду слегка более общее понятие, но это не важно. :)

А вот насчет целесообразности. Деректора с учредителями в ресторанах, принимают решения, но до этого они к этому очень тщательно готовятся изучая информацию которую им предоставляют бухгалтера, кладовщики и менеджеры. И чем быстрее и в более удобном виде они информацию получат тем правильнее они смогут принять решение...
Помню обслуживал одну контору, так там директор каждый день прибегал в бухгалтерию и требовал новый отчет... причем иногда очееень оригинальные вещи выдумывал, и все это надо было програмить. Так вот я тогда попытался чтобы меня меньше трогали, это дело унифицировать, написал афигенно сложный отчет который по идее должен был делать все что сможет придумает начальство... но ничего не вышло, в бухгалтера и менеджеры не смогли разобратся как с ним работать... и все равно каждый раз когда им чтото было нужно приходилось к ним бегать.
Я к тому что увеличение универсальности любой программы, всегда ведет к увеличению сложности её интерфейса(в широком смысле этого слова). А единтвенный сложный интерфейс которым владеют все люди это ЕЯ. :!:

pEtr0
20.05.2006, 13:48
А с практической точки зрения это запчасти и не более того.
"Образ" это модель поведения , набор часто используемых слов (понятий), реакция на внешние раздражители (положительная , отрицательная , безразличная). Пример : Вы можете себе представить чтобы 2 системных администратора лет 20 -25 обсуждали вопрос что дало Русской литературе "Слово о полку Игоревом" или они найдут более интерестную с их точки зрения тему )


Вот тут согласен. ИМХО создаие чатбота, без его индивидуализации не получится. Бот каким-то образом позиционировать себя во времени и простанстве, а возможно и в обществе. А насчет часто используемых слов и тем, то для этого во-первых у бота должна быть память, а во-вторых она должна быть ассоциативной.

!Vlad
20.05.2006, 16:32
Помню обслуживал одну контору, так там ...
знакомая ситуация... :D

pEtr0
23.05.2006, 13:36
Обзор сайтов по ИИ:
http://alephegg.narod.ru/Refs/Diagonal.htm

!Vlad
23.05.2006, 14:07
Обзор сайтов по ИИ:
http://alephegg.narod.ru/Refs/Diagonal.htm

список внушительный


Сейчас у нас есть сайтик
www.logosofteam.jino.ru
Все содержание уже безнадежно устарело....

Хотелось бы услышать мнения по поводу предназначения сайта и его содержания.

у меня мысли следующие

Назначение
- информирование о деятельности
- привлечение участников

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

Прошу всех высказать свое мнение

homo ludens
25.05.2006, 20:11
Итак, те идеи, которые появились в результате совместного употребления некоторого количества пива.

1. Есть смысл разделить уровень решения. В частности можно поставить упрощенную версию задачи.
Есть простая реляционка с минимумом сущностей и отношений. Предположим, что есть некоторый искусственный язык запросов к ней, язык, который реализует все возможные запросы (? возможно OQL). Попробуем построить множество всех фраз ЕЯ, соответствующих запросам на искусственном языке. Особых проблем я в этом пока не вижу, вообще можно использовать технику из inbase.
Однако если мы начинаем говорить о диалоге, у нас возникают "скрытые переменные". Например последовательное уточнение вопросов. В процессе сессии происходит накопление знаний системы о собеседнике.
Пример.
Человек. - А скажи-ка милый, почем у тебя ноутбуки.
Шалтай-Болтай. - От 300 до 5000 убитых енотов.
Человек. - А фирмы IBM?
Шалтай-Болтай (вспоминая предыдущий вопрос).
- 1-2 килобакса. А тебе сколько надо?

Т.е. в этом случае уже приходится анализировать последовательности взаимодействия, т.е. перечислять модели диалога (например последовательное уточнение, приведенное выше).

С этого варианта задачи можно попробовать начать.

2. Более полная постановка задачи.
Есть некоторая база данных. Эта база не является реляционной, более того, она достаточно сложна и является каким-либо представлением текста. Это может быть соответствующим образом проиндексированная семантическая сеть или это может быть просто Интернет, доступный через поисковики.
Необходимо построить систему, способную вытаскивать информацию из предметной области по ЕЯ-запросу и компилировать ее в текст, поддерживая при это некоторые можели диалога.

Пример.

Ч. - Что нового в разработке квантовой криптографии?
Ш. - С какого времени Вас интересуют изменения?
Ч. - Последние пару лет.
Ш. - Наиболее выдающимся достижением за последние пару лет является ... бла-бла-бла (пересказывает википедию, дает ссылки на источики и растекается мысью по древу)
Ч. А более растянуто можно? Мне реферат сдавать надо.

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

Упрощенный вариант может не сработать. Потому что механизмы диалога могут быть частью базы данных предметной области. В этом случае вариант 1 только отдалит нас от решения проблемы.
Однако попробовать надо, хоть шишек набьем. ;-)

Поток сознания (вероятно вызванный нехваткой алкоголя в крови ;-) ) о восстановлении семантических систем по структуре языка выложу позже, как появится время.

!Vlad
26.05.2006, 04:30
вспоминая вкус пива, задумался о том что обе задачи (1 и 2) имеют два больших блока
1. "Понимание" запроса и уточняющий диалог
2. Вытягивание ответа из б/д

причем пункт 1, по идее, абсолютно идентичен для обеих задач
т.е. набитые шишки пойдут впрок:-)

!Vlad
26.05.2006, 04:40
механизмы диалога могут быть частью базы данных предметной области.



Во все этой систете вроде 3 элемента:

1 Человек, жаждущий информации
2 Киборг птица-говорун
3 База данных (либо именуемая тремя буквами реляционка (tab)
( а вы о чем подумали?:-) либо хитросплетенная семантическая сеть.

т.к. диалог проходит между 1 и 2, по идее там и должна быть зашита его механика. т.е. у Шалтай-болтаю не помешает своя база правил диалога обновляемая в процессе общения.

homo ludens
26.05.2006, 06:25
набитые шишки пойдут впрок
Обучение - процесс равномерного покрытия шишками всей поверхности тела. ;-)
А если учесть, что шишками придется и болтателя покрывать, то впрок пойдет дважды. ;-)


диалог проходит между 1 и 2, по идее там и должна быть зашита его механика
поскольку птица-говорун способна поддерживать разговоры о собственных внутренностях, следовательно есть пример ситуации, где база диалога и база предметной области совпадают.
Так что более общим вариантом является хранение ЕЯ-правил и базы предметной области вместе.

Ушел распечатывать доку по Cyclop....
:-)

homo ludens
26.05.2006, 06:34
Наглая гипотеза, которая может позволить существенно сократить количество жопочасов, необходимых для реализации болтателя.

Преамбула:
ИМХО ЕЯ является отображением некоторой коллективной семантической сети, распределенно хранящейся в головах людей - носителей языка. Т.е. есть некоторые структуры, представляющие собой ЕЯ конкретного носителя. Есть некоторые внутренние структуры объектов (тезаурус, семантическая сеть), которые хранятся в мозгах носителя. Внешние структуры являются отображением внутренних. У разных носителей языковые структуры синхронизированы и синхронизирован внутренний тезаурус. Причем внутренняя синхронизация гораздо слабее, чем соответствие языковых структур. ЕЯ в полном объеме - это объединение структур всех носителей. Аналогично можно построить обобщенный внутренний тезаурус.

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

Пример, который может прояснить эту гипотезу.

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

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

Алгоритмы чисто статистические, и в принципе могут построить общение начиная с нулевых знаний о языке.

pEtr0
26.05.2006, 09:26
Итак, предлагаю начать процесс набивания шишек....

Задача в первой постановке.

Составные части:
- Синтаксический анализатор (СА)
- Модель предметной области (МПО)
- Язык запросов (ЯЗ)

Итак алгоритм работы системы, в общих чертах:
1. Получение запроса от пользователя

2. Синтаксический разбор запроса. Подлежащие, сказуемые, дополнения итп. Тут может возникать неоднозначность.

3. Перевод запроса на язык представления предметной области. Т.е. все этиподлежащие, сказуемые, местоимения и т.д. нужно превратить в "множество объектов и отнощений между ними" :)
С помощью объеденения запроса с МПО разрешаются неоднозначности и ссылки, либо самостоятельно либо с помощью пользователя (уточняющие вопроссы).

4. Перевод из представления МПО в ЯЗ. Это по идее должно быть не сложно... хотя мало ли :)

Наиболее сложным является построение МПО и 3-й шаг. Вообще в идеале МПО должна строится автоматически в результате анализа структуры БД. Либо с небольшой помощью человека, которому будут задаватся воросы: "А что собственно, означает поле "Sex" в карточке сотрудника?"

Синтаксический анализатор, я думаю можно найти, ибо его писать это дело очень долгое и сложное (например что-то есть тут www.aot.ru)

pEtr0
26.05.2006, 09:53
Что касается задачи во второй постановке и "наглых гипотез" :)

ИМХО статистическая обработка ЕЯ для болтателя не подходит. Статистически мы можем построить только модель языка, но не внутренние структуры мозга. Но язык отображает процессы которые проиходят с внутренними структурами - выводы, ассоциации, воспоминания... По сути статистически моделируя язык мы строим болтателя как черный ящик, нас не интересует его внутрення структура, главное взяимосвязь между входом и выходом. А в осмысленом разговоре эта связь слишком сложна.
Например, у бота спрашивают: "Вы не позскажите который сейчас час?"
Ну он до этого проанализировал много тысяч подобных диалогов и определил что чаще всего на этот вопросс отвечают "пол шестого", и всегда будет отвечать именно так :).

... а для поиска в больших массивах текстовой информации самый раз. Но иенно поиска, а не скажем формировния сжатого изложения.
Вот пример поисковика с кластеризацией: http://www.nigma.ru

AmonRa
26.05.2006, 10:01
Человек. - А скажи-ка милый, почем у тебя ноутбуки.
Шалтай-Болтай. - От 300 до 5000 убитых енотов.
Человек. - А фирмы IBM?
Шалтай-Болтай (вспоминая предыдущий вопрос).
- 1-2 килобакса. А тебе сколько надо?
Человек. - А фирмы Samsung?
Шалтай-Болтай (вспоминая предыдущих 2 вопроса). - тихо офигевает :)

!Vlad
26.05.2006, 10:50
Есть предложение определиться какую задачу решаем.

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

по поводу "гипотезы"
идея интересна хотябы потому что наглая :-)
но
1 в ней , если правильно понял, отсетствует ЕЯ
2 если слово запроса имеет только один смысл , не совсем понятно на что кластеризировать
3 юзер обычной поисковой ситемы легко может определить для поисковика заначение омонима прикрепив к нему еще одно слово
пример
запрос "замок"
или на дверь ( замо'к)
или вместо котеджа :-) ( за'мок )

если 1 запрос "дверной замок"
если 2 запрос "средневековые замки"

Вроде http://www.nigma.ru
делает примерно тоже самое
т.е.
выберает одно слово слева от искомого, и одно с права
и группирует по этому признаку....

вроде элементарно, сам такую на делфе за пару дней напишу :-)

!Vlad
26.05.2006, 11:10
Синтаксический анализатор, я думаю можно найти, ибо его писать это дело очень долгое и сложное (например что-то есть тут www.aot.ru)

да там много всего есть :-)

вопрос что нужно?

Графематический анализ. Выделение слов, цифровых комплексов, формул и т.д.
Морфологический анализ. Построение морфологической интерпретации слов входного текста.
Синтаксический анализ. Построение дерева зависимостей всего предложенияСемантический анализ. Построение семантического графа текста.

Может при укой задаче запроса к б/д на ЕЯ что-то из этого и не нужно?

pEtr0
26.05.2006, 12:16
вопрос что нужно?

Графематический анализ. Выделение слов, цифровых комплексов, формул и т.д.
Морфологический анализ. Построение морфологической интерпретации слов входного текста.
Синтаксический анализ. Построение дерева зависимостей всего предложенияСемантический анализ. Построение семантического графа текста.

Может при укой задаче запроса к б/д на ЕЯ что-то из этого и не нужно?
Семантический анализ включает в себя все предыдущие... надо посмотреть какие есть библиотеки и что они могут.

Вот я еще ссылку нашел (правда нет времени подробно смотреть :( )
вроде очень много лингвистической информации.
http://www.rvb.ru/soft/catalogue/catalogue.html

!Vlad
27.05.2006, 17:46
На нашем сайте (http://www.logosofteam.jino.ru), добавлен раздел ссылки (http://www.logosofteam.jino.ru/link.html)

homo ludens
05.06.2006, 17:49
Краткая стенограмма обсуждения.

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

Разделим задачу на этапы.

1. Хранилище данных. Низкоуровневое хранение графа семантической сети. Плюс интерфейсы к нему. Тоже низкоуровневые.
2. Логический уровень работы с хранилищем данных. Работа с сетью на уровне фреймов.
3. Интерфейсы "диалога" с хранилищем данных. Это может быть и ЕЯ-интерфейс, заключающийся в разборе ЕЯ предложений с переводом их в фреймы - структурные единицы семантической сети, которые затем сливаются с хранилищем данных с помощью операторов сети предыдущего уровня.
Но это может быть и тупой GUI, SQL или datalog. Или еще что-либо.

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

Кроме того необходимы процедуры начального наполнения семантической сети. Тут возможны варианты - от использования готовых онтологий и hard-coded правил, до автоматической дистилляции правил из текста (см. мою наглую гипотезу, далее НГ).

По моему скромному мнению эти задачи требуют значительного напряга и времени, гораздо больше, чем может себе позволить наша команда. Однако я не вижу каких-либо препятствий в реализации на базе этой технологии например ЕЯ-запросчика к БД или просто болтателя.

В связи с большим напрягом в реализации разумно поискать альтернативные решения, которые связаны с некоторым риском упереться в стену лбом, но могут оказаться более изящными.

Альтернативные решения - в следующем посте.

PS

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

!Vlad
05.06.2006, 20:30
Информирую общественность о появлении нового сайта проекта
www.logos.clan.su