Проект: Запоминаем английские слова — Telegram Bot  Публичный пост
9 ноября 2020  1788
Запоминаем английские слова - Telegram Bot


TLDR; Я комфортно потребляю сериалы и книги в оригинале. Но все равно, регулярно встречаю слова которые я понимаю только из контекста. И быстро забываю. В итоге наклепал бота, что бы упростить себе жизнь и набить шишек на попытках сделать продукт.

Comedy Central - не судитесь со мной. Я поменяю иконку когда найду дизайнера 👾

Расскажите о сути проекта?

Memberry — телеграм бот для "правильного" перевода и заучивания английских слов. Английские слова часто зависят от контекста использования. И имееют по сотне значений.

Google Translate и другие популярные переводчики дают не все переводы и вообще не дают примеров использования. А с крылатыми выражениями и сленгом вообще беда.

Если интересна полная предыстория, прошу в мой пост про то как я собрался делать продукты.

Как появилась идея? Что вдохновило?

Я долго пользовался Anki — у меня накопилось около 2000 слов. Но искать переводы и примеры вручную банально надоело.

Очень спасает Context.Reverso. Но туда тоже приходиться лазить и собирать по крупицам. Пора автоматизировать 👻

Год назад я начал делал мобильное приложение для флеш-карточек. В итоге пришел к мысли, что я постоянно пользуюсь телеграмом и нет смысла иметь отдельное приложение. Плюс нет проблем с дизайном 😁. Так что я отправил приложение в чистилище для проектов и расчехлил Node.js с Telegraf.

Что вошло в прототип и сколько времени на него было потрачено?

Чистого времени ушло в районе 15-20 часов. По факту — целый месяц. На работе начался аврал и вступив в сговор с гриппом умерили мой пыл. А я планировал справиться за выходные 😅
Вроде изян.

Какой технологический стек вы использовали? Почему?

Node.js, MongoDB, Telegraf, cheerio
Цель проекта не выучить новый язык или библиотеку, так что я взял то c чем уже работал. Для аналитики юзаю Amplitude. Задеплоил на AWS EC2 с PM2.

Как вы запускались и искали первых пользователей?

Первая релизная версия вышла вчера 🙃. На текущий момент у бота 20 пользователей (пару знакомых и несколько человек из моего телеграм канала). Сейчас основная задача - стабилизировать и покрыть тестами существующий функционал.

Дальше буду залазить в подборки для изучения английского и тематические чаты. Как только прикручу другие языки пойду колядовать на реддит.

С какими самыми неожиданными трудностями пришлось столкнуться?

Изначально хотел использовать DeepL для перевода. Но они быстро блочат по IP — хватает 10 запросов за 20 минут. Писать proxy rotator мне не хотелось, поэтому попробовал Yandex.Dictionary. Но они дискриминировали меня по национальному признаку и не дают доступа к API (не работает вне РФ).

В итоге использую Context.Reverso. Много полезных вещей работает из коробки. Например — автоисправление слов, перевод слэнга и целых фраз. Но нет API и теоретически могут дать по шляпе за скрапинг сайта.

А вообще я не нашел адекватных апишек для перевода и транскрипции. Если вы знаете такие, отпишите плиз.

Сколько потратили и заработали? Есть идеи как это можно монетизировать?

Прямых затрат пока не было. По части задач мне помогает наш джун, так что можно включить в смету его ЗП.

Текущий функционал монетизировать не собираюсь, цель собрать аудиторию пользователей и двигатся в сторону более общего решения.

Какие планы на будущее?

