Word2vec ve Glove — Türkçe NLP

Büşra Şebin
5 min readJun 29, 2022

--

Merhaba arkadaşlar en iyi öğrenme şeklinin bir başkasına öğretmek olduğuna inandığım için bundan sonra ilgi alanım olan yapay zeka konularında yazılar paylaşarak bir yandan bilgi paylaşımı yaparken bir yandan bu alanlardaki Türkçe kaynakların artmasına katkıda bulunmayı hedefliyorum. İlk yazım yapay zekanın bir alt dalı olan doğal dil işleme ile ilgili, keyifli okumalar ! :)

Biliyoruz ki bilgisayarlar yalnızca sayıları anlayabilir bu sebeple kelimeleri, görüntüleri, sesleri bilgisayarların anlayabilmesi için sayısal değerler haline getiririz. Doğal dil işlemede, bu amaç doğrultusunda kelimeler, önceden tanımlanmış bir vektör uzayında gerçek değerli vektörler olarak temsil edilir. Bu tekniğe kelime gömmeler (word embedding) adı verilir. Her kelime bir vektöre eşlenir ve aynı/yakın anlama gelen kelimeler benzer vektörler ile temsil edilir. Örneğin, kadın ve kraliçe kelimelerini temsil eden vektörler birbirine oldukça yakındır. Kelime gömme görevleri için kullanılan farklı modeller vardır. Bu yazıda, en popüler iki kelime gömme modelini, Word2Vec ve Glove’u tartışacağız. İlk olarak, bu modellerin temellerini anlayacağız ve ardından Amazon Türkiye sitesinden çektiğim ürün yorumlarından nasıl Glove ve Word2Vec modelleri oluşturulabileceğini göreceğiz. Bu sayede önceden eğitilmiş modellerin yanı sıra kendi modellerimizi oluşturabileceğiz.

Word2Vec Nedir ?

Word2Vec, 2013 yılında Google’da Tomas Mikolov tarafından geliştirilen kelime ilişkilendirmesini öğrenmek için kullanılan bir tekniktir. Word2vec, herhangi bir kelimeyi temsil etmek için bir sayı listesi (vektör) kullanır. Vektörler arasındaki kosinüs benzerliği, kelimeler arasındaki anlamsal benzerlik seviyesini gösterir. Word2vec’teki algoritmalar bir sinir ağı modeli kullanır, böylece bir kez eğitilmiş bir model eş anlamlı ve zıt anlamlı kelimeleri belirleyebilir veya kısmen tamamlanmamış bir cümleyi tamamlamak için bir kelime önerebilir.

Word2vec Modeli için Eğitim Prosedürü

Word2Vec kullanılarak kelimelerin temsili iki ana yöntemle yapılabilir.

Sürekli Kelime Torbası (CBOW) Yöntemi — Bu yöntem, kelimelerin bağlamına dayalı olarak cümlenin ortasına yerleştirilebilecek kelimeleri tahmin ederek eksik bir cümleyi tamamlamaya yardımcı olur. Tahmin bağlamı, tahmin edilen kelimeden önceki ve sonraki birkaç kelimeye bağlıdır. Bu yöntemlere sözcük torbası yöntemleri denir çünkü sözcüklerin bağlam içindeki sırası önemli değildir.
Skip-Gram Yöntemi — Bu yöntem CBOW modelinin yaptığının tersini elde etmeye çalışır. Bir merkez kelimeden yola çıkarak bağlam kelimelerinin (komşu kelimelerinin) tahminlerini yapmak için kullanılır. Burada, bağlam kelimeleri çıktıyken merkez kelime girdidir. Tahmin edilmesi gereken birden fazla bağlam kelimesi olduğundan, bu sorunu zorlaştırır.

CBOW ve Skip-Gram modellerinin temel mimarisi aşağıda gösterilmiştir.

