Thursday, August 11, 2022

От ЧТО к КАК: аппликация для изучения языков - первоначальный анализ

Этот проект огромен.
Сейчас я анализирую первый релиз с очень ограниченной функциональностью.

Функциональность

  • Тренируем способности:
    • Читать
    • Слушать
  • Порядок действий:
    • Показать текст и прочитать его пользователю, выделяя прочитанную часть одним цветом и слово, которое сейчас читается, - другим
    • Предложить пользователю выделить неизвестные слова
    • Показать толкования каждого из неизвестных слов из публично доступных словарей - одного слова за раз
    • Подобрать следующие тексты, использующие неизвестные слова, и добавить их в очередь для чтения
    • Для новых пользователей очередь содержит несколько простейших текстов типа "Здрассте/До свиданья/Как тебя зовут".
    • Когда очередь оказывается пустой - пользователь уже знает все слова из представленных текстов - показать список тем для выбора следующих текстов.
    • В идеале новый текст не должен содержать больше 10% новых слов или словоформ.

Данные

  • Корпус коротких текстов, проиндексированный по:
    • Словам
    • Морфемам (когда возможно)
    • Идиомам (когда возможно)
  • Толкования слов, собираемые по мере необходимости
  • Данные о пользовательской активности:
    • Частота, затраченное время и насыщенность уроков
    • Словарь пользователя: слова, которые никогда не отмечались как неизвестные или перестали отмечаться как неизвестные (с числом обоих состояний или списком текстов)
    • Внимание: как много слов впервые отмечаются как неизвестные лишь после нескольких появлений в текстах
    • Эффективность обучения: сколько раз одно и то же слово отмечается как неизвестное?

Используемые технологии

  • A progressive web app (PWA) - нигде не нашла перевода этого выражения, "прогрессивное веб-приложение" не в счет - сохраняющее данные о пользовательской активности на пользовательской машине.
    • Тот же самый код для компьютера, планшета и смартфона
    • не нужно инсталляции и апгрейдов
    • 100% приватность для пользователя
    • пользователь == пользовательский агент(браузер или планшет/смартфон)
  • MongoDB на публичном сервере для хранения корпуса
    • MongoDB поддерживает регулярные выражения как тип данных.
    • Я знаю, как это сделать в SQL. Самое время разобраться с NoSQL 😉.
    • Публичный сервер - это необходимость. Я пока не готова к собственному серверу.
  • Использовать кластеринг для разпознавания морфем и идиом
    • Хорошо бы добавить возможность критичного использования мнения пользователей
  • Use GraphQL для взаимодействия клиента с сервером
    • Легче добавлять функциональность, чем при использовании REST
    • Сложнее выучить
  • Использовать автоматическое чтение (TTS) доступное в браузере
    • Не надо хранить аудио
    • Легко синхронизировать чтение и выделение текста
  • Для начала реализовать всю серверную часть на Python
    • Python имеет больше функциональности для машинного обучения
    • Он поддерживает все, что мне сейчас надо

Нужно выучить

  • Реализацию асинхронности в Python
  • GraphQL
  • PyMongo
  • Motor?
  • Graphene or Ariadne?
  • Tornado?

Готовые фрагменты

Продолжение следует ...