/dobro_ml

Primary LanguageJupyter Notebook

ML что как:

Для бота добра разработано 2 модели:

  1. классификатор проектов добра персональный/системный
  2. классификатор сообщений пользователей на оскорбительность (возвращает predict_proba, не так всё однозначно)

Классификатор проектов:

Ноутбуки

В процессе были размечены данные по всем существующим проектам добра.
Сгенерироанные признаки - счетчик part of speech + hash vectorizer.
Проверка стабильности модели - kfold и bootstrap выборки.
Дов интервал roc-auc [0.9441858042464192, 0.9852705941914532]

Финальный класс - predictor.py

Классификатор сообщений:

Ноутбуки

За векторайзер взята предобученная модель gensim word2vec "word2vec-ruscorpora-300". Перед предиктом моделью соощение проверяется на близость к словам из сета очень плохих слов d_associated.pickle, сгенерированным через w2v.most_similar(topn=50) с небольшого списка известных мне очень плохих слов. Дов интервал roc-auc [0.7386304795108573, 0.7624090920300678]

Финальный класс - msg_classifier.py

Как запустить:

1. Поставить докер

https://docs.docker.com/get-docker/

2. Запустить докер процесс

3. Скачать образ

docker pull fogugy/dobro-ml

4. Спулить ml-проект

git clone https://github.com/fogugy/dobro_ml.git

5. Дать права докеру на шаринг файлов проекта

settings -> resources -> file sharing (добавить директорию с проектом)
Актуально для Windows

6. Перейти в директорию с проектом, запустить

bash runml.sh

Сервер запускается в докер-контейнере на 4444 порту.

/test - get метод для проверки сервера

/project_type - post метод для определения класса проекта. Возвращает json {"type": "personal"/"common"}

/msg_score - post метод для определения вероятности неприятного сообщения. Возвращает json {"score": float[0-1]} со скором типа float. 0 - норм, 1 - обсценная лексика.