Word2vec yöntemiyle Türkçe sözcüklerin ilişkilendirilmesi
Word2vec sistemi, kabaca sözcüklerin vektörelleştirilmesine dayanıyor. Sözcüklerin birbirine göre konumunu sayısallaştırarak yeni ilişkilerin saptanabilmesini sağlıyor.
Yöntemi geliştiren Google. https://code.google.com/archive/p/word2vec/ adresinde kelime torbası (bag-of-words) ve skip-gram yaklaşımları tanıtılıyor. Ayrıca örnekler ve kaynak kodlarının paylaşıldığı link te verilmiş. Ama ne yazık ki bu sayfaya erişmek artık mümkün olmuyor. Sistemin kaynaklarının açılmasına ilişkin duyuru 14 Ağustos 2013 tarihinde Google Knowledge’tan Tomas Mikolov, Ilya Sutskever ve Quoc Le tarafından yapılmış. İlgili makaleyi http://google-opensource.blogspot.com.tr/2013/08/learning-meaning-behind-words.html adresinde bulabilirsiniz.
https://github.com/danielfrg/word2vec adresinde de konuya ilişkin ayrıntılar ve örnekler var. Burada kullanılan word2vec, bağımsız bir modül. Aynı modülü gensim‘in bir alt modülü olarak kullanmak ta mümkün.
github.com/danielfrg deposunda modülün kurulum ve kullanımıyla ilgili açıklamalar ve örnekler var. Örnek veritabanını http://mattmahoney.net/dc/text8.zip adresinden indirebilirsiniz. 100MB büyüklüğünde bir dosya bu. İçeriğinde noktalama işaretleri kaldırılmış çeşitli yazılar bulunuyor.
Benzer çalışmayı Türkçe bir veritabanı oluşturarak denedim.
4 GB belleği olan makinamda 125MB’lık örnekler sorunsuz çalışabiliyor. Bu boyutun üzerine çıktığım zaman, “buffer overflow” hatası alıyorum. Eğer sizin bilgisayarınızın belleği daha büyükse, daha büyük boyutlu veritabanlarıyla çalışmanız da mümkün.
Elde ettiğim sonuçlardan bazıları şu şekilde:
insan: [‘insanın’ ‘insanoğlu’ ‘ruh’ ‘insanların’ ‘insanlar’ ‘hayvan’ ‘insandan’ ‘birey’ ‘toplum’ ‘doğa’]
macera: [‘serüven’ ‘vaka’ ‘hayatımız’ ‘felaket’ ‘çılgınlık’ ‘evliliği’ ‘kentte’ ‘buluşmamız’ ‘aşk_hikayesi’ ‘eğlence’]
öfke: [‘tiksinti’ ‘korku’ ‘utanç’ ‘kızgınlık’ ‘çaresizlik’ ‘acıma’ ‘şaşkınlık’ ‘hiddet’ ‘dehşet’ ‘üzüntü’]
karanlık: [‘kasvetli’ ‘ıssız’ ‘aydınlık’ ‘karanlığı’ ‘loş’ ‘boğucu’ ‘zifiri’
‘bulanık’ ‘alacakaranlık’ ‘iç_karartıcı’]
öykü: [‘hikaye’ ‘roman’ ‘romanda’ ‘şiiri’ ‘hikayeler’ ‘öyküler’ ‘şiirler’
‘romanı’ ‘dizeler’ ‘öyküsü’]
ayşe: [’emine’ ‘aliye’ ‘makbule’ ‘naciye’ ‘fatma’ ‘dede’ ‘hatice’ ‘zübeyde’ ‘sabiha’ ‘ablası’]
recep: [‘halit’ ‘şakir’ ‘hamit’ ‘nusret’ ‘cemal’ ‘muharrem’ ‘sait’ ‘cemil’ ‘nedim’ ‘refik’]
Veritabanına noktalama işaretlerini kaldırmak dışında yapılmış herhangi bir müdahale yok. Tüm ilişkileri sistemin kendisi saptıyor. İsimlerdeki cinsiyet farkının bile yakalanmış olması dikkat çekici.
Önümüzdeki günlerde, kullandığım Türkçe veritabanı örneklerini de paylaşacağım.
Beni izlemeye devam edin!
Ahmet Aksoy