Spaces:
Running
on
Zero
Running
on
Zero
| import gradio as gr | |
| from ner_logic import ner_pipe, get_wiki_summary, refine_labels_batch | |
| from ui_modules import create_ui_layout, format_entity_log | |
| def process_ner(text): | |
| yield "Analiz Başlatıldı...", [] | |
| final_results = [] | |
| misc_buffer = [] | |
| ents = ner_pipe(text) | |
| for ent in ents: | |
| w, l = ent['word'].strip(), ent['entity_group'] | |
| if l in ["PER", "ORG", "LOC"]: | |
| final_results.append({"Varlık": w, "İlk": l, "Nihai": l, "Kaynak": "Model"}) | |
| elif l == "MISC": | |
| wiki = get_wiki_summary(w) or "Bilgi yok." | |
| misc_buffer.append({"word": w, "wiki": wiki}) | |
| if misc_buffer: | |
| responses = refine_labels_batch(misc_buffer, text) | |
| logs = [] | |
| for item in misc_buffer: | |
| # Esnek isim eşleşmesi ile KeyError riskini azaltıyoruz | |
| res = next((r for r in responses if item['word'].lower() in r.get('varlik', '').lower()), {}) | |
| reasoning = res.get('reasoning', 'Reasoning oluşturulamadı.') | |
| new_label = res.get('karar', 'MISC') | |
| logs.append(format_entity_log(item['word'], item['wiki'], reasoning, new_label)) | |
| final_results.append({"Varlık": item['word'], "İlk": "MISC", "Nihai": new_label, "Kaynak": "RAG+LLM"}) | |
| yield "".join(logs), [[r["Varlık"], r["İlk"], r["Nihai"], r["Kaynak"]] for r in final_results] | |
| else: | |
| yield "Tamamlandı.", [[r["Varlık"], r["İlk"], r["Nihai"], r["Kaynak"]] for r in final_results] | |
| demo, inp, log, tbl, btn = create_ui_layout() | |
| with demo: | |
| btn.click(process_ner, inputs=inp, outputs=[log, tbl]) | |
| if __name__ == "__main__": | |
| # Hugging Face ortamında auth gerekebilir veya kaldırılabilir | |
| demo.launch() |