Главное меню
Мы солидарны с Украиной. Узнайте здесь, как можно поддержать Украину.

Виртуальные собеседники

Автор kopanda, февраля 6, 2010, 17:57

0 Пользователи и 1 гость просматривают эту тему.

kopanda

Здравствуйте.
Выскажитесь, пожалуйста, насколько интересно для лингвиста создать своего робота, который в ответ на реплику гостя по определенному шаблону давал бы ответ.
То есть если задаться целью сделать свою собственную современную a.l.i.s.e., которая поддерживала бы беседу, запоминала бы информацию и потом бы ее верно использовала... зацепило ли это вас?

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

Juif Eternel

Mir lebn ejbik

kopanda

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

Juif Eternel

Цитата: kopanda от февраля  6, 2010, 19:39
Все просто - потому что хочу найти людей, которым это будет так же интересно, как и мне. Чтобы обсуждать то, что мы делаем, общаться.
Решила поискать именно среди лингвистов, потому что сама такая и потому что надеюсь встретить умных людей с интересными идеями.

Понятно, вы надеетесь встретить умных людей. Это правильно.
Mir lebn ejbik

kopanda

В общем, если кого-то заинтересует идея, вот, например, мой бот: viu-piu.iii.ru

Juif Eternel

Цитата: kopanda от февраля  6, 2010, 21:20
В общем, если кого-то заинтересует идея, вот, например, мой бот: viu-piu.iii.ru

Вы это серьезно?
Mir lebn ejbik


Juif Eternel

Цитата: kopanda от февраля  7, 2010, 00:13
Значит, не зацепило)

Ладно, kopanda, не обижайтесь. Вы что не поняли? Я с вами вел типичную беседу виртуального собеседника, и вы не распознали в нем робота, т.е. он как бы прошел тест Тьюринга. :yes:

А так, похоже, это никого не зацепило. Но умных людей с интересными идеями здесь действительно достаточно. Если вам хочется с ними пообщаться, то походите сначала по другим темам, поучаствуйте в их разговорах, а потом и выяснится, кого что цепляет. Желаю удачи.  :UU:
Mir lebn ejbik

Алексей Гринь

Цитата: kopanda от февраля  6, 2010, 17:57
Выскажитесь, пожалуйста, насколько интересно для лингвиста создать своего робота, который в ответ на реплику гостя по определенному шаблону давал бы ответ.
По шаблонам — это неинтересно и не для лингвистов. Интереснее иметь парсер, который мог бы по окончаниям определять в предложении субъект, объект, действие, и по базе знаний строить какие-то более менее осознанные умозаключения.

Цитата: kopanda от февраля  6, 2010, 21:20
В общем, если кого-то заинтересует идея, вот, например, мой бот: //viu-piu.iii.ru
В моём Линуксе не получается вводить русские буквы :( Только английские выводятся. Оно на чём сделано?
肏! Τίς πέπορδε;


kopanda

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

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

Hellerick

Самый простой способ поддерживать беседу — повторять последние слова собеседника с вопросительной интонацией.

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

Плюс, можно выискивать отдельные слова, которые триггерили появление неких фраз. Например, ответ на любое высказывание, содержащее слово «США» может начинаться фразой «Американцы тупы-ы-ые!».

Алексей Гринь

Цитата: kopanda от февраля  7, 2010, 01:08
Я пыталась научить по окончаниям определять части речи, в итоге бросила и решила забить в словари частей речи рассортированный по ним словарь Шарова.
У меня где-то завалялась библиотечка, которая умеет на 100% склонять существительные и прилагательные (полезно, если есть шаблоны вида «я люблю {вин}»). Вот там реализован, хотя и зачаточно, вывод всей возможной информации у словоформы - число, падеж и т. д.

Загвоздка в том, что русский язык флективен, а потому окончания у него полисемичны, т.е. точно нельзя определить, допустим, «маме» — это дательный падеж от «мама» или предложный от гипотетического «мам» (боту-то всё равно)?

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

В общем, определение значимых слов в предложении и их роли — дело несложное. Сложное — это реализация адекватной реакции бота.

Мой идеал:

1) «правила» на нетривиальные запросы (т.е. которые не поддаются «простому осмыслению»), напр. «Как дела?» — здесь ни убавить, ни прибавить. Заметьте, правила, а не шаблоны — правила задают направление речевой генерации (см. ниже), в то время как шаблоны тупо вставляют кусок текста.

