NLP'de Tokenizasyonu Anlamak: Yeni Başlayanlar İçin Metin İşleme Kılavuzu

Yayınlanan: 2024-11-26

Tokenizasyon, doğal dil işlemenin (NLP) kritik ancak sıklıkla gözden kaçırılan bir bileşenidir. Bu kılavuzda tokenizasyonu, kullanım örneklerini, artılarını ve eksilerini ve neden hemen hemen her büyük dil modelinde (LLM) yer aldığını açıklayacağız.

İçindekiler

  • NLP'de tokenizasyon nedir?
  • Tokenizasyon türleri
  • Tokenizasyon nasıl çalışır?
  • Tokenizasyon uygulamaları
  • Tokenizasyonun faydaları
  • Tokenizasyonun zorlukları

NLP'de tokenizasyon nedir?

Tokenizasyon, metni makine öğrenimi (ML) modellerinin kullanabileceği sayısal formatlara dönüştüren bir NLP yöntemidir. İsteminizi Anthropic'ten Claude, Google'dan Gemini veya OpenAI'nin GPT serisinin bir üyesi gibi bir LLM'ye gönderdiğinizde model, metninizi doğrudan okumaz. Bu modeller girdi olarak yalnızca sayıları alabilir, bu nedenle metnin öncelikle bir belirteç kullanılarak bir sayı dizisine dönüştürülmesi gerekir.

Bir simgeleştiricinin metni simgeleştirmesinin bir yolu, onu ayrı sözcüklere bölmek ve her benzersiz sözcüğe bir sayı atamak olacaktır:

"Gramerly dilbilgisini, makine öğrenimini ve yazmayı seviyor" şu şekilde olabilir:

NLP'de tokenizasyon örneği

Her kelime (ve onunla ilişkili sayı) bir simgedir. Bir ML modeli, işlemlerini yürütmek ve çıktısını üretmek için belirteç dizisini ([7,102], [37], [564], [2], [9,763], [2], [231]) kullanabilir. Bu çıktı genellikle aynı tokenizasyon işleminin tersi kullanılarak tekrar metne dönüştürülen bir sayıdır. Uygulamada, bu kelime kelime tokenizasyon örnek olarak harikadır ancak daha sonra göreceğimiz nedenlerden dolayı endüstride nadiren kullanılmaktadır.

Unutulmaması gereken son bir nokta da tokenizerlerin kelime dağarcığına sahip olmalarıdır; yani işleyebilecekleri tokenların tamamı. Temel İngilizce kelimeleri bilen ancak şirket adlarını bilmeyen bir tokenizer, kelime dağarcığında bir token olarak “Grammarly” içermeyebilir ve bu da tokenizasyon başarısızlığına yol açabilir.

Grammarly ile daha akıllı çalışın
Yapacak işi olan herkesin yapay zeka yazma ortağı

Tokenizasyon türleri

Genel olarak tokenizasyon, bir metin yığınını bir sayı dizisine dönüştürmektir. Tokenizasyonu kelime düzeyinde düşünmek doğal olsa da, başka birçok tokenizasyon yöntemi de vardır; bunlardan biri (alt kelime tokenizasyonu) endüstri standardıdır.

Kelime tokenizasyonu

Kelime tokenizasyonu, daha önce gördüğümüz, metnin her kelimeye ve noktalama işaretine göre bölündüğü örnektir.

NLP'de kelime tokenizasyonu örneği

Kelime tokenizasyonunun temel faydası anlaşılmasının ve görselleştirilmesinin kolay olmasıdır. Ancak birkaç kusuru var:

  • Noktalama işaretleri, eğer mevcutsa, “yazma”da olduğu gibi kelimelere eklenir.
  • Yeni veya alışılmadık kelimeler ("Gramerly" gibi) tam bir simgeyi kaplar.

Sonuç olarak, kelime tokenizasyonu yüzbinlerce token içeren sözlükler oluşturabilir. Geniş kelime dağarcıklarıyla ilgili sorun, eğitim ve çıkarımı çok daha az verimli hale getirmeleridir; metin ve sayılar arasında dönüşüm yapmak için gereken matrisin çok büyük olması gerekir.

