PDA

Просмотр полной версии : Искуственный интеллект на "горбатом"



ALKO
13.05.2011, 15:00
http://upload.wikimedia.org/wikipedia/en/b/bf/Glados.png
Помогите,пжалста, создать ИИ виртуального собеседника на гробатом.
Т.к. быстродействие тут не столь важно ,можно на бейсике.
Может есть у кого какие-нибудь заготовки?
Хотелось бы создать не дискретного собеседника,а что б диалог был диалогом,а не монологом.
И реализовать самообучение.

GriV
13.05.2011, 18:33
что такое горбатый? Что ты понимаешь под ИИ?

Лас
14.05.2011, 00:54
что такое горбатый? Что ты понимаешь под ИИ?
Горбатый: http://zx.pk.ru/showthread.php?p=358182#post358182
ИИ: :) http://ru.wikipedia.org/wiki/ALICE

GriV
14.05.2011, 03:03
Горбатый: http://zx.pk.ru/showthread.php?p=358182#post358182
ИИ: http://ru.wikipedia.org/wiki/ALICE
А рисунок в теме к чему тогда?
А насчёт ИИ - это ссылку не мне, а автору темы.

osa
14.05.2011, 03:19
рисунок для привлечения внимания:)

Wlodek
14.05.2011, 07:43
рисунок для привлечения внимания:)

Это фавикон :) . Уточните тему, пжлст :) .

ALKO
14.05.2011, 12:26
что такое горбатый? Что ты понимаешь под ИИ?

Горбатый: http://foto.ex6.ru/v.php?id=6525319364.jpg
ИИ:точного определения не знаю
_______________________________________________
На PC есть куча всяких прог-болтунов
вот одна из них:
http://boltunstyle.narod.ru/br3/html/download.htm
но главным недостатком я считаю ожидание программы на ввод текста.

---------- Post added at 12:22 ---------- Previous post was at 12:12 ----------


http://ru.wikipedia.org/wiki/ALICE
А что на счёт элис,то может она хороша на англицком языке,русскую ни где ещё не встречал.

---------- Post added at 12:26 ---------- Previous post was at 12:22 ----------

Зато этот бот "помнит" хотя бы,о чём говорилось 2-3-мя фразами ранее.

Slesar
14.05.2011, 14:32
Название класса прог - чатботы. К ИИ они имеют весьма опосредованное отношение, скорее к демкам в области прикладной лингвистики. Один из ранних примеров - ELIZA, изображавшая диалог с психоаналитиком. Создатель воспользовался склонностью этой профессии к общим вопросам и расплывчатым формулировкам. Русские проги есть, но мало и ниже качеством, так как русский плохо формализуется из-за дофига склонений и вообще сложной морфологии. Основная треба к таким прогам - умение быстро вести поиск в базе данных и хороший парсер. Ожидание ввода надо как раз из-за ограниченности базы и неумения программы связывать фразы самостоятельно. На Спеке у них есть давний родич - текстовые адвенчеры. А Алиса, если правильно помню, крутится на нехилом таком сервере..

Viktor2312
15.05.2011, 12:17
Вот пример простенькой программы Болтун.

