Author Topic: Виртуальные собеседники  (Read 7131 times)

0 Members and 1 Guest are viewing this topic.

Offline kopanda

  • Posts: 5
  • Gender: Female
on: February 6, 2010, 18:57
Здравствуйте.
Выскажитесь, пожалуйста, насколько интересно для лингвиста создать своего робота, который в ответ на реплику гостя по определенному шаблону давал бы ответ.
То есть если задаться целью сделать свою собственную современную a.l.i.s.e., которая поддерживала бы беседу, запоминала бы информацию и потом бы ее верно использовала... зацепило ли это вас?

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

Offline Juif Eternel

  • Posts: 3856
  • Gender: Male
зацепило ли это вас?

Почему вы спрашиваете, зацепило ли это нас?
Mir lebn ejbik

Offline kopanda

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

Offline Juif Eternel

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

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

Offline kopanda

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

Offline Juif Eternel

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

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

Offline kopanda

  • Posts: 5
  • Gender: Female
Значит, не зацепило)

Offline Juif Eternel

  • Posts: 3856
  • Gender: Male
Значит, не зацепило)

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

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

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

  • Posts: 24115
  • Gender: Male
Выскажитесь, пожалуйста, насколько интересно для лингвиста создать своего робота, который в ответ на реплику гостя по определенному шаблону давал бы ответ.
По шаблонам — это неинтересно и не для лингвистов. Интереснее иметь парсер, который мог бы по окончаниям определять в предложении субъект, объект, действие, и по базе знаний строить какие-то более менее осознанные умозаключения.

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



Такие вот дела.
肏! Τίς πέπορδε;

Offline kopanda

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

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

Offline Hellerick

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

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

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

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

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

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

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

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

Мой идеал:

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

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

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

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

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

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

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

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

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

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

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

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

Offline Hellerick

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

And_Ray

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

 

With Quick-Reply you can write a post when viewing a topic without loading a new page. You can still use bulletin board code and smileys as you would in a normal post.

Note: this post will not display until it's been approved by a moderator.
Name: Email:
Verification:
Type the letters shown in the picture
Listen to the letters / Request another image
Type the letters shown in the picture:
√49 Напишите ответ строчными буквами:
«Сто одёжек, все без застёжек» — что это?: