File size: 1,854 Bytes
3c4d97b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c48c0c6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
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)