psb
15.05.2011, 18:57
нужен бот из }{оттабыча, на z80.

bigral
15.05.2011, 23:12
вот короче:

http://www.atariarchives.org/bigcomputergames/showpage.php?page=22
http://www.worldofspectrum.org/infoseekid.cgi?id=0001606

Andrew771
16.05.2011, 10:00
К ИИ они имеют весьма опосредованное отношение
Как раз таки прямое отношение, это одно из направлений ИИ.

Виртуальные собеседники работают с «живым» языком. Обработка естественного языка, особенного разговорного стиля, — острая проблема искусственного интеллекта. И конечно, современные программы-собеседники — лишь попытки имитировать разумный диалог с машиной.
Как любая интеллектуальная система, виртуальный собеседник имеет базу знаний. В простейшем случае она представляет собой наборы возможных вопросов пользователя и соответствующих им ответов. Наиболее распространённые методы выбора ответа в этом случае следующие:
- Реакция на ключевые слова: Данный метод был использован в Элизе. Например, если фраза пользователя содержала слова «отец», «мать», «сын» и другие, Элиза могла ответить: «Расскажите больше о вашей семье».
- Совпадение фразы: Имеется в виду похожесть фразы пользователя с теми, что содержатся в базе знаний. Может учитываться также порядок слов.
- Совпадение контекста: Часто в руководствах к программам-собеседникам просят не использовать фразы, насыщенные местоимениями, типа: «А что это такое?» Для корректного ответа некоторые программы могут проанализировать предыдущие фразы пользователя и выбрать подходящий ответ.
Своеобразной мини-проблемой являются идентификация форм слова и синонимов.

http://ru.wikipedia.org/wiki/%D0%92%D0%B8%D1%80%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D 0%BD%D1%8B%D0%B9_%D1%81%D0%BE%D0%B1%D0%B5%D1%81%D0 %B5%D0%B4%D0%BD%D0%B8%D0%BA

---------- Post added at 10:00 ---------- Previous post was at 09:56 ----------

На Спектруме база знаний будет очень маленькая. т.к. память мала. Я одно время хотел сделать игру "Эрудит", но словарь вмещал бы в лучшем случае 6000 слов (для 48к), это мало для хорошей игры.

Black_Cat
16.05.2011, 10:12
словарь вмещал бы в лучшем случае 6000 слов (для 48к)тоды для ReVeSe или Speccy2010 с 32Mb словарь мог бы состоять из 4 000 000 слов :)

Andrew771
16.05.2011, 11:09
Спектрум не 48к - это ересь. :)

---------- Post added at 11:09 ---------- Previous post was at 11:08 ----------

я старовер :)

Slesar
16.05.2011, 12:29
это одно из направлений ИИ
Это, скорее, часть инфраструктуры ИИ. Сам чатбот не обладает знаниями как таковыми и не понимает семантику. Этим должен заниматься эвристический алгоритм, без которого чатбот не интеллектуальнее интерпретатора бейсика, а любая фраза для него - "сяпала калуша по напушке.."

ALKO
16.05.2011, 17:27
Спектрум не 48к - это ересь.
Вот этого чат-бота я наклепал за 5 минут и его даже 16к спектрум потянет.

Своей эрудицией он любого чат-бота задавит (A.L.I.C.E. нервно курит в стороне)
Язык интерфейса англ.(не когда было рисовать кириллицу)

Slesar
16.05.2011, 18:22
ALKO, шедевр, однозначно шедевр. Пусть ААА к нему еще визуалку нарисует - будет что на СС выставить.

---------- Post added at 18:22 ---------- Previous post was at 18:19 ----------

Кстати, щас заметил - на всех платформах стандартная программа - обучалка - хелловорд, и только на спеке - "%username%, ты дурак":)

Black_Cat
16.05.2011, 18:52
и только на спеке - "%username%, ты дурак"эт ты про Глюк, или ещё где?

Slesar
16.05.2011, 19:03
БК-0010, эт я про традиции обучения программированию. Сам с этого начинал...

psb
16.05.2011, 20:04
тоды для ReVeSe или Speccy2010 с 32Mb словарь мог бы состоять из 4 000 000 слов
лучше посчитай, сколько минут этот словарь бы загружался...

goodboy
16.05.2011, 20:11
в программе Scrabble 83 год словарь заявлен на
the computer's vocabulary contains over 11,000 words

http://www.worldofspectrum.org/infoseekid.cgi?id=0004375

возможно там сокращение по слогам, я детально не разбирался

Andrew771
16.05.2011, 21:20
Возможно, комбинации из 2х букв. Для русского языка кстати, если применять такие сокращения, это актуально. Т.к. многие комбинации просто не могут существовать, например: ЙЙ, ЭЭ, ЫЫ, мягкий знак после гласных и т.д.

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

Andrew771
17.05.2011, 10:06
лучше подумай где стоко слов взять
Ну для хорошего чат-бота нужны не только отдельные слова, но и выражения. :)

---------- Post added at 10:06 ---------- Previous post was at 09:55 ----------


ИИ виртуального собеседника
А вообще, цепи Маркова могут быть полезными для генерации текстов: http://max-folder.webnut.ru/diary/169

CodeMaster
17.05.2011, 10:13
эт я про традиции обучения программированию.

Это бразильская методика, что бы жисть медём не казалась ;-)

