uzyovoys / aggregate

Cross-platform voice assistant framework
http://art.dusi.mobi
GNU General Public License v3.0
61 stars 43 forks source link

Модуль самообучения. #23

Open UUSR opened 8 years ago

UUSR commented 8 years ago

Хотелось бы иметь модуль, который создаёт базу данных всех команд и ответов.

morfeusys commented 8 years ago

Очень неоднозначная постановка задачи ))

UUSR commented 8 years ago

Без такого модуля мы теряем время ((

morfeusys commented 8 years ago

@UUSR без конкретной постановки задачи с вашей стороны мы теряем еще больше времени ))

UUSR commented 8 years ago

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

vua4loj commented 8 years ago

@UUSR Простите. А в чем вы видите смысл этой базы данных? Ее задачи, цели и последующее использование?

morfeusys commented 8 years ago

@UUSR для начала нужно определиться, что этот модуль должен делать. Конкретно.

UUSR commented 8 years ago

Такая база данных даёт возможность персонализировать пользователя Aggregate, (ведь люди разговаривают по разному) в последствии её можно использовать для генерации самого "ответа".

UUSR commented 8 years ago

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

morfeusys commented 8 years ago

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

UUSR commented 8 years ago

Модуль должен генерировать "ответ" Aggregate если не один из модулей не сработал и в консоли: INFO: No results for "вопрос" Модуль должен генерировать "ответ" на основании анализа базы данных уже использованных ответов ,база должна постоянно пополняться в процессе диалога с пользователем.

morfeusys commented 8 years ago

@UUSR Какой-то замкнутый круг - мы должны выдать ответ из базы, который там должен появиться на основании ответов на вопросы, на которые у нас нет ответа )) А чем же вас не устраивает скрипт "Чат-бот" у Дуси, который может прекрасно использоваться благодаря модулю "Ассистент Дуся"?

UUSR commented 8 years ago

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

ivanbalashov239 commented 8 years ago

@UUSR ваша постановка вопроса мне не нравится, но что то в этой идее есть, как @Morfeusys правильно заметил, ваш вопрос скорее про самообучаемого "чат-бот"а, Задача интересная для решения, ресурсов здесь условно много, по сравнению с мобильником, можно развернуться, сделать нейронную сеть, использовать фичи агрегата для определения структур запросов и тп.

UUSR commented 8 years ago

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

ivanbalashov239 commented 8 years ago

@UUSR в чем уникальность данных? Как вы себе представляете процесс обучения? Под чат-ботом подразумевается функционал собеседника, только в данном случае полезного, способного классифицировать, хранить, использовать полученную от собеседника информацию. Такое описание подходит под ваше желание?

morfeusys commented 8 years ago

@UUSR @seniorivn Господа разработчики, задача машинного обучения и уж тем более машинного обучения в области естественных языков - это задача сложная. Если вы пожелаете подискутировать на данную тему, то мы можем зависнуть где-нибудь в хэнгауте и закрыть эту тему однажды. Закрыть - в смысле решить вопрос.

ivanbalashov239 commented 8 years ago

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

UUSR commented 8 years ago

@seniorivn Я предлагаю создать модуль который будет записывать все запросы распознанные google Speech (уже с проверкой правописания) в базу данных. Это позволит нам хранить и в последствии классифицировать полученную от собеседника информацию. В последствии базу данных можно с лёгкостью обрабатывать для получения часто используемых запросов от пользователя.

morfeusys commented 8 years ago

@UUSR

  1. Следить за пользователем - нехорошо
  2. Вы сейчас рассуждаете в "операционных" терминах (что и куда сохранить), и не освещаете вопрос "зачем" и собственно "как" мы будем классифицировать эти запросы и для чего.
ivanbalashov239 commented 8 years ago

@UUSR @Morfeusys 1)Если слежка не выходит за рамки локальной машины, то это не слежка :) 2)Согласен собирать данные без понимания как именно будем с ними работать по сути бессмысленно, сначала нужно сформулировать цели и методы, алгоритмы обработки, а собирать данные самая меньшая из проблем в этом вопросе.

pastukhov commented 8 years ago

Мне кажется, сначала стоит сделать поддержку моделей диалога по типу того как у wit.ai сделано?

UUSR commented 8 years ago

@Morfeusys

  1. Никто за пользователем следить не собирается ,база хранится на локалке у самого пользователя (как подметил @seniorivn) ,так вот я о том что человек когда что то сказал он может это сразу забыть (ведь человек и компьютер сильно отличаются) ,в Дусе на андроид тоже существует база последнего запроса в виде файла лежащего в корне (как он там DusiaInput.txt вроде) ,и ни кто не обвиняет Дусю в слежке за пользователем.
  2. "Зачем нам сохранять запросы." Сохранять запросы будем для того же для чего Дуся сохраняет последний запрос в файл DusiaInput.tx ,т. е. для последующего использования в некоторых случаях.
