Содержимое библиотеки находится в 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]]получение рекомендаций на основе интересов похожих пользователей