BERT (Bidirectional Encoder Representations) (BERT Doğal Dil Modeli)

BERT, Google'ın 2018'de yayınladığı, cümleyi iki yönlü okuyarak kelimenin bağlamını anlayan encoder tabanlı dil modelidir.

BERT (Bidirectional Encoder Representations from Transformers), Google'ın 2018'de açık kaynak olarak yayınladığı, metni soldan sağa ve sağdan sola aynı anda okuyarak her kelimenin bağlamını çözen Transformer tabanlı bir dil modelidir. GPT gibi üretken modeller bir sonraki kelimeyi tahmin ederken, BERT encoder-only mimarisiyle cümlenin tamamına bakar; bu yüzden metin sınıflandırma, varlık ismi tanıma (NER) ve soru cevaplama gibi **anlama** görevlerinde uzun süre standart model oldu. Modelin iki temel ön eğitim görevi vardır: **Masked Language Modeling (MLM)** ile token'ların yaklaşık %15'i maskelenir ve model bunları çift yönlü bağlamdan tahmin eder; **Next Sentence Prediction (NSP)** ile iki cümlenin ardışık olup olmadığı öğrenilir. Eğitim verisi BooksCorpus ve İngilizce Wikipedia'dan oluşan yaklaşık 3,3 milyar kelimedir. BERT-base 110 milyon, BERT-large 340 milyon parametre taşır; bağlam penceresi 512 token ile sınırlıdır. BERT'in en görünür etkisi arama motorlarında yaşandı. Google, Ekim 2019'da BERT'i arama sıralamasına entegre etti ve o dönemde İngilizce sorguların yaklaşık %10'unun anlaşılmasını iyileştirdiğini duyurdu; Aralık 2019'da model Türkçe dahil 70'ten fazla dile genişledi. "Brezilya'dan ABD'ye vize" gibi edatın anlamı değiştirdiği sorgularda arama niyeti ilk kez doğru okunmaya başladı. Bu, SEO'da anahtar kelime yoğunluğu yerine niyet odaklı içerik döneminin başlangıcı sayılır. 2026 itibarıyla BERT üretken sohbet modellerinin gölgesinde kalmış görünse de üretimde en çok çalıştırılan modellerden biri olmaya devam ediyor: Google aramada hâlâ sıralama sistemlerinin bir parçası, Hugging Face'te BERT türevleri (RoBERTa, DistilBERT, DeBERTa, 2024 çıkışlı ModernBERT) aylık yüz milyonlarca kez indiriliyor. Türkçe NLP'de dbmdz/bert-base-turkish-cased (BERTurk) duygu analizi ve NER projelerinin varsayılan başlangıç noktasıdır. Düşük maliyeti, birkaç yüz örnekle fine-tune edilebilmesi ve milisaniyelik çıkarım süresi, BERT'i sınıflandırma ve embedding işlerinde LLM'lere pratik bir alternatif olarak ayakta tutuyor.

İki Yönlü Okuma (Bidirectional) Neden Çığır Açtı?

Bir modeli sadece soldan sağa okutursanız sesteş kelimelerde takılır. "Banka doğru hızlıca..." cümlesinde banka bir finans kurumu mu, parktaki oturak mı belli değildir; cevap ancak devamında ("...yürüdüm ve oturdum") netleşir. BERT, self-attention mekanizmasıyla her kelime için cümlenin hem öncesine hem sonrasına aynı anda bakar. ELMo gibi önceki yaklaşımlar iki ayrı tek yönlü modeli birleştirirken, BERT tek bir derin ağda gerçek çift yönlülüğü MLM hilesiyle çözdü: kelimeyi maskele, iki taraftan tahmin ettir. 2018'de yayınlanan makale GLUE benchmark'ında o günün rekorlarını 11 görevde birden kırdı ve 130.000'den fazla akademik atıf alarak NLP tarihinin en çok atıf yapılan çalışmalarından biri oldu. Bu yaklaşım, Google aramanın bozuk ve devrik yazılmış sorguları bile bir insan gibi yorumlamasının temelini attı.

