apak commited on
Commit
27b7ff0
·
verified ·
1 Parent(s): 753da88

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +13 -71
app.py CHANGED
@@ -3,95 +3,37 @@ 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
- # 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",
60
- "Nihai": new_label,
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
- )
 
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
  ents = ner_pipe(text)
 
11
  for ent in ents:
12
+ w, l = ent['word'].strip(), ent['entity_group']
 
 
 
13
  if l in ["PER", "ORG", "LOC"]:
14
+ final_results.append({"Varlık": w, "İlk": l, "Nihai": l, "Kaynak": "Model"})
 
 
 
 
 
 
15
  elif l == "MISC":
16
+ wiki = get_wiki_summary(w) or "Bilgi bulunamadı."
17
  misc_buffer.append({"word": w, "wiki": wiki})
18
 
 
19
  if misc_buffer:
 
20
  responses = refine_labels_batch(misc_buffer, text)
21
+ logs = []
 
22
  for item in misc_buffer:
23
+ res = next((r for r in responses if item['word'].lower() in r.get('varlik','').lower()), {})
24
+ reasoning = res.get('reasoning', 'Reasoning oluşturulamadı.')
 
 
 
 
 
 
 
 
25
  new_label = res.get('karar', 'MISC')
26
 
27
+ logs.append(format_entity_log(item['word'], item['wiki'], reasoning, new_label))
28
+ final_results.append({"Varlık": item['word'], "İlk": "MISC", "Nihai": new_label, "Kaynak": "RAG+LLM"})
 
29
 
30
+ yield "".join(logs), [[r["Varlık"], r["İlk"], r["Nihai"], r["Kaynak"]] for r in final_results]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
  else:
32
+ yield "Analiz tamamlandı.", [[r["Varlık"], r["İlk"], r["Nihai"], r["Kaynak"]] for r in final_results]
 
 
 
 
 
33
 
 
34
  demo, inp, log, tbl, btn = create_ui_layout()
 
35
  with demo:
36
+ btn.click(process_ner, inputs=inp, outputs=[log, tbl])
 
 
 
 
 
 
37
 
38
  if __name__ == "__main__":
39
+ demo.launch(auth=("admin", "1113"))