apak commited on
Commit
69865a9
·
verified ·
1 Parent(s): eedcecc

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +59 -14
app.py CHANGED
@@ -3,36 +3,57 @@ from ner_logic import ner_pipe, get_wiki_summary, refine_labels_batch
3
  from ui_modules import create_ui_layout, format_entity_log
4
 
5
  def process_ner(text):
6
- yield "🎬 <b>İşlem Başlatıldı...</b>", []
 
 
7
  final_results = []
8
  misc_buffer = []
9
 
10
- # 1. NER ve Wiki Toplama
 
11
  ents = ner_pipe(text)
 
12
  for ent in ents:
13
  w = ent['word'].replace(" ", " ").strip()
14
  l = ent['entity_group']
 
 
15
  if l in ["PER", "ORG", "LOC"]:
16
- final_results.append({"Varlık": w, "İlk": l, "Nihai": l, "Kaynak": "Model"})
 
 
 
 
 
 
17
  elif l == "MISC":
18
  wiki = get_wiki_summary(w) or "Wikipedia'da bu terim için net bir tanım bulunamadı."
19
  misc_buffer.append({"word": w, "wiki": wiki})
20
 
21
- # 2. Toplu Analiz ve Görselleştirme
22
  if misc_buffer:
 
23
  responses = refine_labels_batch(misc_buffer, text)
24
 
25
  cumulative_logs = []
26
  for item in misc_buffer:
27
- # LLM sonucunu eşleştir
28
- res = next((r for r in responses if r.get('varlik','').lower() in item['word'].lower()), {})
 
 
 
 
 
29
 
30
- reasoning = res.get('reasoning', 'Reasoning süreci oluşturulamadı.')
 
31
  new_label = res.get('karar', 'MISC')
32
 
33
- # İstediğin alt alta gösterim formatı
34
- cumulative_logs.append(format_entity_log(item['word'], item['wiki'], reasoning, new_label))
 
35
 
 
36
  final_results.append({
37
  "Varlık": item['word'],
38
  "İlk": "MISC",
@@ -40,13 +61,37 @@ def process_ner(text):
40
  "Kaynak": "RAG+LLM"
41
  })
42
 
43
- # Her bir varlık bittiğinde anlık güncelle
44
- yield "".join(cumulative_logs), [[r["Varlık"], r["İlk"], f"<b>{r['Nihai']}</b>", r["Kaynak"]] for r in final_results]
 
 
 
 
 
 
 
 
 
 
 
 
45
 
46
- # Arayüz Bağlantısı
47
  demo, inp, log, tbl, btn = create_ui_layout()
 
48
  with demo:
49
- btn.click(process_ner, inputs=inp, outputs=[log, tbl])
 
 
 
 
 
 
50
 
51
  if __name__ == "__main__":
52
- demo.launch(auth=("admin", "1113"))
 
 
 
 
 
 
3
  from ui_modules import create_ui_layout, format_entity_log
4
 
5
  def process_ner(text):
6
+ # Başlangıç durumu
7
+ yield "🎬 <b>Analiz Başlatıldı...</b>", []
8
+
9
  final_results = []
10
  misc_buffer = []
11
 
12
+ # 1. Aşama: Temel NER İşlemi ve Wikipedia Veri Toplama
13
+ # ner_pipe içindeki 'simple' aggregation sayesinde temizlenmiş kelimeler gelir
14
  ents = ner_pipe(text)
15
+
16
  for ent in ents:
17
  w = ent['word'].replace(" ", " ").strip()
18
  l = ent['entity_group']
19
+
20
+ # PER, ORG, LOC etiketleri doğrudan kabul edilir
21
  if l in ["PER", "ORG", "LOC"]:
22
+ final_results.append({
23
+ "Varlık": w,
24
+ "İlk": l,
25
+ "Nihai": l,
26
+ "Kaynak": "Model"
27
+ })
28
+ # MISC etiketleri RAG + LLM sürecine sokulur
29
  elif l == "MISC":
30
  wiki = get_wiki_summary(w) or "Wikipedia'da bu terim için net bir tanım bulunamadı."
31
  misc_buffer.append({"word": w, "wiki": wiki})
32
 
33
+ # 2. Aşama: MISC Varlıklar için Toplu LLM Muhakemesi (CoT)
34
  if misc_buffer:
35
+ # ner_logic içindeki iyileştirilmiş fonksiyonu çağırıyoruz
36
  responses = refine_labels_batch(misc_buffer, text)
37
 
38
  cumulative_logs = []
39
  for item in misc_buffer:
40
+ # LLM'den gelen yanıtlar arasından ilgili varlığı eşleştir
41
+ # (Küçük harf ve içerik kontrolü ile daha esnek eşleşme)
42
+ res = next(
43
+ (r for r in responses if r.get('varlik', '').lower() in item['word'].lower() or
44
+ item['word'].lower() in r.get('varlik', '').lower()),
45
+ {}
46
+ )
47
 
48
+ # KeyError almamak için .get() ile güvenli erişim sağlıyoruz
49
+ reasoning = res.get('reasoning', '⚠️ Model bu varlık için geçerli bir reasoning adımı oluşturamadı.')
50
  new_label = res.get('karar', 'MISC')
51
 
52
+ # ui_modules içindeki format_entity_log ile HTML logunu oluştur
53
+ log_html = format_entity_log(item['word'], item['wiki'], reasoning, new_label)
54
+ cumulative_logs.append(log_html)
55
 
56
+ # Tablo verisine ekle
57
  final_results.append({
58
  "Varlık": item['word'],
59
  "İlk": "MISC",
 
61
  "Kaynak": "RAG+LLM"
62
  })
63
 
64
+ # Her bir MISC varlığı işlendikten sonra arayüzü anlık güncelle (yield)
65
+ # Nihai etiketleri görsel olarak vurgulamak için HTML kullanıyoruz
66
+ display_table = [
67
+ [r["Varlık"], r["İlk"], f"<b style='color: #2c3e50;'>{r['Nihai']}</b>", r["Kaynak"]]
68
+ for r in final_results
69
+ ]
70
+ yield "".join(cumulative_logs), display_table
71
+ else:
72
+ # Eğer hiç MISC varlık yoksa sadece temel sonuçları tabloya bas
73
+ display_table = [
74
+ [r["Varlık"], r["İlk"], f"<b>{r['Nihai']}</b>", r["Kaynak"]]
75
+ for r in final_results
76
+ ]
77
+ yield "✅ <b>İşlem tamamlandı. MISC varlık tespit edilmedi.</b>", display_table
78
 
79
+ # Arayüz Bileşenlerini ui_modules üzerinden oluştur
80
  demo, inp, log, tbl, btn = create_ui_layout()
81
+
82
  with demo:
83
+ # Analiz Et butonuna tıklandığında tetiklenecek fonksiyon ve girdi-çıktılar
84
+ btn.click(
85
+ fn=process_ner,
86
+ inputs=inp,
87
+ outputs=[log, tbl],
88
+ queue=True # Uzun süren işlemler için kuyruğa al
89
+ )
90
 
91
  if __name__ == "__main__":
92
+ # Güvenlik ve erişim için admin şifresi ile başlat
93
+ demo.launch(
94
+ auth=("admin", "1113"),
95
+ server_name="0.0.0.0",
96
+ show_error=True # Hataları arayüzde göster
97
+ )