На ближайшее время:

  • Покрыть все тестами
  • UX улучшения
  • Слово дня (по типу https://t.me/en_pic)
  • Добавить транскрипцию и озвучку
  • Поддержка дополнительных языков из Context.Reverso
  • Chrome Extension (переводить и добавлять слово из статтей и видео).

Идеи (пока хз):

  • Разработка своего решения для перевода (на основе субтитров). У Context.Reverso нет API, а надеятся на их милость глупо.
  • Мобильное приложение с контентом и возможностью общения с ботом

Нужны ли какие-то советы или помощь Клуба?

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

Бот в альфа версии и точно будут баги. Если что-то сломалось или выглядит как херня сразу пишите мне https://t.me/tmaniac

ПС. О том как из сайд-проекта я пытаюсь сделать продукт пишу у себя в канале. Последний месяц я не особо радовал апдейтами, но обещаю исправиться 🌚

Связанные посты
13 комментариев 👇

Отличная задумка, сам какое то время назад думал запилить подобного бота, так как приложения все для запоминания слов какие-то не те, но руки не дошли

  Развернуть 1 комментарий

Круто, здорово, что довел до прототипа и уже есть пользователи, пожелаю, чтобы дальше все только нарастало! Вопрос, а ты смотрел, пробовал nocode/0code решения?

  Развернуть 1 комментарий

@aminbenarieb, не рассматривал, так как планируемый функционал сделать вчистую с 0сode не получится (тот же алгоритм для интервальных повторений). А скрещивать это все еще тот гемор.

  Развернуть 1 комментарий
Ivan Puhachov канадский аспирант 11 ноября 2020

Чувак, это офигенно! Я только недавно думал о том, что телеграм боты - идеальная платформа для Anki.

Сам учил слова в лингвалео, и мне отлично заходили прочие их тренировки. Как насчет других видов повторений, кроме "помню - не помню"?
Мне заходили "слово - варианты перевода" (англ - рус, и рус - англ) - если сделать их по-умному, а не рандомно, будет вообще класс. Например, варианты брать только из слов из набора пользователя + семантически близкие (по вектору эмбеддинга слов из натренированных моделей, например).

Насчет "Google Translate и другие популярные переводчики дают не все переводы и вообще не дают примеров использования. А с крылатыми выражениями и сленгом вообще беда." - не совсем так. Любой уважающий себя онлайн словарь так умеет приводить примеры использования ([тут] (https://www.collinsdictionary.com/dictionary/english-thesaurus/taunt) и тут, urban dictionary тот же). Google translate и deepL все-таки заточены на перевод текстов и фраз, глупо ожидать от них функционал словаря. Уверен, что среди англо-словарей (тезаурусов) найдется приличный с доступным API. А перевод на русский (слов и примеров фраз) можно делать на лету.

chrome extension - топ, удваиваю

Из фичей мне было бы удобно пользоваться выгрузкой слов из словаря киндла - там слова лежат в бд, ее можно легко получить подключившись по usb. Помню писал скрипт, чтобы выгрузить слова оттуда в лингвалео - боль (по вине сервиса, бд очень простая). Да и вообще, чем проще пользователям закинуть уже имеющиеся коллекции - тем лучше.

  Развернуть 1 комментарий

@ivanivan, спасибо за идеи и мысль с словарями. Добавлю к рассмотрению

  Развернуть 1 комментарий

Поигрался, спасибо!

Концепт очень интересный, но мне не зашел вот почему.
Я упорядочил по MoSCoW — первые пункты прям то из-за чего не буду дальше пользоваться, а последние — просто nice to have, но не влияют на моё решение пользоваться ботом дальше.

  • Немецкий язык реквестую :)
  • в самом начале хотелось бы уже какие-то готовые наборы слов иметь, а не создавать базу с нуля (можно взять знаменитый клубный https://docs.google.com/document/d/19akdinKmr3ZULBQcFdO60_hU89BLG-X5cRkchmIOwzc/edit)
  • не нашел механики впечатывания слова: я ожидал, что бот спросит меня как будет "Стол" и ожидает именно впечатывания "Table" или "Desk", а затем проверит, попал ли я в один из синонимов и автоматически посчитает выучил ли я его или надо ещё поучить несколько кругов, и если я опечатался — покажет мне перевод сам, чтобы я запомнил.
  • напрягает кликать лишний раз: сначала всегда "Show answer", после которого показывается ответ и кнопки "Again | Good | Easy". Логика такого не очень понятна, лично мне было бы проще сразу видеть "Show answer | Again | OK", ну и если я выбрал "Show answer" — то там остаётся "Again | OK".
  • Зачем нужен "Easy" и что он делает совсем не понял.
  • В словарь попадает смесь слов на обоих языках, и такую же смесь бот и спрашивает; может быть это и неплохо (то что спрашивает в разнобой), но мне думается что нужно бы в словаре привязывать язык, что в дальнейшем даст возможность осознанно практиковать одно из направлений перевода или разнобой.

  • Нехватает элементраной статистики — хотелось бы видеть сколько всего слов в словаре, а для каждого слова — насколько хорошо я его выучил (при поможи эмоджи можно показать прям справа от слова — места должно бы хватить даже на мобильном).
  • Какой-то мотивации продолжать тоже нехватает: сколько слов учил сегодня/вчера, какие-то одобрения и мотиваторы продолжать на этой базе.
  • Потенциал нотификаций я считаю недоиспользован. Сейчас можно задать только 1 раз в день, когда бот будет меня пинговать. Но я например использую Помодоро систему и хотел бы, чтобы бот кидал мне новое слово каждые полчаса (естессно если я не ответил — то чтобы ждал, а не накидывал слов пока я на митинге и не могу посмотреть). Тогда я бы смог просто в режиме "Проверяю телегу вдруг жена что написала" выучить несколько новых слов.
  • Подсветку слова в предложениях было бы клёво видеть, помогло бы сориетироваться.
  • Специальные термины (я учу морские на англ) Контексто этот не особенно знает: в тексте у него всё верно (траверз = beam), а среди значений что-то другое:


Таки нужен Deepl!

  • Ну сам просмотр словаря по 3 слова такое себе, хотя тут наверное ограничение телеги? Хотя бы по 10 слов выводил бы, чтоли.
  • В управлении словами нехватает кнопки "Уже выучил" (ну или "Скрыть", это наверное то самое "Easy"?). Перенёс бы его сюда на экран управления словом: если слово задолбало, то я бы оставил его в словаре, но отметил бы как выученное чтобы его больше не подбрасывало. Одновременно сюда же кнопка "Обнулить" — забыть весь прогресс по слову и начать его заново учить.

  Развернуть 1 комментарий

@zahhar, Спасибо за идеи. Добавил в список, половину точно реализую.

Немецкий начну добавлять сразу после переезда с Context.Reverso

  Развернуть 1 комментарий

@TimTimLead, спасибо! а на какое апи переезжать будешь? я поглядел Дипл — вроде бы не оч он дорогой, по 5 долл в мес берут?

  Развернуть 1 комментарий

@zahhar, пока больше смотрю в сторону https://www.lingvolive.com/ru-ru/translate/de-ru/Wunder

deepl больше про перевод, а не словари. То есть примеров и транскрипции не будет.
От deepl есть https://www.linguee.com/ - там все есть, а вот API как раз и нет)

  Развернуть 1 комментарий

Здорово, точно бы не помешало выделять результаты среди кусков текста как в Reverso Context. Для простых слов и фраз сервис работает отлично, правда я что-то понажимал и бот перестал мне отвечать :)) Если поискать несколько слов а уже потом по истории прокликать Add то начинает тупить

  Развернуть 1 комментарий

@62h7PD0XmD9S42bK, по поводу выделения принял, хорошая мысль.

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

Что бы все в истории работало я пофикшу. Было глупостью разбивать все на "сцены". Когда с нее выходишь, все ее команды перестают работать.

Спасибо)

  Развернуть 1 комментарий

Круто, полезный бот!

Мне в нем не хватает только настройки с выбором направления учёбы, en-ru / ru-en

  Развернуть 1 комментарий

Пушка! Использовал rememba, когда учил испанский, но зачем приложение, если есть бот!

Что мне лично не хватает сейчас – написать свою версию для карточкки (например, контекст иногда наоборот лишний и раздражает, хочется видеть одно слово-перевод). Иногда я, например, использовал ассоциации или перевод на другой язык (испанский - английский, вместо испанский - русский)

  Развернуть 1 комментарий

😎

Автор поста открыл его для большого интернета, но комментирование и движухи доступны только участникам Клуба

Что вообще здесь происходит?


Войти  или  Вступить в Клуб