2) Речевая генерация на основе запросов к объектно-ориентированной базе данных с вкраплениями «минишаблонов» и частичным управлением «правилами». Т.е.:

   1. Предложение синтаксически парсится, и вычленяются объекты, их определения и их отношения между собой. Немаловажно определить цель реплики: вопрос (запрос на получение факта) или ответ (констатация факта) — это определяется на основе правил (содержит ли вопр. слово «кто», например).

   2. После того как сформировано синтаксическое дерево, идёт соотношение с базой данных (о ней ниже). Скорее всего одно предложение-запрос будет сопоставлено с несколькими «фактами» из базы. Генерация заключается в том, что из внутреннего представления в базе данных (опять ниже) факт трансформируется в речевое обличие (т.е., допустим факт «субъект: волк-класс, предикат: есть-неопр., объект: заяц-класс» превращается в «волк ест зайца» или «волки едят зайцев» и т. д.), а склейкой между такими кусками являются минишаблоны, напр. обобщённая вставка «Я считаю, что» или вставка «поэтому» в цепочке умозаключения или вставка «который» для конкретизации объекта или ещё какая меметика (по сути язык это свободное плавание по морю штампов).

   3. Правила — это вручную написанные скрипты/шаблоны, которые регулируют/корректируют некоторые частные случаи.

Самая большая проблема любого бота это то, что он хочет поддерживать беседу с человеком на должном уровне, в то время как он не способен ВООБЩЕ понимать предметную область, о которой ведёт речь. Беседа с таким ботом не больше, чем беседа с слепоглухонемым. В идеале следует реализовать некоторую объектную систему — среду, в котором бы бот ЖИЛ.

Так вот, база это набор фактов. Факты бывают разные: факты-правила (волки едят мясо), конкретные факты, привязанные ко времени (я вчера пил Гамбринус), факты-определения (волки злые, волки серые) (чем отличается от правил см. ниже).

Каждый факт должен иметь слот на каждую задачу (не будем называть падежами): слот для локатива, для субъектива, для объектива, для действия/предикатива и т. д.

Во всех этих слотах (в большинстве) сидят ссылки на объекты (определённый волк) или классы (волк как класс, напр.). Каждый объект (волк) принадлежит к какому-то классу (волк - животное), и наследует все свойства класса (животное не может без еды + волк есть животное = волк не может без еды). Любой класс может наследовать метакласс. И так далее. Объекты и классы состоят из набора свойств (которые сами по себе являются объектами). По сути это набор правил по отличению одного объекта от другого (чем и пользуется //ru.akinator.com, кстати). По сути свойства это такие же предикаты, но для простоты лучше всю эту теоретическую муть оставить в сторону.

Далее, судя по всему, в базе должны храниться «ситуации», т.е. связанные между собой некой последовательностью факты, а не только единичные факты. Это важно потому, что по мере слушания бот должен уметь моделировать ситуацию, рассказываемую собеседником. Ситуация это такая временная база данных в миниатюре. Напр., собеседник рассказывает о том, как они с пацанами ходили пить какао. Бот кропотливо заполняет ситуационную базу фактами, отношениями между ними, их временную последовательность. Этот набор фактов будет позже пропагирован в общую базу как «хождение г-а Х пить какао» (наверное такой набор нужно проставлять тегами, чтобы бот мог оперативно вспомнить ситуацию в беседе). По мере рассказа, если упоминается «бар "у Тёти Глаши"», бот создаёт временный объект «бар "у Тёти Глаши"», определяет ему класс, заполняет свойства. Далее он может (возможно, случайным образом) задать уточняющие вопросы (и это не так сложно, если вся ситуация у бота букв. перед глазами) и т. д.

Как можно видеть, здесь больше ИИ, чем лингвистика.

Короче, теории так много, что на практику времени не останется :)  Но если мой поток сознания дочитал кто до конца и желает сие попытаться реализовать, то обращайтесь ;)
肏! Τίς πέπορδε;

Hellerick

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

And_Ray

Уважаемая kopanda очень интересуюсь данной темой. Есть наработки. Если вы ещё не потеряли интерес,
то напишите мне по адресу website@sibmail.com

Быстрый ответ

Обратите внимание: данное сообщение не будет отображаться, пока модератор не одобрит его.

Имя:
Имейл:
Проверка:
Оставьте это поле пустым:
Наберите символы, которые изображены на картинке
Прослушать / Запросить другое изображение

Наберите символы, которые изображены на картинке:

√36:
ALT+S — отправить
ALT+P — предварительный просмотр