Named Entity Recognition (Adlandırılmış Varlık Tanıma)

Metindeki kişi, kurum, yer ve tarih gibi adlandırılmış varlıkları otomatik olarak tespit edip sınıflandıran temel bir Doğal Dil İşleme tekniği.

Named Entity Recognition (NER), kısaca Adlandırılmış Varlık Tanıma, bir metindeki önceden tanımlanmış kategorilere ait varlık ifadelerini otomatik olarak tespit eden ve sınıflandıran temel bir Doğal Dil İşleme görevidir. NER, kişi adlarını (PER), coğrafi konumları (LOC), kuruluş isimlerini (ORG), tarih ve zaman ifadelerini (DATE/TIME) ile para birimlerini (MONEY) ham metin içinden çıkarır. Bu teknoloji, büyük hacimli yapılandırılmamış metni anlamlı ve işlenebilir yapıya dönüştürmek için kritik bir adım işlevi görür. NER'in tarihsel gelişimine bakıldığında ilk sistemlerin 1996 MUC-6 konferansında tanımlanan kurallara dayalı yaklaşımları benimsediği görülür. Bu erken sistemler elle yazılmış düzenli ifadeler ve sözcük listeleri kullanıyordu; İngilizce için kabul edilebilir sonuçlar verse de yeni alanlara uyarlamak son derece maliyetliydi. 2000'lerin başında Koşullu Rastgele Alanlar (CRF) ve Maksimum Entropi gibi istatistiksel modeller kurallı sistemlerin yerini almaya başladı; bu modeller etiketlenmiş eğitim verisinden bağlamsal örüntüler öğreniyor ve genelleme yapabiliyordu. BERT'in 2018'de yayımlanmasıyla NER alanında çığır açıldı. BERT ve sonraki dil modelleri, hem sol hem de sağ bağlamı aynı anda işleyen çift yönlü dikkat mekanizmaları aracılığıyla varlık sınırlarını çok daha doğru tespit edebildi. Günümüzde CoNLL-2003 gibi standart kıyaslama veri kümelerinde F1 puanları yüzde doksan beşi aşmaktadır. BIO etiketleme şeması, varlık sınırlarını açık biçimde kodlaması sayesinde model eğitiminde en yaygın kullanılan standarttır. Türkçe NER için BERTurk ve mBERT modellerini temel alan sistemler geliştirilmiş; tıp, hukuk ve finans gibi alana özel veri kümeleri oluşturulmuştur. Türkçe'nin çekimli ve bitişken yapısı, varlık sınırlarının belirlenmesini İngilizce'ye kıyasla daha güç kılar; bu nedenle alt sözcük tokenizasyon stratejileri kritik önem taşır. NER, bilgi grafiği oluşturma, soru yanıtlama, metin özetleme ve duygu analizi gibi ileri düzey NLP görevlerinin vazgeçilmez bir ön adımıdır.

NER Nedir ve Tarihsel Gelişimi

Named Entity Recognition, metindeki özel adları tespit eden köklü bir NLP görevidir. İlk sistemler 1996 MUC-6 konferansında kural tabanlı yöntemlerle ortaya çıktı. 2000'lerde CRF modelleri baskın hale gelirken, 2018'de BERT'in yayımlanmasıyla transformer mimarisi NER performansını büyük ölçüde artırdı. Bugün NER, bilgi çıkarma zincirinin ilk ve kritik halkası olmaya devam etmektedir.

Temel Varlık Türleri ve BIO Etiketleme

  • check_circle PER (Kişi): "Atatürk", "Elon Musk" gibi gerçek ya da kurgu kişi adları.
  • check_circle ORG (Kuruluş): "TÜBİTAK", "OpenAI" gibi şirket, üniversite ve devlet kurumları.
  • check_circle LOC (Yer): "İstanbul", "Karadeniz" gibi coğrafi yer ve bölge adları.
  • check_circle DATE / TIME (Tarih-Saat): "3 Mayıs 2025", "saat 14:00" gibi zamansal ifadeler.
  • check_circle BIO Şeması: Her token B (Beginning), I (Inside) veya O (Outside) olarak etiketlenir; "Boğaziçi Üniversitesi" → B-ORG I-ORG.

