/eng_app_module

Primary LanguageJupyter Notebook

Установка

Содержимое библиотеки находится в lib. Перед использованием библиотеки ее необходимо установить и настроить:

  1. установить все зависимости из requirements.txt (pip3 install -r lib/requirements.txt)

  2. положить в lib/put_to_~/gensim-data/eng_app_models модель из диска (3 файла): https://disk.yandex.ru/d/0gciCaFpwuBNdA?w=1 (этот шаг можно пропустить, тогда при первом запуске будет загружена предобученная модель word2vec-google-news-300)

  3. переместить соержимое lib/put_to_~ в домашную директорию (home/[username])

  4. корректность проверить тестовым зауском (python3 test.py, инициализация word2vec модели может занять несколько минут - это нормально)

  5. в случае неполадок перед повторным запуском следует удалить созданную библиотекой базу данных (users_statistic.db)

Документация

Запуск tcp-сервера: python3 server.py.

Общение с сервером происходит синхронно через запросы. В качестве запроса необходимо отправить строку вида: [func, [args]], где func соответствует имя вызываемой функции (строка), args - аргументы функции через запятую (в порядке передачи в функцию). Пример запроса: ["get_recomendation", [1, 1, 0.2]] означает вызов функции get_recomendation(1, 1, 0.2)

Доступные методы:

В этих методах тип данных Unit означает список списков вида: [Слово: str, Интерес: bool, Знание: bool].

  • init_db() - вызывать для первичной инициализации базы данных
  • create_user(id: int, unit: Unit) -> None - создает нового пользователя
  • change_diff(user_id: int, diff: int) -> None - изменяет сложность для пользователя (кол-во слов в уроке)
  • add_unit(user_id: int, unit: Unit) -> None - добаляет результат урока, который прошел пользователь
  • get_lesson(user_id: int) -> List[List[str]] - возвращает новый урок на основе интересов для заданного пользователя в виде списка пар (английское_слово, перевод_на_русский)
  • get_recomendation(user_id: int, max_users: int, min_accuracy: int) -> List[List[str]] - возвращает новый урок на основе интересов пользователей, которые наиболее похожи на данного. max_users отвечает за максимальное количество пользователей на основании которых строить рекомендации, а min_accuracy за минимальное значение точности, при котором пользователи считаются похожими (значение от 0 до 1). Данные рекомендации полезны, если пользователь хочет "попробовать что-то новое". Можно сделать такие выводы исходя из того, что пользователь начал редко пользоваться приложением или ставить плохие оценки изученным словам.

Пример передачи типа данных Unit:

[["one", true, true], ["two", false, false]] означает передачу двух слов:

  1. one, интересно пользователю, пользователь знает это слово
  2. two, не интересно пользователю, пользователь не знает это слово

Примеры запросов:

  • ["init_db", []] инициализация БД
  • ["create_user", [1, [["one", true, true], ["two", true, true], ["five", false, false]]]] создание пользователя (после прохождения начального занятия)
  • ["create_user", [2, [["one", true, true], ["two", true, true], ["five", false, false]]]] создание второго пользователя
  • ["change_diff", [2, 3]] изменение количества слов в уроке для второго пользователя
  • ["add_unit", [1, [["hello", true, true], ["google", true, true], ["seven", false, false]]]] создание пройденного урока для первого пользователя
  • ["get_lesson", [1]] получение урока для первого пользователя
  • ["get_lesson", [2]] получение урока для второго пользователя
  • ["get_recomendation", [2, 1, 0.1]] получение рекомендаций на основе интересов похожих пользователей