samet214 commited on
Commit
b7de5fe
·
verified ·
1 Parent(s): eebaeed

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +33 -10
app.py CHANGED
@@ -2,29 +2,52 @@ import gradio as gr
2
  from transformers import pipeline
3
 
4
  # Duygu analizi modelini yükle
 
5
  model_name = "savasy/bert-base-turkish-sentiment-cased"
6
  sentiment_pipeline = pipeline("sentiment-analysis", model=model_name)
7
 
8
  def analyze_sentiment(text):
 
 
 
 
 
9
  result = sentiment_pipeline(text)[0]
10
  label = result['label']
11
  score = result['score']
12
 
13
- if label == "LABEL_1" and score > 0.55:
14
- return "pozitif"
15
- elif label == "LABEL_0" and score > 0.55:
16
- return "negatif"
 
 
 
 
 
 
 
 
 
17
  else:
18
- return "nötr"
 
 
19
 
20
  # Gradio arayüzünü ve API'yi oluştur
21
  iface = gr.Interface(
22
  fn=analyze_sentiment,
23
- inputs=gr.Textbox(lines=2, placeholder="Analiz edilecek metni buraya girin..."),
24
- outputs="text",
25
- title="Türkçe Duygu Analizi API",
26
- description="Girilen cümlenin duygu durumunu (pozitif, nötr, negatif) analiz eder."
 
 
 
 
 
 
27
  )
28
 
29
  # Arayüzü başlat
30
- iface.launch()
 
2
  from transformers import pipeline
3
 
4
  # Duygu analizi modelini yükle
5
+ # Bu model normalde sadece pozitif (LABEL_1) ve negatif (LABEL_0) döndürür.
6
  model_name = "savasy/bert-base-turkish-sentiment-cased"
7
  sentiment_pipeline = pipeline("sentiment-analysis", model=model_name)
8
 
9
  def analyze_sentiment(text):
10
+ """
11
+ Verilen metnin duygu analizini yapar.
12
+ Modelin çıktısını işleyerek pozitif, negatif veya nötr olarak sınıflandırır.
13
+ """
14
+ # Pipeline'ı çalıştırarak sonucu al
15
  result = sentiment_pipeline(text)[0]
16
  label = result['label']
17
  score = result['score']
18
 
19
+ # Nötr durumu için bir eşik değeri (threshold) belirliyoruz.
20
+ # Modelin tahmin skoru bu eşik değerinin altındaysa,
21
+ # cümlenin ne tam pozitif ne de tam negatif olduğuna karar verip "nötr" olarak etiketliyoruz.
22
+ # Bu değeri ihtiyacınıza göre ayarlayabilirsiniz. Örneğin 0.90 gibi daha yüksek bir değer,
23
+ # sadece modelin çok emin olduğu durumları pozitif/negatif olarak etiketler.
24
+ threshold = 0.85
25
+
26
+ if label == "LABEL_1" and score > threshold:
27
+ # Eğer etiket pozitifse ve skor eşik değerinden yüksekse "pozitif" döndür.
28
+ return "Pozitif"
29
+ elif label == "LABEL_0" and score > threshold:
30
+ # Eğer etiket negatifse ve skor eşik değerinden yüksekse "negatif" döndür.
31
+ return "Negatif"
32
  else:
33
+ # Yukarıdaki koşullar sağlanmıyorsa (yani skor eşik değerinden düşükse),
34
+ # modelin kararsız olduğunu varsayarak "nötr" döndür.
35
+ return "Nötr"
36
 
37
  # Gradio arayüzünü ve API'yi oluştur
38
  iface = gr.Interface(
39
  fn=analyze_sentiment,
40
+ inputs=gr.Textbox(lines=3, placeholder="Analiz edilecek metni buraya girin..."),
41
+ outputs=gr.Textbox(label="Sonuç"),
42
+ title="Türkçe Duygu Analizi (3 Durumlu)",
43
+ description="Girilen cümlenin duygu durumunu (Pozitif, Nötr, Negatif) analiz eder. Modelin güven skoru belirli bir eşiğin altındaysa 'Nötr' olarak kabul edilir.",
44
+ examples=[
45
+ ["Bu filmi çok beğendim, harikaydı!"],
46
+ ["Yemekler fena değildi ama servis yavaştı."],
47
+ ["Bugün hava ne sıcak ne de soğuk."],
48
+ ["Ürünün kalitesinden hiç memnun kalmadım."],
49
+ ]
50
  )
51
 
52
  # Arayüzü başlat
53
+ iface.launch()