Transformer Modellerle Modern NER

BERT ve türevleri NER'i token sınıflandırma (token classification) görevi olarak uygular. Her token, BIO şemasına göre etiketlenir; modelin son katmanına bağlı bir çıkış katmanı kategori olasılıklarını üretir. Güncel SOTA modeller genel alanlarda %95+ F1 skoru elde etmektedir. LLM'ler de NER görevine girmeye başlasa da; üretim ortamlarında hız ve pozisyon tutarlılığı açısından BIO-encoder modeller hâlâ tercih edilmektedir.

Türkçe NER: BERTurk ve Dil Zorlukları

  • check_circle BERTurk: Stefan Schweter tarafından 35 GB Türkçe metinle eğitilmiş model; NER görevinde ~%97 doğruluk.
  • check_circle Eklemeli Yapı Sorunu: "Ankara'daki" gibi eklemeli sözcükler alt-kelime tokenizasyonla parçalanarak varlık sınırlarını bozabilir.
  • check_circle BERTurk v2 / BERT5urk: 2025'te FineWeb2'nin Türkçe alt kümesiyle ön eğitilmiş yeni nesil modeller devreye girdi.
  • check_circle WikiANN Veri Seti: CoNLL formatında Türkçe NER annotasyonları sunan açık kaynaklı temel referans veri seti.
  • check_circle Sağlık Alanı NER: 2025'te Türkçe radyoloji raporlarında derin öğrenme temelli NER uygulaması DIR Journal'da yayımlandı.

Uygulama Alanları

  • check_circle Haber ve Medya: Metinden kişi, kurum ve yer çıkararak Knowledge Graph zenginleştirme ve içerik etiketleme.
  • check_circle SEO ve İçerik Anlama: Arama motorları NER kullanarak sorguları varlık bazında eşleştirir ve Google Knowledge Graph'ı besler.
  • check_circle Hukuk ve Finans: Sözleşmelerdeki taraf adları, şirket isimleri ve tarihler gibi kritik bilgilerin otomatik çıkarımı.
  • check_circle Sağlık: Hasta-ilaç-hastalık üçlüsünün tıbbi metinlerden çıkarılması; elektronik sağlık kayıt sistemleriyle entegrasyon.
  • check_circle Soru-Cevap Sistemleri: NER, soru içindeki varlıkları tespit ederek cevap adaylarını daraltmada anahtar rol oynar.

terminal Python ile Türkçe NER: 5 satırlık örnek

Türkçe bir metinden kişi, kurum ve yer çıkarmak için model eğitmeniz gerekmez. Hugging Face transformers kütüphanesi işi tek bir pipeline çağrısına indirir. Önce kurulum: pip install transformers torch

Sonra beş satır:

from transformers import pipeline

ner = pipeline("token-classification", model="savasy/bert-base-turkish-ner-cased", aggregation_strategy="simple")

print(ner("Boğaziçi Üniversitesi rektörü 3 Mayıs 2025 tarihinde İstanbul'da açıklama yaptı."))

Çıktı, her varlık için entity_group (PER, ORG, LOC gibi), score, word, start ve end alanlarını taşıyan sözlüklerden oluşan bir listedir. start ve end karakter konumudur; metni işaretlemek, kesmek veya arayüzde renklendirmek için doğrudan kullanılabilir.

aggregation_strategy="simple" parametresi B- ve I- etiketli alt token'ları tek varlıkta birleştirir. Bu parametreyi atlarsanız "Boğaziçi" ve "##Üniversitesi" ayrı satırlar olarak gelir ve birleştirme işini siz yaparsınız.

İlk çalıştırmada model indirilir. BERT base boyutundaki bu modeller yaklaşık 400 MB yer kaplar ve ~/.cache/huggingface altına yazılır; sonraki çalıştırmalar diskten okur. CPU üzerinde kısa cümleler için 50-150 ms, GPU üzerinde 10 ms altı tipik gecikme değerleridir. spaCy tarafında hazır bir Türkçe NER modeli bulunmadığı için Türkçe metinlerde BERT tabanlı modeller pratikte ilk seçenek.