Şekil 1. CBOW: merkez sözcüğü tahmin etmek için bir penceredeki bağlam sözcüklerini kullanır. Skip-gram: Bir penceredeki bağlam sözcüklerini tahmin etmek için merkez sözcüğü kullanır. Wt, cümledeki t. kelimedir. (Kaynak: https://arxiv.org/pdf/1301.3781.pdf Mikolov el al.)

Örneğin Skip-gram modelinde “Bugün erken kalkıp kahvaltı hazırladım.” cümlesi için pencere boyutu 5 iken ‘kalkıp’ kelimesi girdi olarak alınır ve ‘bugün’, ‘erken’, ‘kahvaltı’ , ‘hazırladım’ kelimeleri tahmin edilir.

Fakat CBOW modelinde “Bugün erken kalkıp kahvaltı hazırladım.” cümlesinde ‘bugün’, ‘erken’, ‘kahvaltı’ ve ‘hazırladım’ kelimeleri girdi olarak alınır. Amaç ise bu kelimelerin arasına gelecek en uygun kelimeyi bulmaktır.

Glove Nedir ?

GloVe bir diğer kelime gömme yöntemidir. Ancak, gömme matrisini oluşturmak için farklı denklemler ve mekanizma kullanır. Stanford’da açık kaynaklı bir proje olarak geliştirilen ve 2014'te piyasaya sürülen bu model, denetimsiz bir öğrenme algoritması kullanır. Denetimsiz algoritmalar, verilerin istatistiklerine dayanır. Skip-gram, CBOW gibi modeller birlikte oluşum matrisini (co-occurrence matrix) kullanmaz yani kelimeler arasındaki anlamsal ilişkileri yakalayamaz. Fakat GloVe modeli olasılık istatistiklerini kullanarak bu sorunu çözmeyi amaçlamaktadır.

Şekil 2. Birlikte Oluşum Matrisi (Co-occurrence Matrix)

GloVe Modeli için Eğitim Prosedürü

Glove modeli, kelime-bağlam matrisine kelime yerleştirmek için matris çarpanlara ayırma tekniğini kullanır. Sözcüklerin bir arada bulunma bilgisinden oluşan büyük bir matris oluşturarak çalışmaya başlar, yan yana geçen kelimeler 1, aralarında kelime varsa 0 değerini alır. Temel olarak, bu matrisin arkasındaki fikir, kelimeler arasındaki ilişkiyi istatistiklerden türetmektir.

Şekil 3. GloVe modelin mimarisi

Birlikte oluşum matrisini oluşturduktan sonra, GloVe modeli bu matrisi çarpanlara ayırarak daha düşük boyutlu (kelime x özellikleri) bir matris verir; burada her satır karşılık gelen kelime için bir vektör temsili verir. Genel olarak, bu bir “yeniden yapılanma kaybını” en aza indirerek yapılır. Bu kayıp, yüksek boyutlu verilerdeki varyansın çoğunu açıklayabilen daha düşük boyutlu temsilleri bulmaya çalışır.

Word2Vec ve Glove Farkı Nedir ?

Şekil 4. Word2Vec ve GloVe Vektörleri

Kelime gömme tekniğinde her kelime bir vektöre eşlenir ve vektör değerleri, sinir ağları veya birlikte oluşum matrisleri gibi bazı modellerle hesaplanır. Glove modeli, tüm kelime topluluğundan küresel bağlamda yararlanarak kelimelerin birlikte bulunma sıklıklarına dayanır. Öte yandan Word2vec, metinleri bir sinir ağı için eğitim verileri olarak alır. Ortaya çıkan vektörler, kelimelerin benzer bağlamlarda görünüp görünmediğini yakalar. Kısaca bu iki model, eğitilme biçimleri bakımından farklılık gösterir ve bu nedenle son derece farklı özelliklere sahip kelime vektörleri üretir.

Ancak uygulamada, bu modellerin her ikisi de birçok görev için benzer sonuçlar verir. ​Bu modellerin üzerinde eğitildiği veri seti, vektörlerin uzunluğu gibi faktörlerin, modellerin kendisinden daha büyük bir etkisi olduğu görülmektedir. Örneğin, bir tıbbi uygulamanın özelliklerini türetmek için bu modelleri kullanıyorsam, tıbbi alandaki veri kümesi üzerinde eğitim alarak performansı önemli ölçüde artırabilirim.

En popüler kelime gömme modellerinden olan Word2vec ve GloVe algoritmalarını temel olarak anladığımıza göre Python kullanarak bu modelleri nasıl eğiteceğimize geçebiliriz.

Glove-Python Kurulumu

GloVe, glove-python kitaplığında mevcuttur.

Verinin Hazırlanması

Veriler Amazon Türkiye sitesinden alınan ürün yorumları ve beraberinde ürünlere kullanıcılar tarafından verilen yıldız değerleridir.

  • Yıldızların veriden çekilmesi
  • Yıldızlara göre yorumlara duygu ataması yapılması

Metin Ön İşleme

  • Yorumların gerekli işlemlerden geçip arındırılması
  • Bütün yorumların tek bir cümleler listesi haline getirilmesi

Word2Vec Modeli Oluşturma

  • Word2Vec vektörleri

Glove Modeli Oluşturma

  • GloVe vektörleri

Yukarıdaki kodlar sayesinde Amazon Türkiyedeki bazı kullanıcı yorumlarından elde ettiğimiz veriler ile kendi Word2Vec ve Glove modellerimizi oluşturduk. Bu vektörler kullanılarak çeşitli doğal dil işleme projeleri yapabiliriz, duygu analizi bunlardan birisi. İki modele ek olarak FastText vektörlerini de bulabileceğiniz github linkini de ekleyerek ilk yazımı bitiriyorum. Umarım keyifli ve faydalı olmuştur ! :)

--

--