Word Embeddings

Sebuah model machine learning ataupun neural network seperti LLM tidak bisa memproses sebuah data text secara langsung. Lalu gimana caranya? caranya adalah dengan merepresentasikan input text tersebut dalam sebuah nilai vector (vectorization). Beberapa algoritma vectorization, seperti One-hot-encoding, count vectorizer, atau TF-IDF yang mungkin sering kita gunakan memang dapat merepresentasikan kata menjadi sebuah nilai vector, akan tetapi metode teersebut tidak dapat menangkap hubungan semantic yang ada pada sebuah kalimat. Solusinya adalah dengan melakukan word embeddings.

Dalam konteks LLM word embeddings paling umum adalah embedding untuk sentences, paragraf, atau sebuah dokumen. Beberapa algoritma dan framework sudah banyak dikembangkan untuk generate word embeddings, salah satunya adalah word2vec. Word2vec adalah sebuah algoritma neural network yang generate word embeddings dengan cara memprediksi konteks dari sebuah kata.

image.png

Main idea dari algoritma word2vec adalah sebuah kata yang memiliki “makna” atau konteks yang mirip ketika di representasikan dalam sebuah dimensi yang lebih tinggi maka posisinya akan berdekatan.

image.png

Dalam LLM metode embedding seperti word2vec ini tidak digunakan karena biasanya LLM dia metode embeddingnya integrated dengan seluruh architecture modelnya as a part of the input layer, dan dapat secara terus menerus diupdate selama proses training (the embedding are optimazed to the spesific task).

source :

https://medium.com/@manansuri/a-dummys-guide-to-word2vec-456444f3c673

What are Tokens, Vectors, and Embeddings & How do you create them?

Tokenizing Text

Tokenization adalah approach yang digunakan untuk memecah kalimat berdasarkan kata per katanya atau berdasarkan frasa yang ada dalam kalimat tersebut sehingga menjadi individual token.

image.png

Example :

Alrite, kita akan pake “the-verdict-txt”. https://en.wikisource.org/wiki/The_Verdict.

import os
with open ("the-verdict.txt","r", encoding="utf-8") as file:
    raw_text = file.read()

print(len(raw_text))
print(raw_text[99:])