BERT Mimarisi: Sayılarla Model Aileleri

BERT-base

12 Transformer katmanı, 768 gizli boyut, 12 attention head, 110M parametre. Çoğu sınıflandırma görevi için yeterli standart boy.

BERT-large

24 katman, 1024 gizli boyut, 16 head, 340M parametre. SQuAD ve GLUE rekorlarını kıran büyük varyant.

distilbert DistilBERT

Bilgi damıtmayla %40 küçültülmüş, %60 daha hızlı; performansın yaklaşık %97'sini korur. Mobil ve düşük gecikmeli senaryoların tercihi.

berturk BERTurk (Türkçe BERT)

dbmdz/bert-base-turkish-cased; 35 GB'lık Türkçe corpus (OSCAR + Wikipedia) üzerinde eğitildi. Türkçe NER ve duygu analizinin fiili standardı.

modernbert ModernBERT

Aralık 2024'te yayınlanan modern encoder: 8192 token bağlam, FlashAttention, RoPE. Klasik BERT'in 512 token sınırını 16 kat aşar.

Ön Eğitim: MLM ve NSP Nasıl Çalışır?

BERT etiketsiz metinden iki görevle öğrenir. MLM (Masked Language Modeling): girdideki token'ların %15'i seçilir; bunların %80'i [MASK] ile değiştirilir, %10'u rastgele bir kelimeyle değiştirilir, %10'u olduğu gibi bırakılır. Model maskelenen kelimeyi iki yönlü bağlamdan tahmin eder — "Banka [MASK] kredisi" örneğinde sağdaki "kredisi" kelimesi de tahmine katılır. NSP (Next Sentence Prediction): modele iki cümle verilir; ikincinin birincinin gerçek devamı olup olmadığı sınıflandırılır. Eğitim, 3,3 milyar kelimelik BooksCorpus + Wikipedia derlemi üzerinde 16 TPU çipiyle yaklaşık 4 gün sürmüştür. Sonraki araştırmalar NSP'nin katkısını sorguladı: RoBERTa (2019) NSP'yi tamamen kaldırıp daha uzun ve daha büyük veriyle eğiterek BERT'i geçti; ALBERT ise NSP yerine cümle sırası tahmini (SOP) kullandı.

Google BERT Güncellemesi ve SEO'ya Etkisi

Google, 25 Ekim 2019'da BERT'i arama sıralamasına aldı ve bunu "son 5 yılın en büyük sıçraması" olarak tanımladı. İlk aşamada İngilizce sorguların ~%10'u etkilendi; Aralık 2019'da kapsam Türkçe dahil 70'ten fazla dile genişledi. Değişimin özü şuydu: "2019 brezilyalı abd'ye seyahat vize" gibi sorgularda "to/için" gibi işlev kelimelerinin yönü artık doğru okunuyor, sonuçlar niyetle eşleşiyordu. SEO açısından kritik gerçek: BERT için optimizasyon yapılamaz. Google'ın o dönemki sözcüsü Danny Sullivan'ın ifadesiyle tek tavsiye "kullanıcı için doğal yazmak"tır. Pratik karşılığı: soru kalıplı başlıklar, ilk cümlede net cevap, uzun kuyruklu sorgulara birebir karşılık gelen alt başlıklar. BERT ayrıca featured snippet seçiminde ve 2026'daki AI Overviews altyapısını besleyen pasaj anlama sistemlerinde de kullanılıyor; MUM ve Gemini tabanlı sistemler BERT'in yerini almadı, üzerine eklendi.

