# 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()