Gömlemeler

Python ile Natural Language Processing (NLP)

Fouad Trad

Machine Learning Engineer

BoW ve TF-IDF'in sınırlamaları

  • Benzer kelimeleri bütünüyle ilgisiz sayma
  • Metnin anlamını yakalayamama

 

BoW/TF-IDF'in çoklu metinlerden oluşan bir veri kümesini, benzersiz kelimelerin özellik olduğu yapılandırılmış bir veri kümesine dönüştürmesini gösteren görsel.

Python ile Natural Language Processing (NLP)

Gömlemeler

Gömlemenin bir kelimeyi vektöre dönüştürdüğünü gösteren görsel.

  • Bir kelimeyi, anlamını yakalayan bir vektörle temsil etme
Python ile Natural Language Processing (NLP)

Gömlemeler

Dört farklı kelimenin (car, movie, film, king) gömme vektörlerini gösteren görsel.

  • Bir kelimeyi, anlamını yakalayan bir vektörle temsil etme
    • Her kelimeye rastgele değerler atar
Python ile Natural Language Processing (NLP)

Gömlemeler

"I enjoyed watching the" gibi bir cümleyi uygun kelimeyle tamamlama görevini gösteren görsel.

  • Bir kelimeyi, anlamını yakalayan bir vektörle temsil etme
    • Her kelimeye rastgele değerler atar
    • Cümlelerde eksik kelimeleri tahmin ederek değerleri iyileştirir
Python ile Natural Language Processing (NLP)

Gömlemeler

Cümlenin movie ve film gibi benzer anlamlı iki kelimeyle tamamlanabildiğini gösteren görsel.

  • Bir kelimeyi, anlamını yakalayan bir vektörle temsil etme
    • Her kelimeye rastgele değerler atar
    • Cümlelerde eksik kelimeleri tahmin ederek değerleri iyileştirir
    • Benzer bağlamlarda görünen kelimeler benzer temsillere yakınsar
Python ile Natural Language Processing (NLP)

Kelimeler için GPS koordinatları olarak gömlemeler

Harita üzerinde GPS konumlarını gösteren görsel.

Python ile Natural Language Processing (NLP)

Gensim

  • Popüler gömme modelleri sağlar
    • Word2Vec
    • GloVe
word2vec-ruscorpora-300
word2vec-google-news-300
glove-wiki-gigaword-50
glove-wiki-gigaword-100
glove-wiki-gigaword-200
glove-wiki-gigaword-300
...

 

  Gensim logosu.

Python ile Natural Language Processing (NLP)

Bir gömme modeli yükleme

import gensim.downloader as api

model = api.load('glove-wiki-gigaword-50')
print(type(model))
print(model['movie'])
<class 'gensim.models.keyedvectors.KeyedVectors'>

[ 0.30824 0.17223 -0.23339 0.023105 0.28522 0.23076 -0.41048 -1.0035 -0.2072 1.4327 -0.80684 0.68954 -0.43648 1.1069 1.6107 -0.31966 0.47744 0.79395 -0.84374 0.064509 0.90251 0.78609 0.29699 0.76057 0.433 -1.5032 -1.6423 0.30256 0.30771 -0.87057 2.4782 -0.025852 0.5013 -0.38593 -0.15633 0.45522 0.04901 -0.42599 -0.86402 -1.3076 -0.29576 1.209 -0.3127 -0.72462 -0.80801 0.082667 0.26738 -0.98177 -0.32147 0.99823 ]
Python ile Natural Language Processing (NLP)

Benzerlik hesaplama

similarity = model.similarity("film", "movie")

print(similarity)
0.9310100078582764
Python ile Natural Language Processing (NLP)

En benzer kelimeleri bulma

similar_to_movie = model.most_similar('movie', topn=3)

print(similar_to_movie)
[('movies', 0.9322481155395508), 
 ('film', 0.9310100078582764), 
 ('films', 0.8937394618988037)]
Python ile Natural Language Processing (NLP)

Gömlemeleri görselleştirme

  • Temel Bileşen Analizi (PCA):
    • Yüksek boyutlu vektörler → 2B veya 3B vektörler

3B bir haritanın 2B'ye düzleştirilmesi.

1 Görsel DALL-E tarafından üretildi
Python ile Natural Language Processing (NLP)

PCA ile gömlemeleri görselleştirme

from sklearn.decomposition import PCA

words = ["film", "movie", "dog", "cat", "car", "bus"]
word_vectors = [model[word] for word in words]
pca = PCA(n_components=2)
word_vectors_2d = pca.fit_transform(word_vectors)
plt.scatter(word_vectors_2d[:, 0], word_vectors_2d[:, 1])
for word, (x, y) in zip(words, word_vectors_2d): plt.annotate(word, (x, y))
plt.show()

Gömleme uzayında benzer/ilişkili kelimelerin birbirine yakın olduğunu gösteren görsel.

Python ile Natural Language Processing (NLP)

Gömleme karşılaştırması

Word2Vec modelinde benzer/ilişkili kelimelerin gömme uzayında yakın olduğunu, ancak GloVe modelinden farklı konumlandığını gösteren görsel.

word2vec-google-news-300

GloVe modelinde benzer/ilişkili kelimelerin gömme uzayında yakın olduğunu gösteren görsel.

glove-wiki-gigaword-50
Python ile Natural Language Processing (NLP)

Hadi pratik yapalım!

Python ile Natural Language Processing (NLP)

Preparing Video For Download...