A2803's picture
Update app.py
8aa02b3 verified
# ИМПОРТ НЕОБХОДИМЫХ БИБЛИОТЕК
import gradio as gr
from transformers import pipeline
# ЗАГРУЗКА МОДЕЛИ
# Используем готовую модель hugging face, обученную на русском языке (ruBERT-sentiment)
try:
sentiment_pipe = pipeline('sentiment-analysis', model="blanchefort/rubert-base-cased-sentiment")
except Exception as e:
print(f"Ошибка при загрузке модели: {e}")
# Можно использовать заглушку, если модель не загружается, но лучше решить проблему с environment
def dummy_sentiment_pipe(text):
return [{'label': 'NEUTRAL', 'score': 0.5}]
sentiment_pipe = dummy_sentiment_pipe
# ОСНОВНАЯ ФУНКЦИЯ АНАЛИЗА
def analyze_sentiment(text: str) -> str:
"""
Анализирует тональность входного текста с помощью предобученной модели.
"""
text = text.strip()
# Проверка на пустой ввод
if not text:
return "Введите текст для анализа"
# Получение результата от модели
try:
result = sentiment_pipe(text)[0]
label = result['label']
score = result['score']
except Exception as e:
return f"Ошибка при обработке текста: {e}"
# Преобразование метки (label) на русский язык
label_upper = label.upper()
if label_upper.startswith("NEG"):
label_ru = "Негативная тональность"
elif label_upper.startswith("POS"):
label_ru = "Позитивная тональность"
elif label_upper.startswith("NEU"):
label_ru = "Нейтральная тональность"
else:
label_ru = f"Тональность: {label}"
# Возврат форматированного результата
# ЭТО ИСПРАВЛЕНИЕ: return находится вне условных блоков, чтобы всегда возвращать результат.
return f"{label_ru} (Уверенность: {score:.2%})"
# ОПИСАНИЕ ИНТЕРФЕЙСА GRADIO
demo = gr.Interface(
# Функция для запуска
fn=analyze_sentiment,
# Поле ввода текста
inputs=gr.Textbox(
lines=5,
label='Введите текст...',
placeholder='Например, "Мне очень понравилась эта программа, она работает быстро и без ошибок"'
),
# Поле вывода результата
outputs=gr.Textbox(label='Результат анализа'),
# Заголовок и описание приложения
title=' Sentiment: Анализатор тональности русского текста',
description='Приложение использует модель на основе ruBERT с Hugging Face для определения тональности русского текста (позитивная, негативная или нейтральная).',
)
# ЗАПУСК ПРИЛОЖЕНИЯ
if __name__ == '__main__':
# Запускает локальный веб-сервер для отображения интерфейса
demo.launch()