Sorun: Verinin çoğu düz metin
Bir hastane notu, bir müşteri şikâyeti, bir sözleşme. Okuyan bir insan için içindeki ilaç adı, doz, tarih ya da kişi apaçık. Bilgisayar için ise sadece uzun bir yazı. Bunu tabloya çevirmenin klasik yolları kurallar, regex ya da özel olarak eğitilmiş dil işleme modelleri. Hepsi zahmetli ve metnin biçimi değişince bozuluyor.
Dil modeline “bu metinden şu alanları JSON olarak çıkar” demek daha kolay. Ama iki dert var: Çıktının biçimi kayabiliyor ve modelin metinde olmayan bir şeyi uydurup uydurmadığını anlamak zor.
LangExtract ne yapıyor?
LangExtract, Google çalışanlarının geliştirdiği açık kaynak (Apache 2.0) bir Python kütüphanesi. Temmuz 2025’te Google Developers Blog’da duyuruldu. README’si kendisinin resmî olarak desteklenen bir Google ürünü olmadığını belirtiyor. Nasıl çalıştığı:
- Örnekle tarif: Ne çıkarmak istediğini bir açıklama ve birkaç örnekle anlatıyorsun. Model eğitmek ya da ince ayar yapmak yok. Örnekler çıktının şemasını belirliyor. Gemini gibi modellerde bu şemaya uyulması model tarafında zorlanıyor.
- Kaynağa bağlama (source grounding): Çıkarılan her değer, kaynak metindeki başlangıç ve bitiş karakter konumuyla geliyor. Model “bana güven” demiyor, “şu cümleden aldım” diyor. Metinde karşılığı bulunamayan değerlerde bu konum boş kalıyor. Bu da modelin bilgiyi metnin dışından eklediğinin işareti.
- Uzun belgeler: Metni parçalara bölüp paralel işliyor, istersen birden fazla tur geçiyor. Google’a göre bu, tek seferde koca belgeye bakınca kaçan bilgileri yakalamaya yardım ediyor.
- Görsel kontrol: Sonuç JSONL olarak kaydediliyor. Ayrıca tek dosyalık etkileşimli bir HTML sayfası üretiliyor: Bir değere tıklayınca metindeki yeri işaretleniyor.
- Model seçimi: Gemini, OpenAI ya da Ollama ile yerelde çalışan modeller. Başka sağlayıcılar eklentiyle bağlanabiliyor.
Google’ın örnekleri Romeo ve Juliet’ten karakter ve duygu çıkarmak, ilaç ve doz bilgisini bulmak ve radyoloji raporlarını düzenli bulgulara çeviren RadExtract demosu. Sağlık örneklerinin sadece gösterim amaçlı olduğu, tıbbi tavsiye olmadığı açıkça yazıyor.
Videoda
Better Stack, bir metin dosyasındaki klinik notları Gemini ile JSON’a ve HTML görünümüne çeviriyor. Videoya göre artıları kurulumun kolaylığı, doğrulanabilir çıktı ve tek bir modele bağlı olmamak. Eksileri de sayılıyor: Ölçek büyüdükçe model maliyeti artıyor, çok gürültülü metinlerde çıkarım eksik kalabiliyor, Python bilmek gerekiyor ve çok düşük gecikme isteyen gerçek zamanlı işler için uygun değil.
Ne zaman mantıklı?
Sonucun bir insan tarafından denetleneceği işlerde: sözleşmeler, destek kayıtları, finans ya da sağlık belgeleri. Biçimi sabit, kısa metinlerde regex hâlâ daha hızlı ve bedava. Çıkardığın veriyi sonra bir aramada kullanacaksan RAG yazımız bir sonraki adımı anlatıyor.
Bir sınırı unutma: Kaynağa bağlama, değerin metinde geçtiğini gösterir, doğru yere konduğunu değil. Bir doz metinde gerçekten geçiyor olabilir ama yanlış ilaca bağlanmış olabilir. Kontrolü kolaylaştırıyor, gereksiz kılmıyor.
Sonra ne oldu?
Video, v1.1.1 sürümünden sonra çıktı. Mart 2026’daki v1.2.0, parça sınırlarını aşan göndermeleri çözmeye başladı: Bir parçadaki “o”, önceki parçadaki kişiye bağlanabiliyor. Nisan’daki v1.3.0 bir güvenlik değişikliği getirdi: Girdi olarak bir URL verdiğinde kütüphane o adresi artık kendiliğinden indirmiyor, fetch_urls=True ile açıkça izin vermen gerekiyor. Sebep SSRF riski: Dışarıdan gelen bir adres, sunucunun iç ağındaki bir servise istek attırabiliyordu. Mayıs’ta OpenAI’ın toplu işlem (batch) API’si desteklendi ve varsayılan model Gemini 3.5 Flash oldu. Son sürüm 8 Ekim 2026’da çıkan v1.7.1. Proje GitHub’da yaklaşık 39 bin yıldıza ulaştı.
Düşün
- Elle tabloya geçirdiğin hangi metinler var? Örnekle tarif etmek ne kadar sürerdi?
- Modelin çıkardığı bir değeri bugün nasıl doğruluyorsun?
Videoyu izle
Kaynaklar (5, İngilizce)
- Better Stack: This Google Tool Turns Messy Text Into Clean Data (video) (yeni sekmede açılır)
- GitHub: google/langextract (yeni sekmede açılır)
- Google Developers Blog: Introducing LangExtract (yeni sekmede açılır)
- GitHub: langextract releases (yeni sekmede açılır)
- GitHub: langextract PR #449, make URL fetching opt-in (yeni sekmede açılır)
Kendi cümlelerimizle yazılmış bir özettir, çeviri değildir. Tüm kaynaklar yukarıda.