Ek olarak, nadiren kullanılan birçok kelime olacaktır ve NLP modelleri, bu nadir kelimelere doğru yanıtlar verecek yeterli eğitim verisine sahip olmayacaktır. Yarın yeni bir kelime icat edilirse, kelime tokenizasyonunu kullanan bir Yüksek Lisans'ın bu kelimeyi içerecek şekilde yeniden eğitilmesi gerekecektir.

Alt kelime belirleme

Alt kelime tokenizasyonu, metni kelimelere eşit veya daha küçük parçalara böler. Her token için sabit bir boyut yoktur; her jeton (ve uzunluğu) eğitim süreci tarafından belirlenir. Alt kelime tokenizasyonu, LLM'ler için endüstri standardıdır. Aşağıda GPT-4o tokenizer tarafından yapılan tokenizasyona bir örnek verilmiştir:

NLP'de alt kelime belirleme örneği

Burada, alışılmışın dışında olan "Gramarly" sözcüğü üç simgeye ayrılıyor: "Gr", "amm" ve "arly". Bu arada, diğer kelimeler metinde kendi belirteçlerini oluşturacak kadar yaygındır.

Alt kelime belirleme, daha küçük kelime dağarcığına izin verir, bu da daha verimli ve daha ucuz eğitim ve çıkarım anlamına gelir. Alt kelime belirteçleri ayrıca nadir veya yeni kelimeleri daha küçük, mevcut belirteçlerin kombinasyonlarına bölebilir. Bu nedenlerden dolayı birçok NLP modeli alt kelime tokenizasyonunu kullanır.

Karakter tokenizasyonu

Karakter tokenizasyonu, metni tek tek karakterlere böler. Örneğimiz şu şekilde görünecektir:

NLP'de karakter tokenizasyonu örneği

Herbenzersizkarakter kendi simgesi haline gelir. Alfabede yalnızca 52 harf (büyük harf ve küçük harf farklı kabul edilir) ve birkaç noktalama işareti olduğundan, bu aslında en küçük kelime dağarcığını gerektirir. Bu karakterlerden herhangi bir İngilizce kelimenin oluşturulması gerektiğinden, karakter tokenizasyonu herhangi bir yeni veya nadir kelimeyle çalışabilir.

Ancak standart LLM kıyaslamalarına göre, karakter tokenizasyonu pratikte alt kelime tokenizasyonu kadar iyi performans göstermez. "Araba" alt sözcüğü, "c" karakter belirtecinden çok daha fazla bilgi içerir, dolayısıyla transformatörlerdeki dikkat mekanizmasının üzerinde çalışacak daha fazla bilgisi vardır.

Cümle tokenizasyonu

Cümle tokenizasyonu, metindeki her cümleyi kendi tokenizasyonuna dönüştürür. Örneğimiz şöyle görünecektir:

NLP'de cümle tokenizasyonu örneği

Avantajı, her tokenın tonlarca bilgi içermesidir. Ancak çeşitli dezavantajları vardır. Cümle yazmak için kelimeleri birleştirmenin sonsuz yolu vardır. Dolayısıyla kelime dağarcığının da sonsuz olması gerekir.

Ek olarak, her bir cümlenin kendisi oldukça nadirdir çünkü çok küçük farklılıklar bile ("ve" yerine "as well" gibi) aynı anlama sahip olmasına rağmen farklı bir belirteç anlamına gelebilir. Eğitim ve çıkarım bir kabus olurdu. Cümle tokenizasyonu, cümle duyarlılığı analizi gibi özel kullanım durumlarında kullanılır, ancak bunun dışında nadir görülen bir durumdur.

Tokenizasyon ödünleşimi: verimlilik ve performans

Bir model için doğru tokenizasyon ayrıntı düzeyini seçmek, verimlilik ve performans arasında gerçekten karmaşık bir ilişkidir. Çok büyük belirteçlerle (örneğin cümle düzeyinde), kelime dağarcığı devasa hale gelir. Modelin eğitim verimliliği düşüyor çünkü tüm bu tokenleri tutacak matris çok büyük. Tüm benzersiz belirteçlerin ilişkileri anlamlı bir şekilde öğrenmesi için yeterli eğitim verisi olmadığından performans düşüyor.

