import gradio as gr from transformers import pipeline # Modeli direkt yükle (cache otomatik iner) # NOT: Bu model İngilizce metinler için eğitilmiştir. Eğer Türkçe metinlerle çalışmak istiyorsanız, # 'turkish-ner' gibi Türkçe için finetune edilmiş bir model kullanmanız gerekmektedir. ner_pipeline = pipeline( "ner", model="akdeniz27/bert-base-turkish-cased-ner", aggregation_strategy="simple" ) def ner_texte_cevir(text): results = ner_pipeline(text) # gr.HighlightedText için çıktı formatını düzenle output_segments = [] last_idx = 0 # Metni ve algılanan varlıkları birleştirerek HighlightedText için uygun formatı oluştur for entity in results: # Varlık öncesindeki metin (etiketsiz) if entity['start'] > last_idx: output_segments.append((text[last_idx:entity['start']], None)) # Algılanan varlık ve etiketi output_segments.append((text[entity['start']:entity['end']], entity['entity_group'])) last_idx = entity['end'] # Son varlıktan sonra kalan metin (etiketsiz) if last_idx < len(text): output_segments.append((text[last_idx:], None)) # Eğer hiçbir varlık bulunamazsa, tüm metni etiketsiz olarak döndür if not output_segments and text: output_segments.append((text, None)) return output_segments iface = gr.Interface( fn=ner_texte_cevir, inputs=gr.Textbox(lines=5, placeholder="Metni buraya yapıştır..."), outputs=gr.HighlightedText(), title="Türkçe NER Uygulaması", # Başlıkta Türkçe dese de model İngilizce unutma :) description="İsim, kurum, yer tespit eder.", examples=[ ["Ahmet Yılmaz dün İstanbul Üniversitesi'nde konferans verdi."], ["Apple şirketi yeni iPhone'u tanıttı."] ] ) iface.launch(share=True)