RecMeKuda - это сервис рекомендаций организаций на основе текущего запроса пользователя и его геопозиции
- Петросов Арсен - backend
- Уткин Тимофей - backend
- Четверина Александра - backend
- Шемет Александра - Аналитика и ML
- Team Lead - Алексей Шевченко
Этот репозиторий посвящён проектной работе студентов 3-го курса МГТУ Н.Э. им. Баумана по дисциплине «Основы теории Искуственного интеллекта»
В качестве данных был взят опубликованный в конце сентярбря 2023 года датасет от Яндекса - «крупнейший русскоязычный датасет отзывов об организациях, опубликованных на Яндекс Картах.»
- 500 000 уникальных отзывов
- Только отзывы на организации в России
- Доступны на Яндекс Картах
- Опубликованы с января по июль 2023 года
- Датасет не содержит коротких односложных отзывов
- Тексты очищены от персональных данных (номеров телефонов, адресов почты)
Датасет в формате tskv содержит следующую информацию:
- Адрес организации (
address
) - Название организации (
name_ru
) - Список рубрик, к которым относится организация (
rubrics
) - Оценка пользователя от 0 до 5 (
rating
) - Текст отзыва (
text
)
-
Была проделана большая работа по анализу данных, в результате которой было выявлено 1370 различных классов-категорий организаций, для которых проводилась задача классификации текста пользователя.
-
В качестве базы данных организаций использовалась БД, состоящая из > 276000 уникальных организаций db_organizations, созданная из того же датасета.
-
Для выдачи рекомендаций от сервиса было необходимо получить координаты организаций, (из-за органичений бесплатного тарифа от API Яндекс карты) было решено использовать сервис Dadata с ограничениями ~ 5 000 обращений к API с аккаунта. В итоге были получены адреса для почти 50 тыс. московских организаций.
-
Поиск по необходимым организациям осуществлялся на основании:
- категорий, выданных NLP моделью
- расстояния от пользователя до организации
- рейтинга организации
- количества отзывов об организации
В качестве ответа пользователю приходят 3 лучшие организации из отранжированных и информация о них, включая расстояния в метрах.
-
Для деплоя модели была выбрана реализация с использованием TG-Bot API на Python
-
Для сохранения истории запросов пользователей и их геопозиций используется DataBase SQLite3
-
Классификация текста пользователя осуществляется с использованием открытой NLP модели Ru BERT tiny
- Склонируйте данный репозиторий и перейдите в директорию app
git clone https://github.com/Alex777Russia/tg-bot-recsys.git
cd tg-bot-recsys/app
- Создайте окружение и активируйте его, после чего установите необходимые зависимости
python -m venv myenv
myenv\Scripts\activate
pip install -r requirements.txt
- Вставьте свой телеграм токен в скрипте app.py
bot = telebot.TeleBot('YOUR TG-API KEY')
- Запустите бота следующей командой и можете отправлять сообщения
python app.py
Хочется поблагодарить компанию Яндекс за предоставление возможности воспользоваться данным датасетом в академических и исследовательских целях.
Так же хочется поблагодарить сервис Dadata, дающий возможность использовать свой API так же для учебных целей и написания своих проектов.
Распространяется под лицензией MIT. Больше информации в LICENSE.
По всем вопросам, связанным с проектом, пожалуйста, пишите на AlexeyShevchenko03@yandex.ru.