Spaces:
Sleeping
Sleeping
| # app.py | |
| import gradio as gr | |
| from transformers import pipeline | |
| import json | |
| import os | |
| def analyze_lyrics(): | |
| try: | |
| # Инициализируем пайплайн анализа тональности | |
| classifier = pipeline("sentiment-analysis", model="blanchefort/rubert-base-cased-sentiment") | |
| # Путь к текстовому файлу с текстом песни | |
| # Убедитесь, что файл 'test.txt' находится в том же каталоге, что и этот скрипт | |
| file_path = os.path.join(os.getcwd(), "test.txt") | |
| # Отладочная информация | |
| print(f"Текущая рабочая директория: {os.getcwd()}") | |
| print(f"Содержимое директории: {os.listdir()}") | |
| print(f"Пытаемся прочитать файл: {file_path}") | |
| print(f"Файл существует: {os.path.exists(file_path)}") | |
| if not os.path.exists(file_path): | |
| return "Ошибка: Файл 'test.txt' не найден в текущей директории." | |
| # Читаем содержимое файла | |
| with open(file_path, 'r', encoding='utf-8') as file: | |
| text = file.read() | |
| print(f"Количество прочитанных символов: {len(text)}") | |
| # Разбиваем текст на строки и анализируем каждую строку | |
| results = [] | |
| lines = [line.strip() for line in text.split('\n') if line.strip()] | |
| for line in lines: | |
| prediction = classifier(line) | |
| results.append({ | |
| 'text': line, | |
| 'emotion': prediction[0]['label'], | |
| 'score': round(float(prediction[0]['score']), 3) | |
| }) | |
| # Форматируем результаты в JSON | |
| formatted_results = json.dumps(results, ensure_ascii=False, indent=2) | |
| return formatted_results | |
| except Exception as e: | |
| # Возвращаем сообщение об ошибке | |
| return f"Произошла ошибка: {str(e)}" | |
| # Создаем интерфейс Gradio | |
| demo = gr.Interface( | |
| fn=analyze_lyrics, | |
| inputs=None, # Нет входных данных, так как мы читаем из файла | |
| outputs="text", | |
| title="Анализ эмоциональной окраски текста песни", | |
| description="Нажмите кнопку для анализа эмоций в файле 'test.txt'" | |
| ) | |
| # Запускаем Gradio приложение | |
| demo.launch() |