BERT'in Kullanım Alanları

  • check_circle Arama ve pasaj sıralama: Google arama sorgu anlama ve pasaj indeksleme; Bing de 2019'dan beri benzer Transformer modelleri kullanıyor.
  • check_circle Metin sınıflandırma ve duygu analizi: Binlerce müşteri e-postasının şikayet/öneri/iptal olarak otomatik ayrıştırılması; birkaç yüz etiketli örnekle fine-tune yeterli olabiliyor.
  • check_circle Varlık ismi tanıma (NER): Sözleşme ve haber metinlerinden kişi, kurum, tarih, tutar çıkarma; BERTurk ile Türkçe NER'de %92+ F1 skorları raporlanıyor.
  • check_circle Soru cevaplama: SQuAD tarzı görevlerde verilen paragraftan cevap aralığı bulma; BERT-large SQuAD 1.1'de insan performansını (F1 91,2) ilk geçen modellerdendi.
  • check_circle Embedding ve semantik arama: Sentence-BERT (SBERT) türevleri cümleleri vektöre çevirir; RAG sistemlerindeki retriever katmanlarının önemli bir kısmı hâlâ BERT ailesindendir.

BERT mi, GPT mi, Yoksa İkisi de mi? (2026 Perspektifi)

Doğru soru "hangisi daha iyi" değil, "hangi iş için hangisi" sorusudur. GPT, Gemini veya Claude gibi güncel decoder tabanlı modeller üretim (yazma, sohbet, kod) işlerinde açık ara öndedir; ancak tek bir sınıflandırma isteği için LLM API'sine gitmek hem pahalı hem yavaştır. Fine-tune edilmiş bir DistilBERT, CPU'da bile milisaniyeler içinde ve token başı maliyet olmadan sınıflandırma yapar; milyonlarca dokümanlık bir akışta fark, aylık binlerce dolara ulaşır. Bu yüzden 2026'da yaygın mimari hibrittir: BERT türevi bir model ucuz ön filtreleme, yönlendirme ve embedding üretir; karmaşık vakalar LLM'e devredilir. ModernBERT'in (2024) ve EuroBERT gibi çok dilli yeni encoder'ların çıkışı, "encoder öldü" tezinin aksine bu katmanın aktif biçimde geliştirildiğini gösteriyor.

code BERT'i on satırda çalıştırmak: Hugging Face ile ilk kullanım

Kurulum tek satır: pip install transformers torch. Maskeli kelime tahminini denemek için pipeline yeterlidir:

from transformers import pipeline nlp = pipeline("fill-mask", model="dbmdz/bert-base-turkish-cased") nlp("Ankara, Türkiye'nin en kalabalık ikinci [MASK].")

Çıktı, olasılık sırasına dizilmiş aday kelimeleri ve skorlarını döner. Sınıflandırma için AutoTokenizer ve AutoModelForSequenceClassification kullanılır; num_labels parametresi sınıf sayınızı belirler ve modelin üstüne rastgele başlatılmış bir sınıflandırma katmanı eklenir. Bu adımda konsolda çıkan "Some weights were not initialized" uyarısı normaldir, çünkü o katman henüz eğitilmemiştir. Uyarıyı görmezden gelip fine-tune adımına geçebilirsiniz.

Embedding üretmek isteyenler için sentence-transformers paketi daha kısa yoldur: model.encode(cumleler) çağrısı her cümle için 768 boyutlu bir vektör verir, vektörler kosinüs benzerliğiyle karşılaştırılır. RAG hattındaki retriever katmanı çoğunlukla tam da bu adımdır.

Modeller ilk çağrıda indirilip ~/.cache/huggingface altında saklanır. Kapalı ağda çalışacaksanız modeli önceden indirip HF_HOME değişkeniyle yolu gösterin, aksi halde uygulama açılışta ağ hatası verir.