model_training Kendi NER modelinizi eğitmek: 5 adım

  • check_circle Veriyi etiketleyin: doccano ve Label Studio açık kaynaklı etiketleme araçlarıdır; çıktıyı token başına bir etiket düşen BIO (CoNLL) formatına çevirin. Kendi alanınızda başlangıç için birkaç bin etiketli cümle makul bir taban verir, on binli sayılara çıkıldıkça F1 belirgin biçimde yükselir.
  • check_circle Etiketleri alt token'larla hizalayın: Tokenizer'ı is_split_into_words=True ile çağırdıktan sonra word_ids() çıktısını kullanarak her alt token'ın hangi kelimeye ait olduğunu bulun. Kelimenin ilk parçası dışındaki parçalara -100 etiketi verin ki kayıp hesabına girmesinler. Bu adım atlandığında eğitim hata vermez, sadece sessizce bozulur.
  • check_circle Modeli seçip eğitin: AutoModelForTokenClassification.from_pretrained ile dbmdz/bert-base-turkish-cased gibi bir Türkçe gövde yükleyin ve num_labels değerini BIO etiket sayınıza eşitleyin. Tipik başlangıç ayarı: öğrenme oranı 3e-5 ila 5e-5, batch 16, 3-5 epoch. Tek bir 16 GB GPU bu iş için fazlasıyla yeterlidir.
  • check_circle seqeval ile ölçün: Token doğruluğu yanıltıcıdır: etiketlerin büyük çoğunluğu O olduğu için hiçbir varlık bulamayan bir model bile yüksek doğruluk gösterir. Varlık düzeyinde precision, recall ve F1 için seqeval kullanın, tam eşleşme ile kısmi eşleşmeyi ayrı raporlayın.
  • check_circle Hataları türüne göre ayırın: Türkçede en sık görülen üç hata: eklemeli sözcüklerde sınır kayması (Ankara'daki, TÜBİTAK'ın), kurum ile yer karışması (Galatasaray hem ORG hem LOC olabilir) ve eğitim setinde az geçen varlıklar. Her birinin çözümü farklıdır; toplam F1'e bakarak hangisini düzelteceğinizi anlayamazsınız.

payments NER araçları ücretsiz mi? Maliyet karşılaştırması

  • check_circle Kendi sunucunuzda açık model (ücretsiz): transformers kütüphanesi ve Türkçe NER modellerinin ağırlıkları açık lisanslıdır; ödediğiniz tek kalem donanımdır. 110M parametreli bir NER modeli 8 GB RAM'li bir CPU sunucusunda çalışır, sınırsız istek atarsınız, metin dışarı çıkmadığı için KVKK tarafında da işiniz kolaylaşır.
  • check_circle spaCy (ücretsiz, Türkçe modeli yok): MIT lisanslı ve CPU üzerinde çok hızlıdır, ancak resmi bir Türkçe NER pipeline'ı yayımlanmadı. Türkçe için ya kendi modelinizi eğitip spaCy'ye bağlarsınız ya da doğrudan transformers tarafında kalırsınız.
  • check_circle Bulut NER API'leri: Google Cloud Natural Language, AWS Comprehend ve Azure AI Language varlık çıkarımını istek ya da karakter birimi üzerinden ücretlendirir ve aylık birkaç bin birimlik ücretsiz katman sunar. İki noktayı sözleşme öncesi doğrulayın: güncel birim fiyatı ve Türkçenin o özellikte desteklenip desteklenmediği. Varlık çıkarımının desteklediği dil listesi, aynı servisin çeviri veya duygu analizi listesinden dar olabiliyor.
  • check_circle LLM ile NER: GPT, Claude veya Gemini sınıfı modeller örneksiz varlık çıkarabilir ve şemayı prompt ile değiştirebilirsiniz. Karşılığında token başına ödersiniz, gecikme yüz milisaniyelerden saniyelere çıkar ve karakter konumu (start/end) güvenilir gelmez. Tek seferlik arşiv temizliği için uygun, saniyede yüzlerce istek alan üretim servisi için pahalı kalır.
  • check_circle Hangisini seçmeli: Hacim düşük ve dil İngilizceyse bulut API'si en hızlı başlangıç. Türkçe metin, özel alan etiketleri veya yüksek hacim varsa açık bir modeli kendiniz çalıştırmak hem ucuz hem de kontrol edilebilir olur. Karar için basit bir eşik: aylık maliyet bir sanal sunucunun kirasını aşıyorsa self-host tarafına geçin.

