samet214 commited on
Commit
963ba83
·
verified ·
1 Parent(s): 9f06cef

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +16 -25
app.py CHANGED
@@ -1,49 +1,40 @@
1
  import gradio as gr
2
  from transformers import pipeline
3
 
4
- # Duygu analizi için 3 sınıflı (pozitif, negatif, nötr) bir model yükle
5
- # Bu model, Türkçe dahil birçok dilde çalışır ve doğrudan 3 etiket döndürür.
6
- model_name = "lxyuan/distilbert-base-multilingual-cased-sentiments-student"
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 ve bir güven eşiği kullanarak 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
- # Düşük güven skorlu pozitif/negatif tahminleri nötr olarak kabul etmek için bir eşik değeri.
20
- # Model 'positive' veya 'negative' dediğinde skor bu değerin altındaysa, sonucu 'Nötr' yapacağız.
21
- confidence_threshold = 0.75
 
 
 
 
 
 
22
 
23
- # Modelin İngilizce etiketlerini Türkçe'ye çevirelim
24
- final_label = "Bilinmiyor"
25
-
26
- if label == 'neutral':
27
- # Model zaten Nötr dediyse, bunu kabul ediyoruz.
28
- final_label = 'Nötr'
29
- elif (label == 'positive' or label == 'negative') and score < confidence_threshold:
30
- # Model pozitif veya negatif demiş ama skoru düşükse, bunu Nötr olarak kabul ediyoruz.
31
- final_label = 'Nötr'
32
- elif label == 'positive':
33
- final_label = 'Pozitif'
34
- elif label == 'negative':
35
- final_label = 'Negatif'
36
-
37
- # Sonucu, nihai etiket ve modelin orijinal tahminiyle birlikte daha anlaşılır bir formatta döndür
38
- return f"Sonuç: {final_label} (Modelin Ham Tahmini: {label.capitalize()}, Skor: {score:.2f})"
39
 
40
  # Gradio arayüzünü ve API'yi oluştur
41
  iface = gr.Interface(
42
  fn=analyze_sentiment,
43
  inputs=gr.Textbox(lines=3, placeholder="Analiz edilecek metni buraya girin..."),
44
  outputs=gr.Textbox(label="Analiz Sonucu"),
45
- title="Türkçe Duygu Analizi (Güven Eşikli Model)",
46
- description="Girilen cümlenin duygu durumunu analiz eder. Modelin pozitif/negatif tahminlerindeki güven skoru belirli bir eşiğin altındaysa, sonuç 'Nötr' olarak kabul edilir.",
47
  examples=[
48
  ["Bu filmi çok beğendim, harikaydı!"],
49
  ["Yemekler fena değildi ama servis yavaştı."],
 
1
  import gradio as gr
2
  from transformers import pipeline
3
 
4
+ # Özellikle Türkçe için eğitilmiş ve 3 sınıfı (pozitif, negatif, nötr) destekleyen bir model yükle
5
+ model_name = "nlptr/distilbert-base-turkish-cased-sentiment"
 
6
  sentiment_pipeline = pipeline("sentiment-analysis", model=model_name)
7
 
8
  def analyze_sentiment(text):
9
  """
10
  Verilen metnin duygu analizini yapar.
11
+ Doğrudan 3 sınıf tahmini yapabilen Türkçe bir modelin çıktısını işler.
12
  """
13
  # Pipeline'ı çalıştırarak sonucu al
14
  result = sentiment_pipeline(text)[0]
15
  label = result['label']
16
  score = result['score']
17
 
18
+ # Modelin etiketlerini Türkçe'ye çevirelim
19
+ # Bu modelin etiketleri: LABEL_0 -> negative, LABEL_1 -> neutral, LABEL_2 -> positive
20
+ turkish_label = "Bilinmiyor"
21
+ if label == 'LABEL_2':
22
+ turkish_label = 'Pozitif'
23
+ elif label == 'LABEL_1':
24
+ turkish_label = 'Nötr'
25
+ elif label == 'LABEL_0':
26
+ turkish_label = 'Negatif'
27
 
28
+ # Sonucu etiket ve güven skoruyla birlikte daha anlaşılır bir formatta döndür
29
+ return f"Sonuç: {turkish_label} (Güven Skoru: {score:.2f})"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
30
 
31
  # Gradio arayüzünü ve API'yi oluştur
32
  iface = gr.Interface(
33
  fn=analyze_sentiment,
34
  inputs=gr.Textbox(lines=3, placeholder="Analiz edilecek metni buraya girin..."),
35
  outputs=gr.Textbox(label="Analiz Sonucu"),
36
+ title="Türkçe Duygu Analizi (Türkçe Model)",
37
+ description="Girilen cümlenin duygu durumunu analiz eder. Bu versiyon, doğrudan 3 sınıf (Pozitif, Nötr, Negatif) tahmini yapabilen, Türkçe'ye özel bir model kullanır.",
38
  examples=[
39
  ["Bu filmi çok beğendim, harikaydı!"],
40
  ["Yemekler fena değildi ama servis yavaştı."],