build Fine-tune adımları ve kaynak ihtiyacı

  • check_circle Veri formatı: Etiketli veri iki sütuna iner: metin ve label. datasets kütüphanesiyle CSV yüklemek için load_dataset("csv", data_files="veri.csv") yeterlidir. Eğitim ve doğrulama ayrımını train_test_split(test_size=0.2) ile yapın, aynı cümlenin iki tarafta birden bulunmadığından emin olun.
  • check_circle Tokenizasyon: tokenizer(metin, truncation=True, max_length=128, padding="max_length") kalıbı kullanılır. Klasik BERT 512 token'ı aşamaz. Kısa yorumlarda 128, uzun belgelerde 256 veya 512 makul başlangıçtır; max_length'i yarıya indirmek dikkat katmanının maliyetini kabaca dörtte bire düşürür.
  • check_circle Hiperparametreler: BERT makalesinin önerdiği aralık hâlâ geçerli: öğrenme oranı 2e-5, 3e-5 veya 5e-5; batch 16 ya da 32; 2 ile 4 arası epoch. TrainingArguments içinde fp16=True eklemek modern GPU'larda süreyi belirgin kısaltır ve belleği rahatlatır.
  • check_circle Eğitim ve değerlendirme: Trainer sınıfı eğitim döngüsünü sizin yerinize kurar. compute_metrics fonksiyonuna sklearn'den f1_score bağlayıp her epoch sonunda ölçün. Sınıflar dengesizse accuracy yanıltır, macro F1'e bakın; azınlık sınıfın recall değerini ayrıca izleyin.
  • check_circle Donanım ve süre: bert-base ile batch 16 ve 128 token uzunluğunda eğitim yaklaşık 4-6 GB VRAM ister, ücretsiz Colab T4 bunu rahat kaldırır. Birkaç bin örneklik bir sınıflandırma kümesinde 3 epoch tipik olarak dakikalar sürer. bert-large aynı ayarlarda 12-16 GB bandına çıkar.
  • check_circle Kaydetme ve kullanım: trainer.save_model("model_dizini") ve tokenizer.save_pretrained("model_dizini") aynı klasöre yazılır. Sonrasında pipeline("text-classification", model="model_dizini") ile doğrudan kullanılır. Paylaşmak isterseniz push_to_hub ile Hugging Face hesabınıza yükleyebilirsiniz.

bug_report Fine-tune sırasında en sık çıkan hatalar

  • check_circle Token indices sequence length is longer than 512: Tokenizer çağrısına truncation=True ve max_length verilmemiştir. Uyarıyı görmezden gelirseniz model konumsal gömme sınırını aştığı için hata fırlatır. Gerçekten uzun belgelerle çalışıyorsanız metni parçalara bölün ya da 8192 token destekleyen ModernBERT tabanlı bir encoder'a geçin.
  • check_circle CUDA out of memory: Sırayla deneyin: per_device_train_batch_size değerini yarıya indirin, efektif batch'i korumak için gradient_accumulation_steps ekleyin, max_length'i kısaltın, fp16 veya bf16 açın. gradient_checkpointing=True belleği daha da düşürür ama eğitimi yavaşlatır.
  • check_circle unexpected keyword argument evaluation_strategy: transformers 4.41 sürümünden itibaren bu parametrenin adı eval_strategy oldu. İnternetteki eski eğitim betikleri bu tek satırda patlar. Ya parametre adını güncelleyin ya da requirements dosyasında sürümü sabitleyin.
  • check_circle Model hep aynı sınıfı tahmin ediyor: İki tipik nedeni var. Öğrenme oranı fazla yüksektir, 1e-3 gibi bir değer BERT'in ön eğitilmiş ağırlıklarını bozar; 2e-5 bandına inin. İkincisi sınıf dengesizliğidir, bu durumda sınıf ağırlıklı kayıp veya örnekleme dengelemesi gerekir.
  • check_circle Türkçe sonuçlar beklenenden kötü: bert-base-multilingual-cased Türkçe'de BERTurk'e göre geride kalır, ilk denemede model seçimini gözden geçirin. Uncased model seçmek de Türkçe'de özel isimleri silikleştirir; NER ve varlık odaklı görevlerde cased sürümü kullanın.
  • check_circle Çıkarım çok yavaş: Cümleleri tek tek değil toplu halde verin, tahmini torch.no_grad içinde çalıştırın, mümkünse DistilBERT'e geçin. CPU üzerinde ONNX Runtime'a dışa aktarıp dinamik kuantizasyon uygulamak bu üç adımla birlikte çoğu zaman birkaç kat hızlanma getirir.