ALKO
17.05.2011, 13:05
Всё-таки зря я в качестве ИИ представил чат-бота...это действительно глупая программа, "приведения" из PacMan'а умнее будут.

В таком случае,что нужно что б Горбатый блеснул интеллектом?

Именно GLaDOS [изображение в первом посте данной темы] вдохновила меня на желание создать ИИ.

Andrew771
17.05.2011, 14:18
В таком случае,что нужно что б Горбатый блеснул интеллектом?
написали же уже :)

Slesar
17.05.2011, 15:17
В таком случае,что нужно что б Горбатый блеснул интеллектом?
Написать толковую экспертную систему на Микро ПРОЛОГе, запустить ее на горбатом, на вывод подцепить морду, крутящуюся на другом спеке....

---------- Post added at 14:17 ---------- Previous post was at 14:08 ----------

Или натурального робота наколесиках, а гробик чтоб думал за него.

GriV
17.05.2011, 16:06
Больше на флейм похоже, явного программирования тут не вижу. Едем в разное.

Andrew771
19.05.2011, 12:30
Такая вот у меня идейка, как реализовать упрощенный ИИ. :)

База знаний состоит из 2х таблиц:

Таблица 1:
<подлежащее 1> {/<подлежащее 2>} ... {/<подлежащее N>} # <сказуемое> # <дополнение 1> {/<дополнение 2>} ... {/<дополнение N>}

Таблица 2:
<сказуемое> {/<синоним 1 сказуемого>} ... {/<синоним N сказуемого>} # <вопрос 1> {/<синоним 1 вопроса>} ... {/<синоним N вопроса>} # {<альтернативный вопрос 1>} ... {<альтернативный вопрос N>}

Пример базы на тему компьютеров:

Таблица 1:
компьютер # имеет # процессор / память / монитор / клавиатуру
процессор / память # имеет # транзисторы
транзистор # бывает # биполярный / полевой / кремниевый / германиевый / арсенид-галлиевый
транзистор # появился # в 20 веке
память # бывает # 16k / 48k / 128k / больше 1 Мб / больше 1 Гб
в 20 веке # появился # Zx Spectrum / Спекки
ZX Spectrum / Спекки / IBM PC # это # компьютер
ZX Spectrum / Спекки # бывает # 16k / 48k / 128k
IBM PC # бывает # больше 1 Мб / больше 1 Гб
ZX Spectrum / Спекки # появился # в Англии в 20 веке
IBM PC # появился # в США в 20 веке
привет # #
пока # #


Таблица 2:
имеет # что # из чего состоит
бывает # какой / какая / какое / каким # каким может быть / какой может быть
появился / открыт / разработан / сделан # когда / в каком веке / в каком году #
появился / открыт / разработан / сделан # где # в какой стране / в каком городе
это / является / - # что # что такое / кто такой / кто такая
# привет / здрасти #
# пока / ок / до свидания #


ИИ распознает, что сказал юзер: вопрос или утверждение. Предложение юзера является вопросом, если в конце стоит вопросительный знак или в начале предложения имеется элемент <вопрос> или <альтернативный вопрос> (смотрится по таблице 2 в базе). Предложение юзера является утверждением, если не были выполнены эти условия.

Юзер задал вопрос. Если имеется <альтернативный вопрос>, он сразу заменяется на комбинацию <вопрос 1><сказуемое>. Если же был <вопрос> или его синоним, ищется сказуемое. Если следующее слово в вопросе юзера "был", "была", "будет", "будут" и т.д., то оно игноруется, и переход на следующее. Следующее слово является сказуемым или синонимом сказуемого. Ищем по таблице 2 основное <сказуемое> и берем его. В остальной части вопроса юзера ищем <подлежащее>, сравнивая с таблицей 1 по всем ячейкам. Если в остальной части предложения вообще нет слов, то считаем <подлежащим> последнее обработанное подлежащее в предыдущем сообщении ИИ. Если нашли предложение в таблице 1, где встречаются и <подлежающее>, и <сказуемое> одновременно, то выводим это предложение в качестве ответа на вопрос. Если же не нашли такое предложение в таблице 1, то ИИ отвечает "Не знаю". Можно также задать вопрос "Что такое <сказуемое><подлежащее>?" После ответа юзера можно занести его в базу в качестве нового предложения, как-то обработав (не думал еще, как).
Если в вопросе юзера отсутствуют <подлежащее> или <сказуемое>, то ими считаются последние обработанные ИИ в предыдущем сообщении.

