Embedding

Natural Language Processing (NLP) in Python

Fouad Trad

Machine Learning Engineer

Keterbatasan BoW dan TF‑IDF

  • Menganggap kata serupa sebagai tidak terkait
  • Gagal menangkap makna teks

 

Gambar menunjukkan bagaimana BoW/TF-IDF mengubah kumpulan teks menjadi data terstruktur dengan kata unik sebagai fitur.

Natural Language Processing (NLP) in Python

Embedding

Gambar menunjukkan bahwa embedding mengubah kata menjadi vektor.

  • Mewakili kata sebagai vektor yang menangkap maknanya
Natural Language Processing (NLP) in Python

Embedding

Gambar menunjukkan vektor embedding untuk empat kata: car, movie, film, dan king.

  • Mewakili kata sebagai vektor yang menangkap maknanya
    • Memberi nilai acak pada tiap kata
Natural Language Processing (NLP) in Python

Embedding

Gambar menunjukkan tugas melengkapi kalimat, mis. "I enjoyed watching the" diisi dengan kata yang tepat.

  • Mewakili kata sebagai vektor yang menangkap maknanya
    • Memberi nilai acak pada tiap kata
    • Memperbaiki nilai dengan menebak kata hilang dalam kalimat
Natural Language Processing (NLP) in Python

Embedding

Gambar menunjukkan kita dapat melengkapi kalimat dengan dua kata bermakna serupa: movie dan film.

  • Mewakili kata sebagai vektor yang menangkap maknanya
    • Memberi nilai acak pada tiap kata
    • Memperbaiki nilai dengan menebak kata hilang dalam kalimat
    • Kata dalam konteks serupa berakhir dengan representasi serupa
Natural Language Processing (NLP) in Python

Embedding seperti koordinat GPS untuk kata

Gambar menunjukkan lokasi GPS di peta.

Natural Language Processing (NLP) in Python

Gensim

  • Menyediakan model embedding populer
    • 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
...

 

  Logo Gensim.

Natural Language Processing (NLP) in Python

Memuat model embedding

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 ]
Natural Language Processing (NLP) in Python

Menghitung kemiripan

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

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

Menemukan kata paling mirip

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

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

Memvisualisasikan embedding

  • Principal Component Analysis (PCA):
    • Vektor berdimensi tinggi → vektor 2D atau 3D

Peta 3D diratakan menjadi 2D.

1 Gambar dibuat oleh DALL-E
Natural Language Processing (NLP) in Python

Visualisasi embedding dengan PCA

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()

Gambar menunjukkan kata yang mirip/saling terkait berdekatan dalam ruang embedding.

Natural Language Processing (NLP) in Python

Perbandingan embedding

Gambar menunjukkan kata serupa/terkait dalam model Word2Vec berdekatan dalam ruang embedding, namun posisinya berbeda dari model GloVe.

word2vec-google-news-300

Gambar menunjukkan kata serupa/terkait dalam model GloVe berdekatan dalam ruang embedding.

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

Ayo berlatih!

Natural Language Processing (NLP) in Python

Preparing Video For Download...