Pull to refresh

Comments 49

Завтра покормить кота — сервис сказал, что кот — это город. о_О
А так сервис интересный. А есть какие-то лимиты на количество запросов?
База Geonames содержит очень необычные города порой )) Уже почистили, спасибо.
Лимитов нет никаких.
Это должно решаться не чисткой, а системой ранжирования как именованных сущностей по отношению к общеупотребимым словам, так и сущностей между собой…
Не совсем. Как я описал — SpeechMarkup работает вне контекста. Он просто ищет сущности в тексте. Кот для него — это либо текст, либо город. Т.к. был такой город (оказывается), то он был помечен. Но суть-то в том, что затем ваше приложение потребляет результат. А значит, если город его не интересует, то он будет проигнорирован.
"Мама мыла раму"
Абсолютно любое слово может быть именованными сущностями. Без ранжирования, любой тест будет составлять поток сущностей…
Вторая задача — понять какая именно сущность тут имеется ввиду (если имеется)…
Да, безусловно есть еще над чем работать. С одной стороны нужно все это реализовать, а с другой — сделать API понятным и простым для стороннего разработчика. Таким, чтобы он не требовал изучения сложных материй для реализации конкретных задач. Пример такой задачи я и описал в демо.
Из выделения сущностей демо пример смог распознать только имена (но может я плохо старался). С ними тоже не плохо бы поработать («Позвонить Анатолию Ивановичу» работает, «Позвонить Анатолию И.И.» уже нет).
Время выделяет не плохо (хотя тоже баги есть). Для заметок работает красиво =)
API должно быть таким, чтобы простые вещи можно было сделать просто, а сложные возможно. Если API позволяет делать только элементарные вещи, а шаг в сторону — уже никак, то зачем такое API нужно не ясно…
Позвонить Анатолию И.И. — инициалы вам не распознает ни одна система распознавания речи. Но добавить распознавание инициалов — да, было бы хорошо, хотя и непонятно, кто будет стараться их вводить. Так только для тестов — да.
Насчет времени — вы бы не сочли за труд указать такие случаи? вот тут — github.com/Morfeusys/speechmarkup/issues
Спасибо
Могу конечно, правда мне сложно понять что для вас фича, а что проблема =)
Вот например «Позвонить подруге завтра в 11:00», скорее всего вы скажите, что такой формат мне «не распознает ни одна система распознавания речи»…
Да, вам вернется Позвонить подруге завтра в 11 00
Под это сейчас и заточена первая версия сервиса. Но все же — напишите о всем таком, что нашли. Спасибо.
Прикрутите к демке какое-нибудь распознование голоса, будет интереснее тестировать =)
Да, обязательно. Сразу руки не дошли. Там нужно анимацию рисовать для этого…
Мне кажется это не самое главное =)
Очень интересно что под капотом, технологии, подходы, алгоритмы, инфраструктура?
Под капотом смесь разных технологий, NoSQL база и тп. Обязательно расскажу.
А есть ли что то аналогичное SpeechMarkup, но только оффлайновое, без обращение в Интеренет, что можно например развернуть на своем сервере?
Голосовой андроид ассистент Дуся работает офлайн и использует похожий подход play.google.com/store/apps/details?id=com.dusiassistant
В принципе SpeechMarkup — это онлайн-версия этой разработки, только с более широкими возможностями.
Было бы неплохо выпустить офлайновую библиотеку, пусть и платную. Даже не столько для своего сервера, сколько для работы приложения в офлайне. Ну и минимизировать задержки обработки.
Смотря под какую платформу. Время, даты, числа распознать можно, а вот для тех же городов, фамилий нужны стемеры и базы с интексами, которые могут работать только на серверах.
Сейчас бесплатно, а когда раскрутитесь?
В чем подвох тогда? Функционал интересный. Можно подумать как это прикрутить к своему проекту. Но перед тем как использовать хотелось бы оценить стоимость.
Вам же как-то надо элементарно окупать нагрузку на сервер. Если бы это было open source решение, то понятно. А а так легко попасть на vendor lock.
Сейчас используется довольно интересная инфраструктура, позволяющая свести к нулю все расходы на поддержку. А оптимальные алгоритмы позволяют хранить минимум данных, что также сводит к нулю и стоимость хранения информации. Быть может, я подробней расскажу об этом в следующей статье, если кому-то будет интересно…
Да, было бы прекрасно, если бы вы смогли найти такую возможность.
UFO just landed and posted this here
Самое интересное было бы, если бы вы распространяли свое серверное решение, к которому можно было бы привязать свои справочники.
Так в статье же я указал, что в скором времени пользователи смогут добавлять свои сущности и логику
В том и дело, что я имею ввиду не добавлять к вам сущности, а использовать свои локально.
В любом случае, добавленные вами сущности будут видны только вашему приложению, и никому больше.
А как сделать голосовой ввод вместо текстового поля? Соглашусь с rvller, интересна техническая составляющая.
Сперва распознаете речь в текст посредством любого стороннего сервиса распознавания — гугла, яндекса, нюанса, или прямо в браузере (есть javascript speech api). А потом передаете текст на SpeechMarkup.
честно говоря, сколько не пробовал — ни одного правильно сработанного примера: все сущности определяются неверно. По моему сервис еще сырой и требует серьезной доработки.
Честно говоря, очень сильное утверждение )) А что конкретно «из примеров» у вас работает неправильно?? Какие сущности «определяются неверно»?
ну посмотрите логи.
Классический пример: «мама мыла раму» — почему рама, написанный с незаглавной буквы становится городом (почему не именем)? Так практически любое нарицательное слово может стать собственным и наоборот.
Не буду приводить более сложных примеров, типа «глубокая путина», где «путина» становится даже не Путина (еще бы ничего), а Путин.
Любая система распознавания речи (тот же гугл) приводит все к нижнему регистру. Любой пользователь может все писать в нижнем регистре. SpeechMarkup не работает в контексте. Если вам не нужна какая-то сущность — то вы просто ее отбрасываете и все.
Сервис разработан для сторонних приложений, которым нужно вытаскивать сущность заранее известного типа. А не просто «мама мыла раму». Кстати «Рама» не становится городом.
Да, я согласен, (тем более, если это речь), то регистр не важен. Но есть масса алгоритмов, которые различают собственные и нарицательные слова. Я, правда, не понял, что значит «Если вам не нужна какая-то сущность — то вы просто ее отбрасываете и все» и «вытаскивать сущность заранее известного типа»? То есть это полуавтоматическая система? Пользователь сам разгребает сущности? Тогда беру свои слова обратно.
Но могу сказать, что полуавтоматические системы мало кого интересуют. Когда заказчик говорит: «Сделай мне кнопку, на которую бы я нажал и получил, что хочу», по попробуй догадаться чего он хочет… А раз уж вы позиционируете понимание смысла, то как раз система и должна понять и порадовать любого пользователя.
В демо-примере кажется как раз и проиллюстрирована ситуация «Пользователь сам разгребает сущности». Здесь не предлагается система, которая «поймет» любой ввод для любой функции. У вас есть сервис, который должен реагировать на вполне конкретные сущности — вот эту задачу сервис и решает. Те сущности, с которыми сервис не работает, игнорируются. Именно это я и хотел сказать, ничего более.
Всем, кому интересен сервис подобного типа, рекомендую так же посмотреть на wit.ai
Бесплатный, если вы не хотите приват доступ к вашим наработкам фраз и вполне себе работает с русским (проверено на своем проекте).
Было бы здорово, если бы вы написали об этом статью! А то сервис интересный и довольно сложный в использовании.
Постараюсь сделать обзор в ближайшее время.
Я попробовал вводить здесь wit.ai/getting-started русские фразы, однако не увидел магии. Можете показать пример?
Магии и не будет, т.к. эти примеры тренированы на английском языке. Создайте свой аккаунт, создайте парочку intents, обучите, сделайте entity, которые нужны.
Да, много встроенного функционала (built-in entity) не работает, т.к. изначально рассчитано на английский язык, но ничего не мешает сделать своё :)
Приветствую! Почему заглох проект?
Я пока использую его в чисто технических целях, так как среди девелоперов нет большого интереса пока что.
Sign up to leave a comment.

Articles

Change theme settings