Diğer taraftan, küçük jetonlarla kelime dağarcığı küçülür. Eğitim verimli hale gelir ancak her bir belirteç, modelin belirteç-belirteç ilişkilerini öğrenmesi için yeterli bilgi içermediğinden performans düşebilir.

Alt kelime tokenizasyonu tam ortadadır. Her belirteç, modellerin ilişkileri öğrenmesi için yeterli bilgiye sahiptir, ancak kelime dağarcığı, eğitimi verimsiz hale getirecek kadar büyük değildir.

Tokenizasyon nasıl çalışır?

Tokenizasyon, tokenizerlerin eğitimi ve kullanımı etrafında döner. Belirteçleyiciler metni belirteçlere ve belirteçleri tekrar metne dönüştürür. En popüler tür oldukları için alt kelime belirteçlerini burada tartışacağız.

Alt kelime belirteçlerinin metni etkili bir şekilde bölmek için eğitilmesi gerekir.

NLP'de alt kelime belirleme örneği

Neden “Gramarly” “Gr”, “amm” ve “arly” olarak ikiye ayrılıyor? “Gram”, “mar” ve “ly” de çalışamaz mıydı? İnsan gözüne göre kesinlikle öyle olabilir ancak muhtemelen en etkili temsili öğrenmiş olan tokenizer farklı düşünüyor. Bu temsili öğrenmek için kullanılan yaygın bir eğitim algoritması (GPT-4o'da kullanılmasa da) bayt çifti kodlamadır (BPE). Bir sonraki bölümde BPE'yi açıklayacağız.

Tokenizer eğitimi

İyi bir tokenizer yetiştirmek için üzerinde eğitim alacağınız çok büyük bir metin külliyatına ihtiyacınız var. Bu derlemede BPE'yi çalıştırmak şu şekilde çalışır:

  1. Derlemdeki tüm metni tek tek karakterlere bölün. Bunları sözlükteki başlangıç ​​belirteçleri olarak ayarlayın.
  2. Metindeki en sık bitişik iki belirteci yeni bir belirteçte birleştirin ve onu sözlüğe ekleyin (eski belirteçleri silmeden; bu önemlidir).
  3. Sık sık meydana gelen bitişik belirteç çiftleri kalmayıncaya veya maksimum sözcük dağarcığı boyutuna ulaşılana kadar bu işlemi tekrarlayın.

Örnek olarak, eğitimimizin tamamının “abc abcd” metninden oluştuğunu varsayalım:

  1. Metin [“a”, “b”, “c”, “ ”, “a”, “b”, “c”, “d”] olarak bölünecektir. Bu listedeki dördüncü girişin bir boşluk karakteri olduğunu unutmayın. O zaman kelime dağarcığımız [“a”, “b”, “c”, “ ”, “d”] olacaktır.
  2. Metinde en sık “a” ve “b” yan yana geçer (“b” ve “c” ile bağlanır ancak “a” ve “b” alfabetik olarak kazanır). Böylece bunları tek bir jetonda, "ab"de birleştiriyoruz. Kelime dağarcığı artık [“a”, “b”, “c”, “ ”, “d”, “ab”] gibi görünüyor ve güncellenen metin (“ab” jeton birleştirme uygulanmış halde) [“ab” gibi görünüyor , “c”, “ ”, “ab”, “c”, “d”].
  3. Artık metinde en sık “ab” ve “c” birlikte geçiyor. Bunları “abc” belirtecinde birleştiriyoruz. Kelime bilgisi daha sonra [“a”, “b”, “c”, “ ”, “d”, “ab”, “abc”] şeklinde görünür ve güncellenen metin [“abc”, “ ”, “abc gibi görünür ", "D"].
  4. Her bitişik token çifti artık yalnızca bir kez oluştuğundan işlemi burada sonlandırıyoruz. Belirteçlerin daha fazla birleştirilmesi, ortaya çıkan modelin diğer metinlerde daha kötü performans göstermesine neden olacaktır. Uygulamada kelime büyüklüğü sınırı sınırlayıcı faktördür.

Yeni kelime setimizle metin ve belirteçler arasında haritalama yapabiliriz. Tek karakterli belirteçleri atmadığımız için "taksi" gibi daha önce görmediğimiz metinler bile simgeleştirilebilir. Ayrıca jetonun kelime dağarcığı içindeki konumunu görerek de jeton numaralarını döndürebiliriz.

İyi tokenizer eğitimi, çoğu şirketin karşılayabileceğinden çok daha fazla miktarda veri ve çok fazla bilgi işlem gerektirir. Şirketler bu sorunu kendi tokenizerlerinin eğitimini atlayarak çözüyorlar. Bunun yerine, model performansında minimum kayıpla zamandan ve paradan tasarruf etmek için yalnızca önceden eğitilmiş bir tokenizer (yukarıda bağlantısı verilen GPT-4o tokenizer gibi) kullanırlar.

Belirteçleyiciyi kullanma

Yani, bu alt kelime tokenizer'ı BPE kullanılarak devasa bir külliyat üzerinde eğitilmiş durumdayız. Şimdi bunu yeni bir metinde nasıl kullanırız?

Tokenizer eğitim sürecinde belirlediğimiz birleştirme kurallarını uyguluyoruz. İlk önce giriş metnini karakterlere böldük. Daha sonra jeton birleştirmelerini eğitimdekiyle aynı sırayla yapıyoruz.

Örnek olarak, biraz farklı bir giriş metni olan “dc abc”yi kullanacağız:

  1. Bunu [“d”, “c”, “ ”, “a”, “b”, “c”] karakterlerine ayırdık.
  2. Eğitimde yaptığımız ilk birleştirme “ab” idi, dolayısıyla bunu burada yapıyoruz: [“d”, “c”, “ ”, “ab”, “c”].
  3. Yaptığımız ikinci birleştirme “abc” idi, dolayısıyla şunu yapıyoruz: [“d”, “c”, “ ”, “abc”].
  4. Bunlar sahip olduğumuz tek birleştirme kurallarıdır, dolayısıyla tokenleştirmeyi bitirdik ve token kimliklerini geri verebiliriz.

Bir grup jeton kimliğimiz varsa ve bunu metne dönüştürmek istiyorsak, listedeki her bir jeton kimliğini kolayca arayabilir ve ilişkili metnini döndürebiliriz. Yüksek Lisans'lar bunu, birlikte çalıştıkları yerleştirmeleri (çevredeki belirteçlere bakarak belirteçlerinanlamınıyakalayan sayı vektörleri) tekrar insan tarafından okunabilir metne dönüştürmek için yapar.

Tokenizasyon uygulamaları

Tokenizasyon her zaman tüm NLP'de ilk adımdır. Metni makine öğrenimi modellerinin (ve bilgisayarların) çalışabileceği formlara dönüştürmek, tokenizasyon gerektirir.

LLM'lerde tokenizasyon

Tokenizasyon genellikle her LLM çağrısının ilk ve son kısmıdır. Metin önce belirteçlere dönüştürülür, ardından simgeler her bir belirtecin anlamını yakalamak için yerleştirmelere dönüştürülür ve modelin ana bölümlerine (transformatör blokları) aktarılır. Transformatör blokları çalıştırıldıktan sonra yerleştirmeler tekrar tokenlara dönüştürülür. Son olarak, yeni dönen jeton girdiye eklenir ve modele geri gönderilir ve süreç tekrar tekrarlanır. LLM'ler performansı ve verimliliği dengelemek için alt kelime tokenizasyonunu kullanır.

Arama motorlarında tokenizasyon

Arama motorları, kullanıcı sorgularını standartlaştırmak ve kullanıcının amacını daha iyi anlamak için tokenleştirir. Arama motoru tokenizasyonu, metni kelimelere bölmeyi, doldurucu kelimeleri kaldırmayı ("the" veya "ve" gibi), büyük harfleri küçük harflere çevirmeyi ve tire gibi karakterlerle uğraşmayı içerebilir. Performans ve verimlilik kelime büyüklüğüne daha az bağlı olduğundan alt kelime belirleme genellikle burada gerekli değildir.

Makine çevirisinde simgeleştirme

Makine çevirisi tokenizasyonu, giriş ve çıkış dilleri farklı olduğundan ilgi çekicidir. Sonuç olarak, her dil için bir tane olmak üzere iki tokenizer olacak. Alt kelime tokenizasyonu, model verimliliği ile model performansı arasındaki dengeyi sağladığı için genellikle en iyi sonucu verir. Ancak Çince gibi bazı dillerin bir kelimeden daha küçük bir dil bileşeni yoktur. Orada, kelime tokenizasyonu çağrılıyor.

Tokenizasyonun faydaları

Tokenizasyon her NLP modelinin olmazsa olmazıdır. İyi tokenizasyon, makine öğrenimi modellerinin metinle verimli bir şekilde çalışmasına ve yeni sözcükleri iyi bir şekilde işlemesine olanak tanır.

Tokenizasyon, modellerin metinle çalışmasına olanak tanır

Dahili olarak ML modelleri yalnızca sayılarla çalışır. ML modellerinin arkasındaki algoritma tamamen hesaplamaya dayanır ve hesaplamanın kendisi de sayıları gerektirir. Bu nedenle, makine öğrenimi modellerinin onlarla çalışabilmesi için metnin sayılara dönüştürülmesi gerekir. Tokenizasyondan sonra sayılar üzerinde dikkat çekme veya yerleştirme gibi teknikler çalıştırılabilir.

Belirteçleştirme yeni ve nadir metinlere genellenir

Daha doğrusu,iyitokenizasyon yeni ve nadir metinlere genellenir. Alt kelime ve karakter tokenizasyonuyla yeni metinler mevcut token dizilerine ayrıştırılabilir. Bu nedenle, anlamsız kelimeler içeren bir makaleyi ChatGPT'ye yapıştırmak, makalenin bozulmasına neden olmaz (ancak çok tutarlı bir yanıt da vermeyebilir). İyi genelleme aynı zamanda modellerin alt belirteçlerdeki ilişkilere dayalı olarak nadir sözcükler arasındaki ilişkileri öğrenmesine de olanak tanır.

Tokenizasyonun zorlukları

Tokenizasyon eğitim külliyatına ve algoritmaya bağlı olduğundan sonuçlar farklılık gösterebilir. Bu, LLM'lerin muhakeme yeteneklerini ve girdi ve çıktı uzunluklarını etkileyebilir.

Tokenizasyon, LLM'lerin muhakeme yeteneklerini etkiler

Yüksek Lisans öğrencilerinin sıklıkla kafasını karıştıran kolay bir problem, "çilek" kelimesindeki "r" harfinin geçişlerini saymaktır. Cevap gerçekte üç olsa da, model hatalı bir şekilde iki tane olduğunu söylüyordu. Bu hata kısmen tokenizasyondan kaynaklanıyor olabilir. Alt kelime belirteci "çilek"i "st", "ham" ve "berry" olarak ayırdı. Dolayısıyla model, ortadaki tokendaki bir “r”yi son tokendaki iki “r”ye bağlayamamış olabilir. Seçilen tokenizasyon algoritması, kelimelerin nasıl tokenleştirildiğini ve her tokenin diğerleriyle nasıl ilişki kurduğunu doğrudan etkiler.

Tokenizasyon LLM giriş ve çıkış uzunluğunu etkiler

LLM'ler çoğunlukla, her bir jetonu bağlamsallaştırmak için dikkat mekanizmasına dayanan transformatör mimarisi üzerine kuruludur. Ancak jeton sayısı arttıkça dikkat için gereken süre ikinci dereceden artar. Yani dört jetonlu bir metin 16 birim, sekiz jetonlu bir metin ise 64 birim zaman alacaktır. Bu, LLM'leri birkaç yüz bin jetonun giriş ve çıkış limitleriyle sınırlandırıyor. Daha küçük belirteçlerle bu, modele besleyebileceğiniz metin miktarını gerçekten sınırlayabilir ve onu kullanabileceğiniz görev sayısını azaltabilir.