11 Temmuz 2018 Çarşamba

Word2Vec

Kelimeler arasındaki uzaklık durumlarını, vektörel olarak bulmamıza yarayan algoritmalar bütünüdür. Vektörel yapı üzerinde yazılmış araçlar ile bir kelimeye yakın veya uzak kelimeleri listelemek için  kelimeler arasındaki anolojiyi kullanır (1).

Word2Vec Kelime Vektörü
Şekilde verdiğimiz input dökümanına göre bir kelime vektörü oluşturulması.



Word2Vec CBOW & Skip-Gram Algoritması



Bu kısımda 2 tane algoritmadan CBOW veya Skip-Gram algoritmasından faydalanıyor.

Multi-Word CBOW model (5)






Daha sonra, ağırlıkları güncellemek için gradyan iniş uygularız:



Skip-Gram model (5)



 








 Ağırlıklar için güncelleme denklemi, CBOW modeli ile aynıdır.


 Multi-Word CBOW model Python Code (5)






Skip-Gram model Python Code (5)



 Word2Vec Python & Gensim

Python, nesne yönemli programlamayı destekleyen, yorumlamalı (yani byte kod üreten), modüler ve
yüksek seviyeli bir dildir (2). Python dili, yapay zeka ve makine öğrenmesini uygulamalarında oldukça popüler ve kullanışlı bir dildir. Kullanılma nedenleri, makine öğrenmesi için ihtiyaç duyulan paketlerin import edilmesi ve en iyi performans açısından oldukça tercih  edilen bir dildir(3).

Gensim, Python'da import edilerek kullanılan bir kütüphanedir. Aslında bir kütüphaneden daha fazlası! Çünkü veri madenciliği konusunda oldukça yetenekli olması ve performanslı olması için NumPy, Scipy yapılarını kullanır. Özellikle kullanım alanı büyük  metinleri belli algoritmaları kullanılarak uzaklık ve kelime anolojisi hakkında oldukça başarılıdır(4).

Word2Vec Kurulumu (Linux(Debian))

debian@pc:~$ sudo apt install python3-pip
python yükleme aracını sistemimize kuruyoruz.
debian@pc:~$ sudo pip install
word2vec
Word2vec’i pip yükleme aracı ile sisteme kuruyoruz.

Kurulum sırasında hata oluşması, dosya bağımlılıkları ile alakalıdır.
İlk olarak kuruluma
Başlamadan önce sisteminizin güncel olduğundan emin olun.

Manuel olarak kurmak isteyenler için...
https://github.com/danielfrg/word2vec

Kullanımı

Word2Vec komut satırında şu şekilde kullanılabilir:
word2vec
word2phrase
word2vec-distance
word2vec-word-analogy
Word2vec-compute-accuracy

Kullanılacak türkçe eğitilmiş vektör/model dosyası.

https://drive.google.com/drive/folders/1IBMTAGtZ4DakSCyAoA4j7Ch0Ft1aFoww
Örnek => debian@pc:~$ word2vec-distance trmodel
          debian@pc:~$ word2vec-word-analogy trmodel

Word2Vec isteğe göre Windows veya OS X sistemler üzerinde de çalışıtırabilir. Linux/Debian türevi sistemler word2vec için daha performanslı ve stabil çalıştığı için tercih edilmiştir.


Word2Vec Örnek Gerçekleştirimi

Bu kısımda ./distance kullandığımıda çay için en yakın kelimeleri buldu örnek olarak



 Kelime analojisi için ./word-analogy kullandığımızda






 Word2Vec Background



Yukarıdaki şekilde görüldüğü gibi formül üzerinden kelimler arasındaki benzerlik ve uzaklık yukarıdaki mantığa göre şekillenmektedir.

İçerik Hazırlayan: Yusuf Dede

Kaynaklar
(1) https://medium.com/@odayibasi/word2vec-nedir-ne-i%C5%9Fe-yarar-a314a37c45aa
(2) https://tr.wikipedia.org/wiki/Python_(programlama_dili)
(3) https://medium.com/@EbubekirBbr/makine-%C3%B6%C4%9Frenmesi-uygulamas%C4%B1-geli%C5%9Ftirme-2-python-41028d52686b
(4) https://en.wikipedia.org/wiki/Gensim
(5) http://www.claudiobellei.com/2018/01/07/backprop-word2vec-python/
(5) http://www.claudiobellei.com/2018/01/07/backprop-word2vec-python/