Как стать автором
Обновить

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

Время на прочтение3 мин
Количество просмотров3.8K
Всего голосов 18: ↑5 и ↓13-8
Комментарии37

Комментарии 37

Как думаете, реально ли сделать такое?

Реально, но с оговорками.

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

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

XSD тоже как-то так хитро определён, что его синтаксис описывается в нём самом. Да и любой уважающий себя компилятор написан на том же языке, который он компилирует.
Определив понятие интеллекта и объяснив его машине, мы тем самым автоматически его и реализуем. Это основной принцип работы ICQuery. Проблема, как вы понимаете, в том, чтобы объяснить.

Ну да. Поэтому сначала очень много пункта два, а потом, если повезет, пункт один.

Кстати, пункт два (много и четко формулировать) проще на искусственных языках, чем на естественных.

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

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

И, скажем, код вы можете выгрузить в ИДЕ, проанализировать, и вернуть программе. И после этого она по идее должна перевести его на естественный язык, то есть на ICQuery…
Более того, там не должно быть особой разницы ни между графическим представлением символа и его внутренней реализацией, ни между графическим представлением компонента и его описанием.

Так не выйдет. Графический язык и вербальный язык сильно отличаются.

И, скажем, код вы можете выгрузить в ИДЕ, проанализировать, и вернуть программе.

Это к тому, что потребность в IDE не уменьшится.
Хмм. Ну тогда предлагаю задать ICQuery какое-нибудь элементарное задание, с которым она не сможет справиться. Спрошу у неё, как она планирует выкрутиться.
Что вы понимаете под «элементарным»?
Что обычно пишут после ХеллоВорлда. Про организацию ввода данных можете не задавать, о ней я уже подумал. В процессе написания статей объясню.
Не знаю, никогда не писал hello world.

Но давайте начнем с простого: написать программу, решающую произвольное поданное на вход квадратное уравнение.
ICQuery после такого определения задачи спросит, что значит «произвольно поданное» и что такое «квадратное уравнение». В терминах классической постановки вы должны предоставить тестовые данные.
(в моем понимании уже не справилась, но ладно)

Произвольное поданное — значит, задается пользователем во время выполнения.
Квадратное уравнение — это уравнение, приводимое к… ладно, пусть будет «данное в» виде ax2 + bx + с = 0.

(а тестовые данные очевидны из того факта, что это уравнение)
Допустим, что она этому уже обучена, тогда диалог будет выглядеть примерно так:
Прогер: мои коллеги хотят проверить твои возможности.
ICQuery: я умею очень многое. Прежде всего, я научилась писать программы, воспринимать данные в отличном от текстового формате и ассоциировать их с тем, что я уже знаю. Теперь можно сказать, что для меня нет разницы, подана на вход картинка, текст, звук, бинарный файл, архив или случайная последовательность данных. По умолчанию, я уточняю, правильно ли я интерпретировала то, что было подано мне на вход. Теоретически меня можно научить обрабатывать любые данные. Меня можно научить писать музыку и рисовать картины. Можно отключить текстовый интерфейс и общаться со мной непосредственно голосом. Если отключить подтверждение введённых данных, тогда я веду себя практически как человек.
Прогер: а квадратное уравнение решить сможешь?
ICQuery: Конечно. Когда-то давно меня научили делать и это.
Прогер: Как ты это сделаешь?
ICQuery: Квадратное уравнение вида ax2 + bx + с = 0 решается подсчётом дискриминанта, либо методами, определёнными во внешних источниках. Возможно определение собственного метода. Программе понадобится узнать коэффициенты a, b и с; их можно задать последовательно, либо с указанием имён, либо ввести уравнение целиком.
Прогер: реши тогда x2+2x+1=0
ICQuery:
Вы ввели уравнение:
x2+2x+1=0
Коэффициенты уравнения:
a=1, b=2, c=1
Вычислим дискриминант:
D=b2−4ac=22−4·1·1=4−4=0
(D=0), следовательно это квадратное уравнение имеет 1 вещественный корень:
x(1,2)=−b±√D2ax1=x2=−b2a=−22·1=−22=−1x2+2x+1=(x+1)2=0
Ответ:
x1=x2=−1

Уф… пожалуйста, пока не просите больше ничего сделать. Сейчас аська существует только в виде идеи, поэтому мне приходится гуглить решения за неё, а это крайне утомляет.
Конечно. Когда-то давно меня научили делать и это.

Вот тут, собственно, и конец истории.

Кто и как ее обучил?

(да, в пункте «меня можно научить писать музыку» мне отдельно смешно)

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

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

А возможно, я просто пересмотрел фантастики…
Ну, вы просто задумайтесь, чем то, что вы предлагаете, отличается от искусственного интеллекта.
Кто и как ее обучил?

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

Так-то изначально я подумал, что в этом языке повествовательное предложение может служить комментарием, вопросительное — запросом данных, а повелительное — командой. В таком случае, естественно, возникает вопрос, как поступать, если пользователь будет безграмотен, не использует знаков препинания, или же использует их сверх меры. Или если начнёт непредсказуемо нарушать правила тут и там, программа выработает принципы, по которым он строит свою речь, а потом он резко начнёт писать грамотно. Да и тот пример, который я привёл в статье, уже отходит от этой концепции, поскольку ХеллоВорлд написан повествовательным языком.

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