morfeusys commented 8 years ago

@UUSR Пожалуйста, создавайте отдельный issue для конкретного вопроса. Спасибо

ivanbalashov239 commented 8 years ago

@pastukhov эта issue вообще впереди паровоза.

morfeusys commented 8 years ago

@pastukhov @seniorivn как раз у Агрегата есть поддержка диалогов, как и у wit.ai. И кстати помощнее чем у wit.ai. Мне кажется вы или что-то другое имеете в виду, или не совсем вникли в документацию. Быть может что-то непонятно? Спрашивайте - документацию улучшим.

UUSR commented 8 years ago

@vua4loj я ответил на ваши вопросы в этом посте? (смотрите выше)

vua4loj commented 8 years ago

@UUSR 1) Я вам задал всего один вопрос и вдруг попал под раздачу. Ве впредь внимательно смотрите кому отвечаете в своих ответах. Как пример "@vua4loj я ответил на ваши вопросы в этом посте. (смотрите выше)" - Вы явно не мне отвечали. 2) Раз уж меня тут упомянули снова я почитал все комментарии и выражу свои мысли по этому поводу. 2.1) "Дуся сохраняет последний запрос в файл DusiaInput.tx ,т. е. для последующего использования в некоторых случаях." - Вот именно. Т.к. предполагается продолжение работы с этим запросом в возможном "некотором случае" (если я не прав, разработчик меня поправит). Но дело даже не в этом. Дуся не пишет весь диалог со своим пользователем. 2.2)Если я Вас правильно понял, то вы предлагаете создать базу в которой будут хранится всевозможные запросы. Предположим. Я справил какая сегодня погода. Получил ответ. Записалось в базу.Зачем мне завтра эти данные в базе? Сегодня я спросил как выгладит солнечная система. Не по тому что мне это интересно, а из за любопытства на реакцию Агрегата. По вашей задумке это тоже попадет в базу как возможный запрос. Зная человеческую натуру могу с уверенностью сказать, что через некоторое время Ваша база будет содержать 90% мусора, то есть ответов на вопросы которые точно никогда не повторятся. А теперь простые вопросы . Вы будете модерировать свою базу? У Вас хватит машинных ресурсов для сохранения такой базы? Как Вы думаете, долго будет Ассистент обрабатывать данные базы через 3-4 года активного использования? 2.3) Вы все время говорите про создании базы данных, но не где не упомянули о ее дальнейшем применение.База создаются с какой то целью. Создание базы не может являться самоцелью. Что вы хотите от базы? Что бы Агрегат мог оперативно обработать ответ по полученному вопросу? Ну для этого есть ужу база данных - всемирная сеть интернет, ну или википедия на худой конец. Хотите с помощью такого модуля получить некоторую независимость от сети (автономность)? Ну эту цель я даже комментировать не стану (тут проще телефон вместе с ПК выкинуть на помойку) ТАК КАКОВА КОНЕЧНАЯ ЦЕЛЬ БАЗЫ????? Ответе для начало не этот вопрос

UUSR commented 8 years ago

@vua4loj я не хотел вас обидеть ,я всего лишь вас спросил цитирую: "@vua4loj я ответил на ваши вопросы в этом посте? (смотрите выше)" ,и не ожидал на такую бурную реакцию с вашей стороны. Я не буду многословен и скажу лишь одно ,что базу будем использовать для генерации ответов от ассистента. В нутре базы будут сохранятся все запросы пользователя на которые будет генерироваться ответ. Все запросы и релевантные ответы будут пере линкованы между собой. Я не специалист по базам данных но из опыта могу сказать ,что генерация ответа ассистента при создании базы значительно ускорится. База абсолютно не будет содержать мусора и не будет большой ,модерация пока производиться не будет ,часто не использованные линки будут удалятся вместе с данными через определённое время ,что не даст базе сильно увеличиваться в размерах.

UUSR commented 8 years ago

@pastukhov а вы ,что скажете.

ivanbalashov239 commented 8 years ago

@UUSR уверяю вас полезность базы под большим вопросом, как минимум, в силу изменяемости паттернов правил, при каждом запуске.

UUSR commented 8 years ago

@seniorivn вы завели issues #29 ,где вы хотите уменьшить задержку я с вами полностью согласен ,сейчас задержка составляет более одной секунды при не релевантном ответе и более трёх секунд при релевантном ответе aggregate. Поверьте полезность создания базы не под каким не под вопросом ,она даст возможность сократить задержки в работе aggregate до минимума.

morfeusys commented 8 years ago

@UUSR нет, не даст. Так как вы не можете иметь в базе ответ на вопрос, который зависит от текущих данных на смартфоне. У меня ответ от смартфона приходит за 1-2 секунды.