Sık Sorulan Sorular

  • check_circle NER ile POS etiketleme arasındaki fark nedir? POS (Part-of-Speech) her sözcüğün dilbilgisel türünü (isim, fiil, sıfat) belirlerken, NER belirli varlık kategorilerini (kişi, yer, kurum) tespit eder; amaçları ve eğitim verileri farklıdır.
  • check_circle Zero-shot NER mümkün mü? GPT-4 gibi büyük dil modelleri örneksiz (zero-shot) NER yapabilir; ancak pozisyon tutarlılığı gerektiren üretim sistemlerinde BIO-encoder modeller daha güvenilirdir.
  • check_circle Türkçe için hangi veri seti kullanılır? WikiANN, CoNLL formatında Türkçe NER annotasyonları sunar; Mukayese benchmark da NER dahil Türkçe NLP görevlerini karşılaştırmalı değerlendirir.
  • check_circle NER çıktısı nasıl kullanılır? Varlık listesi doğrudan arama indeksine, bilgi tabanına veya downstream görevlere (ilişki çıkarma, olay tespiti) girdi olarak verilir.
  • check_circle Nested NER nedir? Bir varlık ifadesinin başka bir varlık içinde yer almasıdır; örneğin 'Türkiye Büyük Millet Meclisi'nde 'Türkiye' de ayrıca LOC varlığıdır. Çok katmanlı modeller bu durumu ele alır.
  • check_circle Türkçe NER nasıl yapılır? En hızlı yol Hugging Face pipeline'ıdır: pip install transformers torch kurulumundan sonra savasy/bert-base-turkish-ner-cased gibi Türkçe bir NER modelini token-classification pipeline'ına verirsiniz ve üç satırda kişi, kurum, yer etiketleri alırsınız. Hukuk, sağlık veya finans gibi alan diliniz varsa aynı modeli kendi etiketli cümlelerinizle ince ayar yapmanız gerekir.
  • check_circle NER için ücretsiz bir API var mı? Sınırsız ve tamamen ücretsiz bir bulut NER API'si yok; büyük sağlayıcıların aylık birkaç bin birimlik ücretsiz katmanları var, sonrası kullanım başına faturalanır. Maliyetsiz ve sınırsız kullanım istiyorsanız açık lisanslı bir modeli kendi sunucunuzda çalıştırmak tek yol, 110M parametreli bir NER modeli GPU olmadan da yeterince hızlı çalışır.
  • check_circle spaCy ile BERT tabanlı NER arasındaki fark nedir? spaCy'nin CNN tabanlı pipeline'ları CPU üzerinde saniyede binlerce cümle işler ve kurulumu kolaydır, ancak doğrulukta transformer modellerin gerisinde kalır. BERT tabanlı modeller genel alanlarda %95 üzerinde F1 verir, karşılığında daha fazla bellek ve tercihen GPU ister. Türkçede spaCy'nin hazır NER modeli olmadığı için seçim çoğu zaman kendiliğinden BERT tarafına kayar.
  • check_circle NER modelinin doğruluğu nasıl ölçülür? Varlık düzeyinde precision, recall ve F1 ile ölçülür. Token doğruluğu kullanmayın: etiketlerin çoğunluğu O olduğu için hiçbir varlık bulamayan model bile yüksek skor gösterir. seqeval kütüphanesi BIO etiketlerini varlıklara toplayıp doğru metrikleri üretir; sınır hatalarını görmek için tam eşleşme ve kısmi eşleşme skorlarını ayrı ayrı raporlayın.