Neden Bir Çeviriye İhtiyaç Var?
Yapay zekanın "dili anladığını" söylediğimizde aslında ufak bir yalan söyleriz. Bir dil modeli ne harfleri ne kelimeleri ne de cümleleri bizim anladığımız anlamda görür. Onun dünyasında her şey sayıdır. Tıpkı bir hesap makinesinin yalnızca rakamlarla iş görmesi gibi, modern yapay zeka sistemlerinin içinde dönen tek şey de uçsuz bucaksız sayı dizileridir. Demek ki ortada çözülmesi gereken temel bir problem var: insanın yazdığı bir metni, makinenin işleyebileceği sayılara nasıl çeviririz?
Bu çeviri kulağa mekanik gelse de işin asıl zorluğu mekanik kısımda değil. Bir kelimeyi rastgele bir sayıya eşlemek kolaydır; sözlükteki her kelimeye bir numara verir, işi bitirirsiniz. Ama bu yöntem anlamı tamamen çöpe atar. "Kral" kelimesine 4172, "kraliçe" kelimesine 9038 numarasını verseniz, bu iki sayı arasında o iki kavramın akrabalığına dair tek bir iz bile kalmaz. Asıl mesele, çeviriyi öyle bir yapmaktır ki anlam da metinle birlikte yolculuk etsin.
Bu yazıda söz konusu çevirinin üç temel taşını adım adım kuracağız: önce metni parçalara ayıran tokenizasyonu, ardından her parçaya anlam yükleyen embedding'leri, en sonunda da bu anlamların içinde yaşadığı vektör uzayını ele alacağız. Amacımız, modern yapay zekanın kalbindeki bu sessiz mekanizmayı hiç matematik geçmişi gerektirmeden anlaşılır kılmak.
Tokenizasyon: Metni Lokmalara Bölmek
Çevirinin ilk adımı, metni yönetilebilir parçalara bölmektir. Bu parçalara token denir. Bir token çoğu zaman tam bir kelime değildir; bazen bir kelimenin parçası, bazen bir ek, bazen de yalnızca birkaç harftir. Modeli besleyen sistem, gelen metni bu token'lara ayırır ve her birine sözlüğündeki sıra numarasını verir. Belki de en sade benzetme yemektir: bir cümleyi olduğu gibi yutamazsınız, önce ısırıp lokmalara ayırırsınız. Tokenizasyon da modelin metni sindirilebilir lokmalara böldüğü adımdır.
Peki neden tam kelimeler yerine bu tuhaf alt-parçalar kullanılıyor? Çünkü dünyadaki tüm kelimeleri tek bir sözlüğe sığdırmak imkânsızdır. Yeni kelimeler, yazım hataları, isimler ve teknik terimler sonsuza kadar üretilebilir. Bunun yerine modeller, sık geçen parçalardan oluşan sabit boyutlu bir kelime dağarcığı kullanır. "Kitaplıklarımızdan" gibi uzun bir kelime, model tarafından "kitap" ve onu izleyen ekler gibi tanıdık parçalara bölünebilir. Böylece daha önce hiç görmediği bir kelimeyi bile bildiği parçalardan yeniden kurabilir; tıpkı tanımadığınız bir kelimeyi hecelerine ayırarak okuyabilmeniz gibi.
Bu bölme işi masum görünür ama sonuçları derindir. Bir metnin kaç token'a bölündüğü doğrudan maliyeti, hızı ve modelin tek seferde göz önünde tutabileceği bağlamın uzunluğunu belirler; çünkü modeller metni token sayısıyla ölçer. Üstelik token sınırları her dilde aynı verimlilikte düşmez. İngilizce için tasarlanmış birçok tokenizer, Türkçe gibi sondan eklemeli dillerde kelimeleri anlamla ilgisi olmayan noktalardan parçalar; bu da aynı şeyi söylemek için daha fazla token harcanması demektir. Yani tokenizasyon, çoğu kişinin sandığının aksine teknik bir ayrıntı değil, ürün kalitesini sessizce belirleyen temel bir tasarım kararıdır.
Embedding: Bir Token'a Anlam Yüklemek
Token'ları sıra numaralarına çevirdik, ama biraz önce gördüğümüz gibi bu numaralar anlamsızdır; "4172" sayısı "kral" hakkında hiçbir şey söylemez. İşte embedding tam burada devreye girer. Embedding (Türkçesiyle "gömme"), her token'ı tek bir sayı yerine bir sayı listesiyle, yani bir vektörle temsil etmektir. Örneğin "kral" kelimesi artık tek başına 4172 değil, [0.21, -0.83, 0.05, ...] gibi yüzlerce, hatta binlerce sayıdan oluşan uzun bir liste hâline gelir. Bu listedeki her sayı, kelimenin bir özelliğine dair minik bir ipucu taşır.
Buradaki kilit nokta şudur: bu sayılar elle atanmaz. Model, milyarlarca cümleyi okurken bu vektörleri kendisi öğrenir. Bir kelimenin hangi kelimelerle yan yana geçtiğini, hangi bağlamlarda kullanıldığını gözlemleye gözlemleye, ona öyle bir sayı listesi atar ki benzer bağlamlarda görünen kelimeler benzer listelere sahip olur. Dilbilimde sevilen bir söz vardır: "Bir kelimeyi, birlikte gezdiği arkadaşlarından tanırsınız." Embedding'ler tam olarak bu sezgiyi sayıya döker; bir kelimenin anlamı, onunla birlikte göründüğü kelimelerden damıtılır.
Bunu basit bir benzetmeyle düşünelim. Diyelim ki her kelimeyi birkaç eksende puanlıyoruz: ne kadar "canlı", ne kadar "kraliyetle ilgili", ne kadar "erkeksi mi dişil mi". "Kral" yüksek kraliyet, yüksek erkek alır; "kraliçe" yüksek kraliyet, yüksek dişil; "muz" ise her üçünden de düşük puan alır. Gerçek embedding'lerde bu eksenler yüzlercedir ve hiçbiri bizim koyduğumuz kadar temiz etiketli değildir; ama fikir aynıdır. Her kelime, anlamını oluşturan özelliklerin bir koordinat listesine dönüşür.
Vektör Uzayı: Bir Anlam Haritası
Her kelimeyi bir sayı listesine, yani koordinatlara çevirdiğimize göre artık her kelimeyi bir noktaya benzetebiliriz; tıpkı bir haritadaki bir şehrin enlem ve boylamla işaretlenmesi gibi. İki sayıyla iki boyutlu bir harita, üç sayıyla üç boyutlu bir uzay kurabiliriz. Embedding'ler yüzlerce sayı içerdiğinden, kelimelerin yaşadığı yer yüzlerce boyutlu bir uzaydır. Bunu gözümüzde canlandıramayız, ama mantık tıpatıp aynıdır: her kelime, bu devasa uzayda kendine ait bir konuma sahip bir noktadır. İşte bu uzaya vektör uzayı denir.
Bu haritanın güzelliği, üzerindeki konumların rastgele olmamasıdır. Embedding'ler iyi öğrenildiğinde anlamca yakın kelimeler haritada da birbirine yakın düşer. "Kral", "kraliçe", "taht" ve "saray" bir mahallede toplanırken; "muz", "elma" ve "çilek" bambaşka bir mahallede kümelenir. Anlamın kendisi fiziksel bir yakınlığa dönüşmüştür. Coğrafi bir haritada birbirine yakın şehirler çoğu zaman benzer iklimi paylaşır; bu anlam haritasında da birbirine yakın noktalar benzer anlamlar taşır.
İşin en şaşırtıcı yanı, bu uzaydaki yönlerin bile anlam taşıyabilmesidir. Klasik örnek şudur: "kral" vektöründen "erkek" yönünü çıkarıp "kadın" yönünü eklediğinizde, vardığınız nokta şaşırtıcı biçimde "kraliçe" noktasının yakınına düşer. Yani uzayda belli bir hareket, kabaca "erkeği dişile çevirme" anlamına denk gelir. Bu temiz örnek her durumda mükemmel işlemese de, kayda değer bir gerçeği gösterir: model anlamı yalnızca konumlarda değil, konumlar arasındaki ilişkilerde de kodlar. Anlam, haritanın hem noktalarında hem de doğrultularında yaşar.
Anlamsal Benzerlik: İki Anlamın Arasındaki Açı
Kelimeler bir haritada noktalara dönüştüğüne göre, artık çok güçlü bir soru sorabiliriz: iki kelime ne kadar benzer? Bunu ölçmek için iki noktanın ne kadar "aynı yöne baktığına" bakarız. En yaygın yöntem kosinüs benzerliğidir. İsmi korkutucu gelse de fikri sadedir: her vektörü, uzayın merkezinden o noktaya uzanan bir ok gibi düşünün. İki ok aynı yöne işaret ediyorsa, temsil ettikleri anlamlar da benzerdir. Oklar arasındaki açı küçüldükçe benzerlik artar.
Kosinüs benzerliği tam olarak bu açıyı bir sayıya çevirir. İki ok birebir aynı yöne bakıyorsa benzerlik 1'e yakın olur; tamamen ilgisiz, yani dik açıyla duruyorlarsa 0'a; zıt yönlere bakıyorlarsa -1'e yaklaşır. Önemli bir incelik şu: kosinüs benzerliği okların uzunluğunu değil yalnızca yönünü dikkate alır. Yani bir kavram metinde çok sık geçtiği için "daha uzun" bir vektöre sahip olsa bile benzerlik kararı bundan etkilenmez; yalnızca anlamın yönü konuşur.
Bunun neden bu kadar değerli olduğunu bir örnekle görelim. "Otomobil" ile "araba" yazılış olarak bambaşkadır; ortak tek bir harf dizisi bile paylaşmazlar. Klasik bir metin araması bu ikisini eşleştiremez. Ama vektör uzayında neredeyse üst üste düşerler, çünkü hep aynı bağlamlarda geçerler. Kosinüs benzerliği bu yakınlığı yüksek bir skorla yakalar. İşte makinelerin kelimeleri değil anlamları karşılaştırabilmesinin sırrı buradadır: benzerlik artık harflerin değil, anlamların ölçüsüdür.
Cümleler ve Belgeler: Tek Kelimeden Bütün Metne
Şimdiye kadar hep tek kelimelerden konuştuk, ama gerçek dünyada sorular, cümleler ve sayfalarca belgeyle uğraşırız. İyi haber şu: aynı fikir ölçeklenir. Modern modeller yalnızca kelimeleri değil, koca bir cümleyi ya da paragrafı da tek bir vektöre, yani anlam haritasındaki tek bir noktaya sıkıştırabilir. Bu vektör, metnin tüm anlamının bir özeti gibidir. "İş sözleşmesi nasıl feshedilir?" sorusu da, sayfalarca süren bir mevzuat metni de sonunda aynı uzayda birer noktaya dönüşür.
Bu sıkıştırma, kelimelerinkinden daha incelikli bir iştir. Bir cümlenin anlamı içindeki kelimelerin sadece toplamı değildir; sıraları, hangi kelimenin hangisini nitelediği ve bağlam da işin içine girer. "Köpek adamı ısırdı" ile "Adam köpeği ısırdı" aynı kelimeleri içerir ama bambaşka şeyler anlatır. Bu yüzden cümle embedding'i üreten modeller, kelimeler arasındaki ilişkileri de hesaba katarak tek bir bütünsel temsil çıkarır. Sonuç yine bir vektördür, ama artık bir cümlenin ya da paragrafın anlamını taşır.
Bu yetenek, yapay zekanın en kullanışlı uygulamalarından birinin kapısını açar: anlamsal arama. Bir kullanıcının sorusunu bir vektöre çevirirsiniz; ardından elinizdeki binlerce belgenin vektörleri arasından soruya en yakın yöne bakanları, yani kosinüs benzerliği en yüksek olanları getirirsiniz. Kullanıcı, sorudaki kelimelerin birebir geçtiği belgeleri değil, sorunun anlamına en yakın belgeleri alır. Anahtar kelime eşleştirmesinin atladığı, yani farklı sözcüklerle ama aynı anlamı anlatan belgeler de böylece yakalanır.
Hukuk Gibi Gerçek Bir Alanda Bu Ne İşe Yarar?
Bu kavramlar soyut görünebilir, ama somut bir alanda hayata değdiklerinde değerleri ortaya çıkar. Türk hukuku tam da böyle bir alandır. Bir avukatın aradığı, çoğu zaman belli bir kelimenin geçtiği belge değil, belli bir hukuki durumu konu alan kararlardır. Kullanıcı "kira sözleşmesinin haklı nedenle feshi" diye arattığında, bu tam ifadeyi içermese bile aynı hukuki meseleyi tartışan kararların gelmesini ister. Anlamsal benzerlik, kelimelerin ötesine geçip meselenin özünü yakaladığı için bunu mümkün kılar.
EcoFluxion'da geliştirdiğimiz hukuk teknolojisi ürünü İçtiHub tam olarak bu mekanizmanın üzerine kuruludur. Milyonlarca karar ve binlerce sayfa mevzuat, embedding'ler aracılığıyla bir anlam haritasına yerleştirilir. Bir kullanıcı soru sorduğunda, sorusu da aynı haritaya bir nokta olarak düşer ve sistem o noktaya anlamca en yakın metinleri saniyeler içinde getirir. Klasik anahtar kelime aramasının kaçırdığı, yani farklı terimlerle ifade edilmiş ama aynı hukuki sonuca işaret eden kararlar da böylece görünür hâle gelir.
Tam bu noktada Türkçenin kendine özgü zorlukları da işin içine girer. Sistemin "taşınmaz", "taşınmazın" ve "taşınmazlardan" gibi biçimlerin aynı kavrama ait olduğunu tanıması; tokenizasyonun Türkçenin yapısına uygun yapılması; embedding'lerin Türkçe hukuk diliyle anlamlı çalışması gerekir. Yani bu yazıda anlattığımız üç temel taş, İçtiHub'ın altında her gün üzerine kafa yorduğumuz somut mühendislik kararlarına dönüşür. Doğru token, anlamlı embedding ve sağlam bir benzerlik ölçüsü olmadan, hukukta güvenilir bir anlamsal arama kurulamaz.
Toparlayalım: Sayıların Altındaki Sezgi
Başa dönelim. Yapay zeka dili anlamaz; onu sayıya çevirir ve o sayılar üzerinde işlem yapar. Bu çevirinin üç halkasını gördük. Tokenizasyon metni sindirilebilir parçalara böler. Embedding her parçaya, anlamını yansıtan bir koordinat listesi atar. Vektör uzayı ise bu koordinatların yaşadığı bir anlam haritasıdır; bu haritada yakınlık benzerlik demektir ve kosinüs benzerliği bu yakınlığı ölçmemizi sağlar.
Bu zincirin gücü, anlamı bir geometriye çevirmesinde yatar. Anlam bir kez harita üzerinde bir konuma dönüştüğünde, "bu iki şey ne kadar benzer?" gibi insanca bir soru, "bu iki nokta birbirine ne kadar yakın?" gibi makinece çözülebilir bir soruya dönüşür. Modern yapay zekanın dili kavrar gibi görünmesinin altında yatan sessiz fikir budur: anlamı uzayda bir yere yerleştirmek.
Bu sezgiyi bir kez edindiğinizde, etrafınızdaki birçok yapay zeka aracının nasıl çalıştığı aydınlanır. Bir öneri sisteminin neden "buna benzer" şeyler bulabildiği, bir asistanın neden tam kelimeleri kullanmasanız da ne demek istediğinizi yakaladığı, bir hukuk aracının neden farklı ifade edilmiş ama aynı meseleyi konu alan kararları getirebildiği; hepsinin temelinde aynı fikir yatar. Dil sayıya çevrilir, anlam bir haritaya yerleşir ve makineler bu harita üzerinde gezinerek bizimkine benzeyen bir anlam duygusu üretir.