Skip to content

Latest commit

 

History

26 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

llm-city

MVP-проект для анализа тональности русскоязычных отзывов с использованием TF-IDF baseline и модели RuBERT.

Проект поддерживает классификацию отзывов по трём классам: negative neutral positive

О проекте

Реализованы: предобработка датасета TF-IDF + Linear SVM TF-IDF + Logistic Regression RuBERT (DeepPavlov/rubert-base-cased) отдельные скрипты для инференса и обучения локальный Gradio-интерфейс для предикта тональности

Структура проекта

llm-city/
├─ data/
│  ├─ raw/
│  │  └─ rureviews.csv
│  └─ interim/
│     └─ cleaned_reviews.csv
├─ models/
│  ├─ tfidf/
│  │  └─ svm_pipeline.joblib
│  └─ rubert/
├─ src/
│  ├─ __init__.py
│  ├─ data/
│  │  ├─ __init__.py
│  │  └─ preprocess.py
│  └─ models/
│     ├─ __init__.py
│     ├─ train_tfidf.py
│     ├─ predict_tfidf.py
│     ├─ train_rubert.py
│     └─ predict_rubert.py
├─ app.py
├─ .gitignore
├─ LICENSE
├─ README.md
└─ requirements.txt

Датасет

Используется датасет RuReviews:

Ожидаемые колонки:

  • review
  • sentiment

Требования

  • Python 3.11+
  • зависимости из requirements.txt

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

Клонируйте репозиторий:

git clone https://github.com/findatalab/llm-city.git
cd llm-city

Создайте venv и установите зависимости:

python -m venv venv
venv\Scripts\activate
pip install -r requirements.txt

Скачайте дообученные веса RuBERT с Hugging Face и положите их в папку models/rubert/:

hf download lonelinessxxzz/llm-city-rubert --local-dir models/rubert

Дообученные веса RuBERT доступны на Hugging Face:

https://huggingface.co/lonelinessxxzz/llm-city-rubert

Базовая модель RuBERT:

https://huggingface.co/DeepPavlov/rubert-base-cased

Запустите локальный Gradio-интерфейс:

python app.py

После запуска откройте локальную страницу Gradio, например:

http://127.0.0.1:7860

Быстрый запуск

Если модели уже находятся в models/tfidf/ и models/rubert/

Если папка models/rubert/ уже есть локально, модель можно использовать сразу.
Если её нет, RuBERT нужно один раз дообучить.

Инференс TF-IDF

python -m src.models.predict_tfidf --text "Очень хороший товар, мне понравилось" --model-path models/tfidf/svm_pipeline.joblib

Инференс RuBERT

python -m src.models.predict_rubert --text "Очень хороший товар, рекомендую" --model-dir models/rubert

Результаты

Для локального интерактивного предикта используется Gradio-интерфейс в app.py. Запуск из корня проекта:

python app.py

TF-IDF + Linear SVM

Accuracy: 0.7273
Macro F1: 0.7267

RuBERT

Accuracy: 0.7750
Macro F1: 0.7768

RuBERT показал более высокое качество по сравнению с baseline-моделью на TF-IDF.

Переобучение моделей при необходимости

Предобработка датасета

python -m src.data.preprocess --data-path data/raw/rureviews.csv --output-path data/interim/cleaned_reviews.csv --sep "\t"

Обучение TF-IDF

python -m src.models.train_tfidf --data-path data/interim/cleaned_reviews.csv --model-dir models/tfidf --model-name svm

Обучение RuBERT

python -m src.models.train_rubert --data-path data/interim/cleaned_reviews.csv --output-dir models/rubert --model-name DeepPavlov/rubert-base-cased --epochs 2 --train-batch-size 8 --eval-batch-size 8

About

Virtual model of a city in which residents are represented using large language models (LLM).

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages