apak commited on
Commit
e5196f4
·
verified ·
1 Parent(s): eed7a19

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +23 -4
app.py CHANGED
@@ -184,6 +184,8 @@ def advanced_ner_pipeline(text, target_labels, progress=gr.Progress()):
184
  log_messages = list(_initial_logs)
185
 
186
  try:
 
 
187
  initial_results = ner_pipe(text)
188
  except Exception as e:
189
  log_messages.append(f"❌ Hata: Temel NER modelinde sorun oluştu: {e}")
@@ -202,6 +204,8 @@ def advanced_ner_pipeline(text, target_labels, progress=gr.Progress()):
202
  for i, entity in enumerate(initial_results):
203
  word = entity['word']
204
  label = entity['entity_group']
 
 
205
 
206
  # Gradio ilerleme çubuğunu güncelle
207
  current_progress = (i + 1) / total_entities
@@ -211,15 +215,17 @@ def advanced_ner_pipeline(text, target_labels, progress=gr.Progress()):
211
  result_obj = {
212
  "entity": word,
213
  "initial_label": label,
 
214
  "final_label": label,
215
  "source": "Model",
216
  "reasoning": "" # CoT gerekçesi için yeni alan
217
  }
218
 
219
  # Eğer etiket MISC ise RAG sürecini başlat
 
220
  if label == "MISC" and gen_pipe is not None:
221
  standardized_word = word.title()
222
- log_messages.append(f" ⚠️ MISC tespit edildi: '{word}'. Wikipedia'ya soruluyor...")
223
  yield log_messages, None # Log mesajını gönder (2 değer)
224
 
225
  wiki_context = get_wiki_summary(standardized_word)
@@ -243,7 +249,7 @@ def advanced_ner_pipeline(text, target_labels, progress=gr.Progress()):
243
  log_messages.append(" ❌ Wiki'de bilgi bulunamadı, MISC olarak kalıyor.")
244
  yield log_messages, None # Log mesajını gönder (2 değer)
245
  else:
246
- log_messages.append(f" ✅ {word} için etiket: {label}")
247
  yield log_messages, None # Log mesajını gönder (2 değer)
248
 
249
  final_results.append(result_obj)
@@ -276,7 +282,7 @@ custom_label_definitions = {
276
  "SOFTWARE": "Bilgisayar programları, mobil uygulamalar, yapay zeka sistemleri, işletim sistemleri.",
277
  "ORG_SUB": "Şirket birimleri, üniversite fakülteleri, dernek şubeleri gibi büyük bir kurumun alt birimleri.",
278
  "LANGUAGE": "Dillerin adı (Örn: İngilizce, Arapça).",
279
- "TITLE": "Kişinin unvanı, rütbesi veya pozisyonu (Örn: Profesör, General, Başkan).",
280
  "CYBER": "URL, E-posta adresi, IP adresi, hashtag veya kullanıcı adı.",
281
  # MISC: Kalan her şey
282
  "MISC": "Diğer adlandırılmış varlıklar (LLM tarafından rafine edilemeyen veya uymayanlar)."
@@ -368,6 +374,7 @@ def process_ner_request(text, progress=gr.Progress()):
368
  current_results_html += " <tr>\n"
369
  current_results_html += " <th>VARLIK</th>\n"
370
  current_results_html += " <th>İLK ETİKET</th>\n"
 
371
  current_results_html += " <th>RAG SONRASI ETİKETİ (GEREKÇE)</th>\n"
372
  current_results_html += " <th>KAYNAK</th>\n"
373
  current_results_html += " </tr>\n"
@@ -401,10 +408,22 @@ def process_ner_request(text, progress=gr.Progress()):
401
  else:
402
  reasoning_tooltip = item['final_label']
403
 
 
 
 
 
 
 
 
 
 
 
 
404
 
405
  current_results_html += " <tr>\n"
406
  current_results_html += f" <td>{item['entity']}</td>\n"
407
  current_results_html += f" <td>{item['initial_label']}</td>\n"
 
408
  current_results_html += f" <td style='{final_label_style}'>{reasoning_tooltip}</td>\n"
409
  current_results_html += f" <td>{item['source']}</td>\n"
410
  current_results_html += " </tr>\n"
@@ -420,7 +439,7 @@ iface = gr.Interface(
420
  # Çıktı olarak 2 ayrı HTML bileşeni döndürülmeli.
421
  outputs=[gr.HTML(label="İşlem Logları"), gr.HTML(label="Zenginleştirilmiş NER Sonuçları")],
422
  title="Gelişmiş İnce Taneli NER (23 Etiket - RAG/LLM Destekli)",
423
- description="Metindeki varlıkları tanır ve MISC etiketlileri, 23 ince taneli kategoriye dönüştürmek için Wikipedia (RAG) ve LLM (Qwen2.5-1.5B) kullanılmaktadır. Etiket seti, akademik çalışmalardan esinlenerek 23 özel kategoriye genişletilmiştir.",
424
  examples=[
425
  # Yeni etiketleri test eden örnekler eklendi
426
  ["Milli Eğitim Bakanlığı'na bağlı Lise Birimleri, 2024 Türkiye Kupası etkinliğine katılacak ve %15 indirim uygulayacak."],
 
184
  log_messages = list(_initial_logs)
185
 
186
  try:
187
+ # Not: aggregation_strategy="simple" kullanıldığı için, her birleştirilmiş varlığın
188
+ # tahmin skoru, en yüksek skorlu alt parçaya ait olacaktır.
189
  initial_results = ner_pipe(text)
190
  except Exception as e:
191
  log_messages.append(f"❌ Hata: Temel NER modelinde sorun oluştu: {e}")
 
204
  for i, entity in enumerate(initial_results):
205
  word = entity['word']
206
  label = entity['entity_group']
207
+ # YENİ: Tahmin skorunu yakala ve 4 ondalık basamağa yuvarla
208
+ score = entity['score']
209
 
210
  # Gradio ilerleme çubuğunu güncelle
211
  current_progress = (i + 1) / total_entities
 
215
  result_obj = {
216
  "entity": word,
217
  "initial_label": label,
218
+ "initial_score": score, # YENİ: Skoru ekle
219
  "final_label": label,
220
  "source": "Model",
221
  "reasoning": "" # CoT gerekçesi için yeni alan
222
  }
223
 
224
  # Eğer etiket MISC ise RAG sürecini başlat
225
+ # Ayrıca, skor ne kadar düşükse LLM'e olan ihtiyaç o kadar artar.
226
  if label == "MISC" and gen_pipe is not None:
227
  standardized_word = word.title()
228
+ log_messages.append(f" ⚠️ MISC tespit edildi: '{word}' (Skor: {score:.2f}). Wikipedia'ya soruluyor...")
229
  yield log_messages, None # Log mesajını gönder (2 değer)
230
 
231
  wiki_context = get_wiki_summary(standardized_word)
 
249
  log_messages.append(" ❌ Wiki'de bilgi bulunamadı, MISC olarak kalıyor.")
250
  yield log_messages, None # Log mesajını gönder (2 değer)
251
  else:
252
+ log_messages.append(f" ✅ {word} için etiket: {label} (Skor: {score:.2f})")
253
  yield log_messages, None # Log mesajını gönder (2 değer)
254
 
255
  final_results.append(result_obj)
 
282
  "SOFTWARE": "Bilgisayar programları, mobil uygulamalar, yapay zeka sistemleri, işletim sistemleri.",
283
  "ORG_SUB": "Şirket birimleri, üniversite fakülteleri, dernek şubeleri gibi büyük bir kurumun alt birimleri.",
284
  "LANGUAGE": "Dillerin adı (Örn: İngilizce, Arapça).",
285
+ "TITLE": "Kişinin unvanı, rütbesini veya pozisyonunu (Örn: Profesör, General, Başkan).",
286
  "CYBER": "URL, E-posta adresi, IP adresi, hashtag veya kullanıcı adı.",
287
  # MISC: Kalan her şey
288
  "MISC": "Diğer adlandırılmış varlıklar (LLM tarafından rafine edilemeyen veya uymayanlar)."
 
374
  current_results_html += " <tr>\n"
375
  current_results_html += " <th>VARLIK</th>\n"
376
  current_results_html += " <th>İLK ETİKET</th>\n"
377
+ current_results_html += " <th>İLK TAHMİN SKORU</th>\n" # YENİ SÜTUN
378
  current_results_html += " <th>RAG SONRASI ETİKETİ (GEREKÇE)</th>\n"
379
  current_results_html += " <th>KAYNAK</th>\n"
380
  current_results_html += " </tr>\n"
 
408
  else:
409
  reasoning_tooltip = item['final_label']
410
 
411
+ # Skoru formatla
412
+ score_formatted = f"{item['initial_score'] * 100:.2f}%"
413
+
414
+ # Skorun rengini güven seviyesine göre ayarlama (Yüksek skor=Yeşil, Düşük skor=Turuncu/Kırmızı)
415
+ score_color = ""
416
+ if item['initial_score'] > 0.95:
417
+ score_color = "color: #10b981;" # Yeşil
418
+ elif item['initial_score'] > 0.8:
419
+ score_color = "color: #f59e0b;" # Sarı/Turuncu
420
+ else:
421
+ score_color = "color: #ef4444;" # Kırmızı
422
 
423
  current_results_html += " <tr>\n"
424
  current_results_html += f" <td>{item['entity']}</td>\n"
425
  current_results_html += f" <td>{item['initial_label']}</td>\n"
426
+ current_results_html += f" <td style='{score_color} font-weight: bold;'>{score_formatted}</td>\n" # YENİ SKOR SÜTUNU
427
  current_results_html += f" <td style='{final_label_style}'>{reasoning_tooltip}</td>\n"
428
  current_results_html += f" <td>{item['source']}</td>\n"
429
  current_results_html += " </tr>\n"
 
439
  # Çıktı olarak 2 ayrı HTML bileşeni döndürülmeli.
440
  outputs=[gr.HTML(label="İşlem Logları"), gr.HTML(label="Zenginleştirilmiş NER Sonuçları")],
441
  title="Gelişmiş İnce Taneli NER (23 Etiket - RAG/LLM Destekli)",
442
+ description="Metindeki varlıkları tanır ve MISC etiketlileri, 23 ince taneli kategoriye dönüştürmek için Wikipedia (RAG) ve LLM (Qwen2.5-1.5B) kullanılmaktadır. İlk modelin tahmin skorları da artık tabloda yer almaktadır.",
443
  examples=[
444
  # Yeni etiketleri test eden örnekler eklendi
445
  ["Milli Eğitim Bakanlığı'na bağlı Lise Birimleri, 2024 Türkiye Kupası etkinliğine katılacak ve %15 indirim uygulayacak."],