Юзер сделал утверждение. Ищем <подлежащее> и <сказуемое> или их синонимы, приводя к стандартным <подлежащему> и <сказуемому>. Если нашли предложение в таблице 1, где встречаются и <подлежающее>, и <сказуемое> одновременно, то отвечаем "Да". Если же не нашли такое предложение в таблице 1, то действуем аналогично, как после вопроса юзера ("Не знаю" и т.д.).

Пример диалога юзера (Ю) с ИИ (ИИ) на тему компьютеров:

Ю: здрасти
ИИ: привет
Ю: что такое Спекки?
ИИ: Спекки это компьютер
Ю: и когда он был сделан?
ИИ: Спекки появился в Англии в 20 веке
Ю: прикольно!
ИИ: Не знаю. Что такое "прикольно"?
...


Как-то так :)

ALKO
19.05.2011, 14:37
Ю: здрасти
ИИ: привет
Ю: что такое Спекки?
ИИ: Спекки это компьютер
Ю: и когда он был сделан?
ИИ: Спекки появился в Англии в 20 веке
Ю: прикольно!
ИИ: Не знаю. Что такое "прикольно"?



лучше бы в диалоге обсуждался план по уничтожению человечества роботами-убийцами

---------- Post added at 13:37 ---------- Previous post was at 13:34 ----------


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

Andrew771
19.05.2011, 14:47
лучше бы в диалоге обсуждался план по уничтожению человечества роботами-убийцами
ну дык забей базу на эту тему. И всё! :)

ALKO
19.05.2011, 15:14
Но всё-таки далековато Горбатому до Blue Gene.

Andrew771
19.05.2011, 15:43
Ты думаешь, интеллект зависит от скорости процессора(ов)? :)

Slesar
20.05.2011, 01:44
Ты думаешь, интеллект зависит от скорости процессора(ов)?
Скорее, скорость процессоров ограничивает возможности внешнего проявления интеллекта. Отсюда и мысль вынести морду на отдельную машину - чтоб собственно интеллект заморачивался максимум десятичными числами.

---------- Post added at 01:44 ---------- Previous post was at 01:29 ----------

Andrew771, прикольная мысль про структурирование чатбота. Можно еще для экономии места разбить базу скобками по подлежащим - получится одноуровневая фреймовая модель :)

Andrew771
20.05.2011, 13:33
Давай, ALKO, реализуй! Классная вещь должна получиться!

ALKO
20.05.2011, 14:23
Немного начал....сложно.
Эх если б ещё найти портативный компилятор си (под IBM)

smalcom
21.05.2011, 08:55
всмысле портативный?
llvm пробовал?

Slesar
21.05.2011, 09:32
всмысле портативный?
Всмысле, портатируемый :)

ALKO
21.05.2011, 11:35
в смысле portable, не требующий инсталяции (либо записи в реестр),и которым можно было пользоваться из под ОС Windows Server 2003.
А так же занимающий малый объём на диске.

Slesar
21.05.2011, 11:56
http://sourceforge.net/projects/devcpp-portable/
Сцылко:)

smalcom
21.05.2011, 12:20
мингв, сигвин - качай и радуйся жизни.

ALKO
21.05.2011, 13:05
http://sourceforge.net/projects/devcpp-portable/
Сцылко
От полной версии отличается только тем,что по окончании компиляции пишет

Slesar
21.05.2011, 13:07
Странно. Тама компилятор в пути по настройкам лежит?

ALKO
21.05.2011, 13:08
Но в журнале компиляции вот что:

ALKO
21.05.2011, 13:10
Аааааа,вспомнил глюк дэвсипипи!
Там имя проэкта нужно англоязычным называть...тогда сори.

Andrew771
30.06.2011, 12:19
Нашел одну старую разработку на Паскале - игра "Животные", писала моя ученица, идея взята из книги Очков, Пухначев "128 советов начинающему программисту". Там как раз идет нечто вроде диалога юзера с компом - чел загадывает животное/предмет/явление, а комп пытается угадать. В общем, поиграй, идею поймешь. Исходник прилагается.
Если эту идею развить, можно более мощный диалог заделать. :v2_dizzy_write: