Open UUSR opened 8 years ago
Очень неоднозначная постановка задачи ))
Без такого модуля мы теряем время ((
@UUSR без конкретной постановки задачи с вашей стороны мы теряем еще больше времени ))
Для начала нужно задать формат базы данных в которую будем записывать, это очень важный момент, скорее всего должны быть команды и ответы отдельно, хотя я и могу ошибаться.. Я не программист ))
@UUSR Простите. А в чем вы видите смысл этой базы данных? Ее задачи, цели и последующее использование?
@UUSR для начала нужно определиться, что этот модуль должен делать. Конкретно.
Такая база данных даёт возможность персонализировать пользователя Aggregate, (ведь люди разговаривают по разному) в последствии её можно использовать для генерации самого "ответа".
Для начала нужно задать формат базы данных, так чтобы потом не пришлось всё переделывать...((
@UUSR я все еще никак не уловлю самой задачи, которую должен на ваш взгляд решать такой модуль. База данных - это очень второстепенный вопрос, поверьте.
Модуль должен генерировать "ответ" Aggregate если не один из модулей не сработал и в консоли: INFO: No results for "вопрос" Модуль должен генерировать "ответ" на основании анализа базы данных уже использованных ответов ,база должна постоянно пополняться в процессе диалога с пользователем.
@UUSR Какой-то замкнутый круг - мы должны выдать ответ из базы, который там должен появиться на основании ответов на вопросы, на которые у нас нет ответа )) А чем же вас не устраивает скрипт "Чат-бот" у Дуси, который может прекрасно использоваться благодаря модулю "Ассистент Дуся"?
Не вы должны выдавать ответ, а модуль должен выбирать один из ответов из базы более подходящий на заданный вопрос. Ответов на вопросы и не будет пока не будет создана база вопросов и ответов.
@UUSR ваша постановка вопроса мне не нравится, но что то в этой идее есть, как @Morfeusys правильно заметил, ваш вопрос скорее про самообучаемого "чат-бот"а, Задача интересная для решения, ресурсов здесь условно много, по сравнению с мобильником, можно развернуться, сделать нейронную сеть, использовать фичи агрегата для определения структур запросов и тп.
Я не сказал что это будет чат-бот ,просто если рассматривать Aggregate как персональный ассистент на пк то он и должен быть персональным в смысле персонализации данных пользователя. Ведь все запросы от пользователя и есть уникальными данными которые у разных пользователей будут отличаться.
@UUSR в чем уникальность данных? Как вы себе представляете процесс обучения? Под чат-ботом подразумевается функционал собеседника, только в данном случае полезного, способного классифицировать, хранить, использовать полученную от собеседника информацию. Такое описание подходит под ваше желание?
@UUSR @seniorivn Господа разработчики, задача машинного обучения и уж тем более машинного обучения в области естественных языков - это задача сложная. Если вы пожелаете подискутировать на данную тему, то мы можем зависнуть где-нибудь в хэнгауте и закрыть эту тему однажды. Закрыть - в смысле решить вопрос.
@Morfeusys согласен, это представляется мягко говоря не простым, но чертовски интересным, будет готов основной функционал, будет смысл обсуждать, а пока можно оставить открытым, на будущее.
@seniorivn Я предлагаю создать модуль который будет записывать все запросы распознанные google Speech (уже с проверкой правописания) в базу данных. Это позволит нам хранить и в последствии классифицировать полученную от собеседника информацию. В последствии базу данных можно с лёгкостью обрабатывать для получения часто используемых запросов от пользователя.
@UUSR
@UUSR @Morfeusys 1)Если слежка не выходит за рамки локальной машины, то это не слежка :) 2)Согласен собирать данные без понимания как именно будем с ними работать по сути бессмысленно, сначала нужно сформулировать цели и методы, алгоритмы обработки, а собирать данные самая меньшая из проблем в этом вопросе.
Мне кажется, сначала стоит сделать поддержку моделей диалога по типу того как у wit.ai сделано?
@Morfeusys
@UUSR Пожалуйста, создавайте отдельный issue для конкретного вопроса. Спасибо
@pastukhov эта issue вообще впереди паровоза.
@pastukhov @seniorivn как раз у Агрегата есть поддержка диалогов, как и у wit.ai. И кстати помощнее чем у wit.ai. Мне кажется вы или что-то другое имеете в виду, или не совсем вникли в документацию. Быть может что-то непонятно? Спрашивайте - документацию улучшим.
@vua4loj я ответил на ваши вопросы в этом посте? (смотрите выше)
@UUSR 1) Я вам задал всего один вопрос и вдруг попал под раздачу. Ве впредь внимательно смотрите кому отвечаете в своих ответах. Как пример "@vua4loj я ответил на ваши вопросы в этом посте. (смотрите выше)" - Вы явно не мне отвечали. 2) Раз уж меня тут упомянули снова я почитал все комментарии и выражу свои мысли по этому поводу. 2.1) "Дуся сохраняет последний запрос в файл DusiaInput.tx ,т. е. для последующего использования в некоторых случаях." - Вот именно. Т.к. предполагается продолжение работы с этим запросом в возможном "некотором случае" (если я не прав, разработчик меня поправит). Но дело даже не в этом. Дуся не пишет весь диалог со своим пользователем. 2.2)Если я Вас правильно понял, то вы предлагаете создать базу в которой будут хранится всевозможные запросы. Предположим. Я справил какая сегодня погода. Получил ответ. Записалось в базу.Зачем мне завтра эти данные в базе? Сегодня я спросил как выгладит солнечная система. Не по тому что мне это интересно, а из за любопытства на реакцию Агрегата. По вашей задумке это тоже попадет в базу как возможный запрос. Зная человеческую натуру могу с уверенностью сказать, что через некоторое время Ваша база будет содержать 90% мусора, то есть ответов на вопросы которые точно никогда не повторятся. А теперь простые вопросы . Вы будете модерировать свою базу? У Вас хватит машинных ресурсов для сохранения такой базы? Как Вы думаете, долго будет Ассистент обрабатывать данные базы через 3-4 года активного использования? 2.3) Вы все время говорите про создании базы данных, но не где не упомянули о ее дальнейшем применение.База создаются с какой то целью. Создание базы не может являться самоцелью. Что вы хотите от базы? Что бы Агрегат мог оперативно обработать ответ по полученному вопросу? Ну для этого есть ужу база данных - всемирная сеть интернет, ну или википедия на худой конец. Хотите с помощью такого модуля получить некоторую независимость от сети (автономность)? Ну эту цель я даже комментировать не стану (тут проще телефон вместе с ПК выкинуть на помойку) ТАК КАКОВА КОНЕЧНАЯ ЦЕЛЬ БАЗЫ????? Ответе для начало не этот вопрос
@vua4loj я не хотел вас обидеть ,я всего лишь вас спросил цитирую: "@vua4loj я ответил на ваши вопросы в этом посте? (смотрите выше)" ,и не ожидал на такую бурную реакцию с вашей стороны. Я не буду многословен и скажу лишь одно ,что базу будем использовать для генерации ответов от ассистента. В нутре базы будут сохранятся все запросы пользователя на которые будет генерироваться ответ. Все запросы и релевантные ответы будут пере линкованы между собой. Я не специалист по базам данных но из опыта могу сказать ,что генерация ответа ассистента при создании базы значительно ускорится. База абсолютно не будет содержать мусора и не будет большой ,модерация пока производиться не будет ,часто не использованные линки будут удалятся вместе с данными через определённое время ,что не даст базе сильно увеличиваться в размерах.
@pastukhov а вы ,что скажете.
@UUSR уверяю вас полезность базы под большим вопросом, как минимум, в силу изменяемости паттернов правил, при каждом запуске.
@seniorivn вы завели issues #29 ,где вы хотите уменьшить задержку я с вами полностью согласен ,сейчас задержка составляет более одной секунды при не релевантном ответе и более трёх секунд при релевантном ответе aggregate. Поверьте полезность создания базы не под каким не под вопросом ,она даст возможность сократить задержки в работе aggregate до минимума.
@UUSR нет, не даст. Так как вы не можете иметь в базе ответ на вопрос, который зависит от текущих данных на смартфоне. У меня ответ от смартфона приходит за 1-2 секунды.
@Morfeusys можно более подробно ,я не пойму при чём тут смартфон. Тут идёт речь о модуле самообучения для aggregat.
@UUSR вы пишете о какой-то задержке с ответом. Я думаю, что вы имеете в виду ответ агрегата, когда вы даете запрос, который подходит к функции Дуси.
@Morfeusys да именно ,потому aggregat должен передавать управление тому модулю у которого ответ генерируется быстрее чем у всех остальных модулей.
@UUSR нет, он должен передавать управление тому модулю, который релевантнее всех обработает запрос.
@Morfeusys да я полностью с этим согласен ,релевантность должна быть на первом месте по отношению к скорости.
"Модуль самообучения" - предлагается по сути сделать типа экспертной информационной системы, которая состоит из двух элементов, базы данных и базы знаний. База данных в нашем случае - это инет и данные на компе, а база знаний - база скриптов. Попробуйте у Дуси спросить сколько вам лет, если нет скрипта, то не будет ответа. Постановка задачи как минимум некорректна. По сути, задача уже решена.
@UUSR Я не обижаюсь ))). Простите если в написанном как то это проявилось.) В споре если и не рождается истина, то точно кроется путь к познанию )). Может я в чем то не прав (умные люди меня тут поправят), но в моем опусе я, задавая вопросы хотел лишь сказать, что поставленная Вами задача сложна, но еще более бессмысленна (Взаимно без обид :) ). Идея то мне понятна. Но зачем дублировать то что уже и так есть. Если Агрегат уже умеет отвечать на вопрос находя ответ на него в интернете, то зачем его вносить в базу. @XDedX дал очень исчерпывающий ответ на поставленный Вами вопрос. Лично мое глубокое убеждение - сложные задачи нужно решать с применением самых простых алгоритмов (по возможности), а сумма простых решений приводит к надежному, работоспособному, унифицированному механизму выполнения поставленной задачи. Вот как то так. )).
@vua4loj добрый вечер, просто если у нас базой данных в нашем случае является интернет а базой знаний являются скрипты ,как подметил @XDedX ,то мы теряем входящие данные от пользователя. Запросы от пользователя единожды обрабатываются в скриптах и исчезают. Исходя из этого мы теряем возможность пере линковки между запросами пользователя и релевантными ответами. На подобие того как в интернете ссылки (чем больше ссылок на информацию тем выше она в выдаче). Наверное это сложная задача для программирования ,и можно пойти по другому более простому пути ,но я пока не вижу альтернативных вариантов.
@UUSR а вот я пока что не увидел вашего предложения ))
@Morfeusys если использовать интернет как базу данных нужно как минимум сохранять в интернете запросы пользователя для последующей индексации в поисковых системах. При этом должна быть идентификация пользователя ,чтобы информацию можно было получить в любой момент. Про базу знаний в виде скриптов я вообще не могу ничего сказать ,может вы подскажете ? Как скрипт может проверить релевантность ответа (записанного в текстовый файл) в интернете ? Сколько времени нужно на это и на сколько это сложно реализовать ?
@UUSR , спасибо развесили. Не ваши комменты конечно. Просто представил, как @Morfeusys создал такую базу запросов, которые прошли мимо скриптов, и через время сидит, читает и плачет, а там такие шедевры как: Когда мой сосед вернёт мою отвертку Сколько блох у моего пса Когда мне повысят зарплату Будет ли война с марсианами ..... ну и т.д., и таких запросов миллион, и все индексировано в поисковых системах:-) Ну и кто будет писать скрипт на вопрос "Когда мой сосед вернёт мою отвертку?"? Или Дуся сама должна написать такой скрипт? Во как весело! Пишу, чтобы был понятен абсурд, который предлагается. В Дусе есть скрипты. Скрипты может создавать любой желающий. Каждый пользователь создает скрипты исходя из своих потребностей, как правило, часто повторяющихся. Таким образом база скриптов растет по мере необходимости решить какие-то задачи. Если это никому не нужно, зачем писать скрипт Единственное, что можно положительного почерпнуть из этого вопроса, так это - на отдельной ветке попытаться формализовать список необходимых скриптов на перспективу и по категориям.
@UUSR читая ваши комментарии сложилось впечатление, что вы очень далеки от технологий и не до конца понимаете как "это всё" работает. По сабжу: волшебной пилюли не будет (в обозримом будущем) либо пишите модули реализующие ваши хотелки либо ждите пока их сделают другие, третьего не дано, ну и тестировать помогайте в меру возможностей, конечно.
@XDedX
Единственное, что можно положительного почерпнуть из этого вопроса, так это - на отдельной ветке попытаться формализовать список необходимых скриптов на перспективу и по категориям.
Да, конкретные предложения создавайте в виде отдельных issue, а список сделаем когда какое то количество наберётся.
@XDedX запросы типа: Когда мой сосед вернёт мою отвертку Сколько блох у моего пса Когда мне повысят зарплату Будет ли война с марсианами будут опускаться вниз при индексе и в конечном итоге удаляться по истечении определённого времени которое можно будет задать в настройках. Базу данных @Morfeusys читать не нужно её будет индексировать сам скрипт при этом делать запросы в интернет. @seniorivn на данный момент у меня такая хотелка но проблема ,что я дальше не знаю как её реализовать что я вынес в issue #57 ,вот взяли бы и ответили.
@UUSR ответил, вы не обижайтесь, просто правда же бессмысленное обсуждение, само-обучаемый модуль это примерно IBM WATSON Вы готовы взяться за реализацию сопоставимого продукта? Вот и я не готов(пока) :)
Кстати, у watson есть API. Было бы круто написать модуль для общения с ним.
@pastukhov можно более детально ,что будет этот модуль делать?
Получать пространный ответ на вопросы типа "будет ли война с марсианами"
Хотелось бы иметь модуль, который создаёт базу данных всех команд и ответов.