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