Реализация анализа тональности текста (Sentiment Analysis)
Sentiment Analysis определяет эмоциональную окраску текста: позитивная, негативная, нейтральная. Задача кажется простой — пока не сталкиваешься с сарказмом, отраслевой лексикой, смешанными отзывами или коротким текстом вроде «Ну спасибо».
Готовые решения vs кастомное обучение
Для большинства задач начните с готовых моделей. Для русского языка: blanchefort/rubert-base-cased-sentiment (Hugging Face) — 3 класса, точность ~86% на общих текстах. Для английского: cardiffnlp/twitter-roberta-base-sentiment-latest.
Кастомное обучение нужно когда: отраслевая специфика (медицина, финансы, техника), нужны нестандартные классы (например, 5-уровневая шкала), или качество готовых моделей неудовлетворительно на вашем корпусе.
Отраслевая специфика
«Препарат не вызвал побочных эффектов» — позитив в медицине, но нейтральная констатация факта в общем смысле. «Активное снижение» — негатив в финансах. Fine-tuning на доменных данных (500–2000 примеров) поднимает accuracy на 5–10% по сравнению с общими моделями.
Аспектный sentiment
Полный анализ отзыва: «Еда вкусная, но обслуживание ужасное, и цены завышены» — три аспекта с разной тональностью. Aspect-Based Sentiment Analysis (ABSA) извлекает пары (аспект, тональность). Реализация: sequence labeling с тегами B-ASP, I-ASP + классификация сентимента для каждого span.
Деплой и скорость
BERT inference: 50–150ms/текст CPU. Для высоконагруженных систем (>1000 запросов/сек) используйте батчинг + ONNX: 5–15ms/текст. Для простых случаев (бинарная классификация, английский) roBERTa-distilled работает в 3x быстрее при потере качества < 2%.







