Содержимое библиотеки находится в lib
. Перед использованием библиотеки ее необходимо установить и настроить:
-
установить все зависимости из requirements.txt (
pip3 install -r lib/requirements.txt
) -
положить в
lib/put_to_~/gensim-data/eng_app_models
модель из диска (3 файла):https://disk.yandex.ru/d/0gciCaFpwuBNdA?w=1
(этот шаг можно пропустить, тогда при первом запуске будет загружена предобученная модельword2vec-google-news-300
) -
переместить соержимое
lib/put_to_~
в домашную директорию (home/[username]
) -
корректность проверить тестовым зауском (
python3 test.py
, инициализация word2vec модели может занять несколько минут - это нормально) -
в случае неполадок перед повторным запуском следует удалить созданную библиотекой базу данных (
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). Данные рекомендации полезны, если пользователь хочет "попробовать что-то новое". Можно сделать такие выводы исходя из того, что пользователь начал редко пользоваться приложением или ставить плохие оценки изученным словам.
[["one", true, true], ["two", false, false]]
означает передачу двух слов:
- one, интересно пользователю, пользователь знает это слово
- 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]]
получение рекомендаций на основе интересов похожих пользователей