UUSR commented 8 years ago

@Morfeusys можно более подробно ,я не пойму при чём тут смартфон. Тут идёт речь о модуле самообучения для aggregat.

morfeusys commented 8 years ago

@UUSR вы пишете о какой-то задержке с ответом. Я думаю, что вы имеете в виду ответ агрегата, когда вы даете запрос, который подходит к функции Дуси.

UUSR commented 8 years ago

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

morfeusys commented 8 years ago

@UUSR нет, он должен передавать управление тому модулю, который релевантнее всех обработает запрос.

UUSR commented 8 years ago

@Morfeusys да я полностью с этим согласен ,релевантность должна быть на первом месте по отношению к скорости.

XDedX commented 8 years ago

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

vua4loj commented 8 years ago

@UUSR Я не обижаюсь ))). Простите если в написанном как то это проявилось.) В споре если и не рождается истина, то точно кроется путь к познанию )). Может я в чем то не прав (умные люди меня тут поправят), но в моем опусе я, задавая вопросы хотел лишь сказать, что поставленная Вами задача сложна, но еще более бессмысленна (Взаимно без обид :) ). Идея то мне понятна. Но зачем дублировать то что уже и так есть. Если Агрегат уже умеет отвечать на вопрос находя ответ на него в интернете, то зачем его вносить в базу. @XDedX дал очень исчерпывающий ответ на поставленный Вами вопрос. Лично мое глубокое убеждение - сложные задачи нужно решать с применением самых простых алгоритмов (по возможности), а сумма простых решений приводит к надежному, работоспособному, унифицированному механизму выполнения поставленной задачи. Вот как то так. )).

UUSR commented 8 years ago

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

morfeusys commented 8 years ago

@UUSR а вот я пока что не увидел вашего предложения ))

UUSR commented 8 years ago

@Morfeusys если использовать интернет как базу данных нужно как минимум сохранять в интернете запросы пользователя для последующей индексации в поисковых системах. При этом должна быть идентификация пользователя ,чтобы информацию можно было получить в любой момент. Про базу знаний в виде скриптов я вообще не могу ничего сказать ,может вы подскажете ? Как скрипт может проверить релевантность ответа (записанного в текстовый файл) в интернете ? Сколько времени нужно на это и на сколько это сложно реализовать ?

XDedX commented 8 years ago

@UUSR , спасибо развесили. Не ваши комменты конечно. Просто представил, как @Morfeusys создал такую базу запросов, которые прошли мимо скриптов, и через время сидит, читает и плачет, а там такие шедевры как: Когда мой сосед вернёт мою отвертку Сколько блох у моего пса Когда мне повысят зарплату Будет ли война с марсианами ..... ну и т.д., и таких запросов миллион, и все индексировано в поисковых системах:-) Ну и кто будет писать скрипт на вопрос "Когда мой сосед вернёт мою отвертку?"? Или Дуся сама должна написать такой скрипт? Во как весело! Пишу, чтобы был понятен абсурд, который предлагается. В Дусе есть скрипты. Скрипты может создавать любой желающий. Каждый пользователь создает скрипты исходя из своих потребностей, как правило, часто повторяющихся. Таким образом база скриптов растет по мере необходимости решить какие-то задачи. Если это никому не нужно, зачем писать скрипт Единственное, что можно положительного почерпнуть из этого вопроса, так это - на отдельной ветке попытаться формализовать список необходимых скриптов на перспективу и по категориям.

ivanbalashov239 commented 8 years ago

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

ivanbalashov239 commented 8 years ago

@XDedX

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

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

UUSR commented 8 years ago

@XDedX запросы типа: Когда мой сосед вернёт мою отвертку Сколько блох у моего пса Когда мне повысят зарплату Будет ли война с марсианами будут опускаться вниз при индексе и в конечном итоге удаляться по истечении определённого времени которое можно будет задать в настройках. Базу данных @Morfeusys читать не нужно её будет индексировать сам скрипт при этом делать запросы в интернет. @seniorivn на данный момент у меня такая хотелка но проблема ,что я дальше не знаю как её реализовать что я вынес в issue #57 ,вот взяли бы и ответили.

ivanbalashov239 commented 8 years ago

@UUSR ответил, вы не обижайтесь, просто правда же бессмысленное обсуждение, само-обучаемый модуль это примерно IBM WATSON Вы готовы взяться за реализацию сопоставимого продукта? Вот и я не готов(пока) :)

pastukhov commented 8 years ago

Кстати, у watson есть API. Было бы круто написать модуль для общения с ним.

UUSR commented 8 years ago

@pastukhov можно более детально ,что будет этот модуль делать?

pastukhov commented 8 years ago

Получать пространный ответ на вопросы типа "будет ли война с марсианами"