Я не у программы спрашиваю, а у вас.
Ну, допустим, обучил я, а как обучил… Задал базовые операции вида Ответь, Спроси, Забудь, Объясни, Выполни, и определил, что текст в кавычках распознавать не надо. Естественно, всё это я сделал на формализованном языке, потому что ICQuery ещё не изобретён. После чего начал общаться. Долго общался, и наконец объяснил, что я от неё хочу.
После чего начал общаться.

На каком языке?
никогда не писал hello world
Как?! Как такое возможно?)
Не знаю, наверное, у меня было тяжелое детство, строгие учителя и никаких игр.
Такая программа уже существует. И называется она — начальник айти отдела.
Ага, причём чужого и ничем не занятого :)
Ещё в 2009 делал прототип программы которая на основе 3 предложений могла отвечать на вопросы как по тексту так и по объектам описанным в тексте. Прикрутить к ней хоть компилятор, хоть распознавание речи не составляет труда и получить что то гораздо мощнее SIRI. Только не нужно это ни кому…
Тут уже 27 человек сказали, что нужно :)
А можно спросить, на каком языке вы её писали и сохранился ли исходный код?
Считаю что универсальные средства всегда будут проигрывать специализированным в своей области применения.
Сошлюсь на прежнее высказывание: http://habrahabr.ru/company/gttf/blog/241127/#comment_8083983
ICQuery последовательно избавляется от неопределённости, после чего запускает «программу», поданную ей на вход.
О чем вообще статья? Либо я все понял совсем не так, либо автор абсолютно голословно (и в самой статье, и в последующих комментариях) утверждает, что создание полноценного «сильного» искусственного интеллекта — совершенно плевое дело, а в качестве подтверждения приводит вымышленный диалог с «изобретенным» (в фантазиях, разумеется) им ИИ о_0
Ох… Как же объяснить-то. Сейчас это очень маловероятно. По сути, создатель этого языка и ИИ должен проскочить миллионы лет эволюции за приемлемый срок. То, что я действительно утверждаю — это возможно в принципе, и что необходимо этот гипотетический язык, как и его компилятор, написать на языке, максимально приближенном к естественному.

Почему-то никому не пришло в голову, что ICQuery можно ввести в тупик безграмотной речью, или зациклить сепульками. Или, что попросив её забыть себя, можно её попросту убить.
Так о чем ваша статья? А главное — зачем она? Что вы хотели донести миру? Что существует такое понятие, как natural language processing?
Насколько я знаю, nlp (ох, как похоже на нейролингвистическое программирование) занимается тем, что анализирует язык и пытается имитировать общение. Скорее всего, его алгоритмы написаны на языках формализованных, и «общаясь» с программой, изменить эти алгоритмы крайне затруднительно, если возможно вообще. А статья о том, что ИИ должен быть описан на естественном языке и в терминах естественного языка, хотя в текущем виде она больше подходит для публикации в виде фантастического рассказа.
ИИ вообще не должен быть описан, если что. Когда вы «обучаете» программу, то, что получается — это не программное описание.
NLP — это целый спектр проблем и целое направление исследований в области ИИ. NLP сам по себе ничем не занимается, и уж тем более не занимается тем, «что анализирует язык и пытается имитировать общение». Может быть, кто-то конкретный (организация, группа людей, или отдельный человек), занимаясь проблемами NLP, пытается анализировать язык и имитировать общение, используя формальный алгоритмический подход. Но это сугубо их метод, и это не значит, что он единственный на свете существует, и что так делают поголовно все, а вы — первый, кто внезапно осознал неполноценность этого пути. Вобще, ваши чрезвычайно смелые обобщения наводят на мысль, что вы совершенно не потрудились ознакомиться с предметной областью, о которой вы зачем-то не поленились выложить статью. И я, как любитель научной фантастики, могу вас уверить — на фантастический рассказ это не тянет, максимум — на фантастический абзац. В котором, впрочем, нет ничего нового, свежего и оригинального. Поэтому я удивлен, и поэтому я по-прежнему не нахожу никакого смысла в появлении этой статьи на хабре. Простите, если чем-то задеваю ваши чувства, ничего лично против вас я не имею, но я за то, чтобы хабр был хабром, а не посредственным окололитературным блогом.
Друг мой, не поверите, я тоже «за». Благодарю за то, что почe̿̔̉сали мои чувства. Смысла искать не надо. Статью я написал, чтобы запустить процесс, и это <center>всего лишь пересказ другого рассказа про компьютерный сверхразум, из которого я убрал все страхи автора. Как любителя н​аучной фантастики, прошу подеi͡литься вашими любимыми​рассказами. Возможно, я их тоже читал. Ну а ​насчётi̍̈́̂̈́предметной области -- так или иначе вc͒ͪе о ней имеют n̨оняm̡иé, а «лень», о kоторой вы говo҉рите — лишь не​ńоследовательh̵ость, но ктo͛ͫ скa͠зал, что ͠это плe̶хo͞?
He comes?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории