Spaces:
Sleeping
Sleeping
| # ИМПОРТ НЕОБХОДИМЫХ БИБЛИОТЕК | |
| 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() |