Sık Sorulan Sorular

  • check_circle BERT nedir, ne işe yarar? BERT, Google'ın 2018'de yayınladığı, metni iki yönlü okuyarak bağlamı anlayan encoder tabanlı Transformer dil modelidir. Metin sınıflandırma, varlık tanıma, soru cevaplama ve arama sorgusu anlama görevlerinde kullanılır.
  • check_circle Google BERT algoritması SEO'yu nasıl etkiler? BERT, sorgudaki edat ve bağlam ilişkilerini doğru okuyarak niyet eşleşmesini iyileştirir. BERT'e özel optimizasyon yapılamaz; en etkili strateji, soruya ilk cümlede net cevap veren, doğal dille yazılmış içerik üretmektir.
  • check_circle BERT ile GPT arasındaki fark nedir? BERT encoder-only ve çift yönlüdür, anlama görevleri için optimizedir; GPT decoder-only ve soldan sağadır, metin üretimi için tasarlanmıştır. Sınıflandırma ve NER'de BERT ekonomik ve hızlıdır; yazı üretme ve sohbette GPT tarzı modeller üstündür.
  • check_circle BERT hâlâ kullanılıyor mu? (2026): Evet. Google aramada sıralama sistemlerinin parçası olmayı sürdürüyor; Hugging Face'te BERT türevleri en çok indirilen modeller arasında. RAG retriever'ları, moderasyon ve sınıflandırma hatlarında düşük maliyeti nedeniyle yoğun kullanımda.
  • check_circle Türkçe için hangi BERT modeli önerilir? Genel görevler için dbmdz/bert-base-turkish-cased (BERTurk), duygu analizi için savasy/bert-base-turkish-sentiment-cased, çok dilli projeler için xlm-roberta-base uygundur. Uzun belgeler gerekiyorsa ModernBERT tabanlı çok dilli encoder'lar değerlendirilebilir.
  • check_circle BERT'i fine-tune etmek için ne kadar veri gerekir? Basit sınıflandırma için birkaç yüz etiketli örnek çoğu zaman yeterlidir; 2-4 epoch eğitim tek GPU'da dakikalar sürer. Veri azsa DistilBERT, veri boysa RoBERTa veya DeBERTa daha iyi sonuç verir.
  • check_circle BERT nasıl kullanılır, hangi kütüphane gerekir? En kısa yol Hugging Face transformers kütüphanesidir. pip install transformers torch kurulumundan sonra pipeline("fill-mask", model="dbmdz/bert-base-turkish-cased") çağrısıyla modeli birkaç satırda deneyebilirsiniz. Sınıflandırma için AutoModelForSequenceClassification, cümle vektörleri için sentence-transformers kullanılır.
  • check_circle BERT fine-tune için hangi hiperparametreler kullanılmalı? Orijinal BERT makalesinin önerdiği aralık başlangıç için yeterlidir: öğrenme oranı 2e-5 ile 5e-5 arasında, batch 16 veya 32, epoch sayısı 2 ile 4 arasında. Daha yüksek öğrenme oranları ön eğitilmiş ağırlıkları bozar ve model tek sınıfa saplanır. fp16=True eklemek süreyi ve bellek kullanımını düşürür.
  • check_circle BERT'in 512 token sınırı nasıl aşılır? Klasik BERT'in konumsal gömmeleri 512 token için eğitildiğinden bu sınır modelin kendi mimarisinden gelir. Pratik çözümler: metni örtüşmeli parçalara bölüp parça skorlarını birleştirmek, yalnızca ilgili bölümü seçmek ya da 8192 token destekleyen ModernBERT tabanlı bir encoder'a geçmek. Tokenizer çağrısında truncation=True vermeyi unutmayın.
  • check_circle BERT fine-tune etmek için ücretsiz Colab yeterli mi? Evet, çoğu sınıflandırma işi için yeterli. bert-base ile batch 16 ve 128 token uzunluğunda eğitim yaklaşık 4-6 GB VRAM ister, Colab'ın T4 kartı 16 GB sunar. Birkaç bin örneklik veri kümesinde 3 epoch dakikalar sürer; bert-large kullanacaksanız batch'i düşürüp fp16 açmanız gerekir.