uyuma's picture
Update app.py
ac27301 verified
import gradio as gr
from transformers import pipeline
print("Model yükleniyor: winvoker/bert-base-turkish-sentiment-analysis")
# Daha dengeli sonuçlar verdiği ve nötr kategorisini daha iyi tespit ettiği bilinen bir model kullanıyoruz.
sentiment_pipeline = pipeline(
"sentiment-analysis",
model="winvoker/bert-base-turkish-sentiment-analysis"
)
print("Model başarıyla yüklendi.")
def analyze_sentiment(text):
"""
Verilen metnin duygu analizini yapar ve sonucu basit bir formatta döndürür.
"""
if not text or not isinstance(text, str) or len(text.strip()) == 0:
return {"label": "GEÇERSİZ GİRİŞ", "score": 0.0}
try:
result = sentiment_pipeline(text)[0]
# Bu modelin etiketleri: 'positive', 'negative', 'neutral'
# Kodun bu kısmı zaten bu etiketlerle uyumlu olduğu için değiştirmeye gerek yok.
label = result['label']
if label.lower() == 'positive':
simple_label = 'POZİTİF'
elif label.lower() == 'negative':
simple_label = 'NEGATİF'
else:
simple_label = 'NÖTR'
return {"label": simple_label, "score": round(result['score'], 4)}
except Exception as e:
print(f"Analiz sırasında hata: {e}")
return {"label": "ANALİZ HATASI", "score": 0.0}
# Gradio arayüzünü oluşturup API olarak sunuyoruz.
iface = gr.Interface(
fn=analyze_sentiment,
inputs=gr.Textbox(lines=3, placeholder="Analiz edilecek metni buraya yazın..."),
outputs="json",
title="Türkçe Duygu Analizi API",
description="Girilen metnin duygu skorunu (Pozitif, Negatif, Nötr) döndürür."
)
# Arayüzü ve API'yi başlatıyoruz.
iface.launch()