Semantic Ticket Classification Engine
SEMANTIC TICKET CLASSIFICATION ENGINE
Arsitektur, Algoritma, dan Implementasi Semantic Ticket Classification Menggunakan BGE-M3 dan Logistic Regression
Version 2.0
---
Executive Summary
Dokumen ini menjelaskan secara mendalam desain dan implementasi Semantic Ticket Classification Engine yang digunakan untuk mengklasifikasikan tiket berdasarkan histori penyelesaian.
Sistem memanfaatkan:
- Transformer Embedding (BGE-M3)
- Sentence Transformer Framework
- Logistic Regression Multiclass
- Probability Ranking
- Top-N Recommendation
Pendekatan ini memungkinkan sistem memahami makna tiket secara semantik, bukan sekadar pencocokan kata.
---
BAB 1 โ EVOLUSI SISTEM KLASIFIKASI TEKS
Generasi 1 โ Rule Based
Contoh:
if "login" in text:
category = "SSO"
Kelebihan:
- Mudah dibuat
- Cepat
Kekurangan:
- Sulit dipelihara
- Tidak memahami sinonim
- Tidak memahami konteks
---
Generasi 2 โ Bag Of Words
Representasi:
login upload billing token
Tiket:
login gagal
diubah menjadi:
[1,0,0,0]
Masalah:
Urutan kata hilang.
---
Generasi 3 โ TF-IDF
Mengukur pentingnya kata.
TF:
TF(t,d) = jumlah kemunculan term dalam dokumen
IDF:
IDF(t)=log(N/df)
TF-IDF:
TFIDF = TF ร IDF
Masalah:
Masih belum memahami makna.
---
Generasi 4 โ Word Embedding
Word2Vec
Contoh:
King - Man + Woman โ Queen
Model mulai memahami relasi semantik.
---
Generasi 5 โ Transformer Embedding
Digunakan oleh:
- BERT
- E5
- BGE
- OpenAI Embedding
Representasi berbasis konteks.
Kata:
bank
dapat memiliki makna berbeda tergantung kalimat.
---
BAB 2 โ TRANSFORMER ARCHITECTURE
Transformer diperkenalkan dalam paper:
"Attention Is All You Need" (2017)
Transformer menggantikan:
- RNN
- LSTM
- GRU
---
Mengapa RNN Bermasalah?
Kalimat:
Saya tidak bisa login ke CEISA karena token SSO expired
RNN membaca kata satu per satu.
Semakin panjang kalimat:
Semakin sulit mengingat konteks awal.
Disebut:
Long-Term Dependency Problem
---
Konsep Attention
Manusia tidak membaca semua kata dengan bobot yang sama.
Kalimat:
Saya tidak bisa login karena token expired
Kata penting:
login
token
expired
Kata kurang penting:
saya
karena
Transformer melakukan hal yang sama.
---
Self Attention
Misalnya:
Token SSO expired sehingga login gagal
Ketika membaca kata:
gagal
Model melihat seluruh kata lain.
Hubungan:
gagal โ login
gagal โ token
gagal โ expired
---
Query, Key, Value
Setiap token diubah menjadi:
Q = Query
K = Key
V = Value
Tujuan:
Menentukan token mana yang harus diperhatikan.
---
Perhitungan Attention:
Attention(Q,K,V)=softmax\left(\frac{QK^T}{\sqrt{d_k}}\right)V
---
Penjelasan:
QKแต menghasilkan skor kemiripan.
Semakin besar nilainya:
Semakin penting hubungan kedua token.
---
Multi Head Attention
Transformer tidak hanya memiliki satu attention.
Misalnya:
Head 1:
Hubungan grammar
Head 2:
Hubungan objek
Head 3:
Hubungan semantik
dst.
Output semua head digabungkan.
---
BAB 3 โ TOKENIZATION
Komputer tidak membaca kata.
Komputer membaca token.
Kalimat:
Tidak bisa login CEISA
menjadi:
["Tidak","bisa","login","CEISA"]
atau
["Ti","dak","bisa","login","CE","ISA"]
tergantung tokenizer.
---
Mengapa Tokenisasi Penting?
Model tidak pernah melihat teks asli.
Model hanya melihat ID token.
Misalnya:
login = 2481
token = 5291
expired = 7712
---
BAB 4 โ BGE-M3 INTERNAL ARCHITECTURE
Model:
BAAI/bge-m3
---
Tahap 1 โ Tokenization
Input:
Upload PIB gagal
โ
Token
[Upload, PIB, gagal]
โ
Token ID
[1244,8821,3344]
---
Tahap 2 โ Embedding Layer
Setiap token memiliki vector awal.
Contoh:
Upload
=
[0.21,0.44,-0.88,...]
---
Tahap 3 โ Positional Encoding
Transformer tidak memahami urutan.
Karena itu posisi ditambahkan.
Contoh:
Upload
Posisi 1
PIB
Posisi 2
---
Tahap 4 โ Transformer Encoder
Token melewati puluhan layer transformer.
Setiap layer:
- Self Attention
- Feed Forward Network
- Layer Normalization
- Residual Connection
---
Tahap 5 โ Pooling
Output transformer:
Token1 Vector
Token2 Vector
Token3 Vector
harus menjadi:
1 Kalimat = 1 Vector
Proses ini disebut:
Pooling
---
Mean Pooling:
SentenceEmbedding=\frac{1}{n}\sum{i=1}^{n}TokenEmbeddingi
---
Mengapa Hasilnya 1024 Dimensi?
Arsitektur BGE-M3 memiliki hidden dimension:
1024
Maka hasil pooling:
[0.12,
-0.55,
0.88,
...
1024 angka]
---
BAB 5 โ COSINE SIMILARITY
Setelah embedding terbentuk.
Kita dapat mengukur kemiripan.
Formula:
CosineSimilarity=\frac{A\cdot B}{||A||\ ||B||}
---
Nilai:
1 = identik
0 = tidak berhubungan
-1 = berlawanan
---
BAB 6 โ LOGISTIC REGRESSION DARI NOL
Banyak engineer menggunakan Logistic Regression.
Namun tidak memahami matematika di baliknya.
---
Misalkan embedding disederhanakan menjadi:
x = [2,3]
Bobot:
w = [0.5,0.8]
Bias:
b = -1
---
Hitung Linear Score
z=w^Tx+b
---
Substitusi:
z=(2ร0.5)+(3ร0.8)-1
z=2.4
---
Sigmoid
Mengubah score menjadi probabilitas.
\sigma(z)=\frac{1}{1+e^{-z}}
---
Substitusi:
ฯ(2.4)
โ0.916
Interpretasi:
91.6%
kemungkinan masuk kategori tersebut.
---
BAB 7 โ MULTICLASS LOGISTIC REGRESSION
Kasus nyata:
Kategori:
SSO
Billing
Dokumen
Manifes
Menghasilkan:
[2.4,1.2,0.3,-0.5]
---
Softmax
Mengubah score menjadi probabilitas.
P(y=i)=\frac{e^{zi}}{\sumj e^{z_j}}
---
Perhitungan:
eยฒยทโด = 11.02
eยนยทยฒ = 3.32
eโฐยทยณ = 1.35
eโปโฐยทโต = 0.61
Total:
16.30
---
Probabilitas:
SSO:
11.02 / 16.30
= 67.6%
Billing:
20.4%
Dokumen:
8.2%
Manifes:
3.8%
---
BAB 8 โ CROSS ENTROPY LOSS
Misal label sebenarnya:
SSO
One Hot:
[1,0,0,0]
Prediksi:
[0.676,0.204,0.082,0.038]
---
Loss:
L=-\sum yi\log(\hat{yi})
---
Substitusi:
L = -log(0.676)
L = 0.391
Semakin kecil loss:
Semakin baik model.
---
BAB 9 โ KOMPLEKSITAS WAKTU
TF-IDF
Training:
O(NรV)
N = jumlah dokumen
V = vocabulary
---
Logistic Regression
Training:
O(NรD)
D = dimensi embedding
---
Transformer Embedding
Attention:
O(nยฒ)
n = jumlah token
Karena setiap token membandingkan dirinya dengan seluruh token lain.
---
BAB 10 โ PERBANDINGAN ALGORITMA
TF-IDF
- Cepat
- Murah
- Tidak semantik
---
SVM
- Akurat
- Lambat pada dataset besar
---
Random Forest
- Mudah dipahami
- Kurang cocok untuk embedding dense
---
XGBoost
- Sangat kuat
- Hyperparameter kompleks
---
Logistic Regression
- Cepat
- Stabil
- Cocok embedding
---
LLM
- Pemahaman terbaik
- Mahal
- Lambat
- Sulit dikontrol
---
BAB 11 โ HYPERPARAMETER TUNING
Parameter Logistic Regression:
C
max_iter
solver
class_weight
---
Contoh:
LogisticRegression(
C=1.0,
max_iter=5000
)
---
C kecil
โ
Regularisasi besar
โ
Lebih sederhana
---
C besar
โ
Model lebih kompleks
โ
Risiko overfitting
---
BAB 12 โ EVALUASI DATASET TIKET CEISA
Dataset ideal:
Minimal:
500 tiket per kategori
Baik:
2000 tiket per kategori
Sangat Baik:
5000 tiket per kategori
---
Distribusi tidak boleh timpang.
Contoh buruk:
SSO = 10.000
Manifes = 50
Billing = 30
---
Model akan bias ke kategori terbesar.
---
BAB 13 โ REKOMENDASI ENTERPRISE
Versi Saat Ini
BGE-M3
*
Logistic Regression
---
Versi Enterprise
BGE-M3
โ
Logistic Regression
โ
Confidence Threshold
โ
LLM Validation
โ
Feedback Learning
โ
Continuous Retraining
---
Target Akurasi
Top-1 Accuracy: 90โ95%
Top-5 Accuracy: 95โ99%
pada dataset tiket yang telah dibersihkan dan memiliki kualitas label yang baik.
BAB 14 โ ANALISIS SOURCE CODE BARIS-PER-BARIS
Tujuan bab ini adalah menjelaskan secara detail apa yang sebenarnya terjadi ketika source code dijalankan.
---
Import Library
import json
import re
import pickle
---
json
Digunakan untuk membaca dataset.
Contoh file:
{
"detail_tiket": "Upload PIB gagal",
"kode_solusi": "AL83"
}
Ketika menjalankan:
json.load(f)
Python mengubah file JSON menjadi object Python.
---
re
Digunakan untuk Regular Expression.
Regular Expression adalah bahasa khusus untuk pencarian pola teks.
Contoh:
re.sub(pattern,replacement,text)
digunakan untuk:
- menghapus email
- menghapus token
- menghapus karakter tertentu
---
pickle
Digunakan untuk serialisasi model.
Konsep:
Object Python
โ
File
โ
Object Python
Tanpa pickle:
setiap startup aplikasi harus training ulang.
---
Load Dataset
for file in Path(DATA_DIR).glob("*.json")
Artinya:
Cari seluruh file JSON.
Misalnya:
ticket_2024.json
ticket_2025.json
ticket_2026.json
Semuanya digabung menjadi satu dataset.
---
Clean Text
clean_text()
Tahap ini sering dianggap sederhana.
Padahal sangat menentukan kualitas model.
Prinsip umum:
Garbage In
=
Garbage Out
Jika data kotor:
hasil model buruk.
---
BAB 15 โ MENGAPA NORMALIZEEMBEDDINGS=TRUE SANGAT PENTING
Pada source code:
embedder.encode(
text,
normalize_embeddings=True
)
Parameter ini sering dianggap tidak penting.
Padahal sangat krusial.
---
Apa Itu Panjang Vector?
Misalnya:
Vector A
[1,1]
Panjang:
โ2
---
Vector B
[100,100]
Panjang:
141.42
`
Padahal keduanya mengarah ke arah yang sama.
---
Analogi Dunia Nyata
Bayangkan dua orang menunjuk ke Jakarta.
Orang pertama:
1 meter dari Anda.
Orang kedua:
100 meter dari Anda.
Arah tetap sama.
Tujuan tetap sama.
Yang berbeda hanya jaraknya.
---
Dalam embedding:
Yang penting adalah:
Bukan:
---
Rumus Normalisasi
\hat{x}=\frac{x}{|x|}
---
Setelah normalisasi:
Semua vector memiliki panjang:
---
Mengapa BGE-M3 Sangat Diuntungkan?
BGE-M3 dilatih menggunakan objective berbasis cosine similarity.
Cosine similarity mengasumsikan:
Jika tidak:
hasil similarity menjadi tidak stabil.
---
BAB 16 โ VISUALISASI RUANG VEKTOR 1024 DIMENSI
Secara teoritis.
Setiap tiket menjadi titik.
Misalnya:
โ
---
โ
---
Karena maknanya mirip.
Posisinya dekat.
---
Ilustrasi 2 Dimensi
โ
Login โ
โ Token Expired
Manifes โ
Pada kenyataannya:
Bukan 2 dimensi.
Melainkan:
---
Mengapa Tidak Bisa Digambar?
Manusia hanya bisa memvisualisasikan:
- 2 dimensi
- 3 dimensi
Embedding berada pada:
---
PCA dan t-SNE
Untuk visualisasi biasanya digunakan:
PCA
atau
t-SNE
yang mereduksi:
---
BAB 17 โ BAGAIMANA predictproba() BEKERJA
Banyak engineer menggunakan:
tanpa mengetahui proses internalnya.
---
Misal embedding:
---
Bobot kelas:
Bias:
---
Hitung score:
z=w^Tx+b
---
Substitusi:
z=2.4
---
Untuk multiclass.
Setiap kategori memiliki score.
Misal:
AL55 = 1.7
AL21 = 0.8
---
Softmax
Mengubah score menjadi probabilitas.
P(y=i)=\frac{e^{zi}}{\sumj e^{z_j}}
---
Hasil:
AL55 = 0.27
AL21 = 0.12
---
Inilah yang dikembalikan:
---
BAB 18 โ TOP 5 RECOMMENDATION ENGINE
Source code:
---
Proses:
Probabilitas:
---
Sorting:
---
Ambil 5 terbesar.
Operator tidak hanya melihat 1 solusi.
Tetapi beberapa kandidat.
---
BAB 19 โ ANALISIS DATASET TIKET CEISA
Dalam proyek nyata.
Model sering gagal bukan karena algoritma.
Tetapi karena dataset.
---
Noise
Contoh:
Tidak memiliki informasi.
---
Tidak menjelaskan masalah.
---
Noise seperti ini menurunkan akurasi.
---
Duplicate Ticket
Contoh:
muncul:
karena tiket hasil copy-paste.
---
Akibat:
Model menjadi bias.
---
Imbalance Dataset
Contoh:
Kategori Jumlah
AL83 10000 AL55 200 AL21 100
Model akan cenderung memilih:
---
Visualisasi Dataset Ideal
---
Mislabeled Ticket
Kasus paling berbahaya.
Contoh:
label:
Padahal seharusnya:
---
Model akan belajar informasi yang salah.
---
BAB 20 โ ARSITEKTUR PRODUKSI ENTERPRISE
Versi source code saat ini:
Cukup untuk PoC.
Belum cukup untuk produksi.
---
Arsitektur Enterprise
---
FastAPI
Berfungsi sebagai API Layer.
Endpoint:
Input:
Output:
---
Redis
Digunakan sebagai cache.
Jika tiket yang sama muncul:
hasil langsung diambil dari cache.
Tanpa inferensi ulang.
---
PostgreSQL
Menyimpan:
- tiket
- hasil prediksi
- feedback user
- audit log
---
MLflow
Digunakan untuk:
- model versioning
- experiment tracking
- model registry
---
Contoh:
---
Prometheus
Monitoring:
- response time
- error rate
- prediction count
- memory usage
---
Roadmap Enterprise
V1 Semantic Classification
V2 Confidence Threshold
V3 LLM Validation
V4 Active Learning
V5 Auto Retraining
V6 Autonomous Ticket Routing
Target akhir adalah sistem yang tidak hanya mengklasifikasikan tiket, tetapi juga menentukan solusi, assignment group, prioritas, dan routing secara otomatis berdasarkan histori penyelesaian.