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}TokenEmbedding_i
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^{z_i}}{\sum_j 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 y_i\log(\hat{y_i})
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 NORMALIZE_EMBEDDINGS=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:
```text
Arah Semantik
Bukan:
Magnitude
Rumus Normalisasi
\hat{x}=\frac{x}{|x|}
Setelah normalisasi:
Semua vector memiliki panjang:
1
Mengapa BGE-M3 Sangat Diuntungkan?
BGE-M3 dilatih menggunakan objective berbasis cosine similarity.
Cosine similarity mengasumsikan:
Semua vector sudah ternormalisasi
Jika tidak:
hasil similarity menjadi tidak stabil.
BAB 16 – VISUALISASI RUANG VEKTOR 1024 DIMENSI
Secara teoritis.
Setiap tiket menjadi titik.
Misalnya:
Ticket A
=
Tidak bisa login
↓
[0.23,-0.11,0.77,...]
Ticket B
=
Token SSO expired
↓
[0.19,-0.09,0.71,...]
Karena maknanya mirip.
Posisinya dekat.
Ilustrasi 2 Dimensi
Billing
●
Login
●
●
Token Expired
Manifes
●
Pada kenyataannya:
Bukan 2 dimensi.
Melainkan:
1024 dimensi
Mengapa Tidak Bisa Digambar?
Manusia hanya bisa memvisualisasikan:
- 2 dimensi
- 3 dimensi
Embedding berada pada:
R¹⁰²⁴
PCA dan t-SNE
Untuk visualisasi biasanya digunakan:
PCA
atau
t-SNE
yang mereduksi:
1024 dimensi
↓
2 dimensi
BAB 17 – BAGAIMANA predict_proba() BEKERJA
Banyak engineer menggunakan:
clf.predict_proba()
tanpa mengetahui proses internalnya.
Misal embedding:
x=[0.5,0.8]
Bobot kelas:
w=[2,3]
Bias:
b=-1
Hitung score:
z=w^Tx+b
Substitusi:
z=(2×0.5)+(3×0.8)-1
z=2.4
Untuk multiclass.
Setiap kategori memiliki score.
Misal:
AL83 = 2.4
AL55 = 1.7
AL21 = 0.8
Softmax
Mengubah score menjadi probabilitas.
P(y=i)=\frac{e^{z_i}}{\sum_j e^{z_j}}
Hasil:
AL83 = 0.61
AL55 = 0.27
AL21 = 0.12
Inilah yang dikembalikan:
predict_proba()
BAB 18 – TOP 5 RECOMMENDATION ENGINE
Source code:
idx = prob.argsort()[-5:][::-1]
Proses:
Probabilitas:
AL83 = 0.61
AL55 = 0.27
AL21 = 0.12
AL44 = 0.04
AL90 = 0.02
Sorting:
0.61
0.27
0.12
0.04
0.02
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:
Halo min
Tidak memiliki informasi.
Mohon dibantu
Tidak menjelaskan masalah.
Noise seperti ini menurunkan akurasi.
Duplicate Ticket
Contoh:
Upload PIB gagal
muncul:
500 kali
karena tiket hasil copy-paste.
Akibat:
Model menjadi bias.
Imbalance Dataset
Contoh:
| Kategori | Jumlah |
|---|---|
| AL83 | 10000 |
| AL55 | 200 |
| AL21 | 100 |
Model akan cenderung memilih:
AL83
Visualisasi Dataset Ideal
Mislabeled Ticket
Kasus paling berbahaya.
Contoh:
Token expired
label:
Billing
Padahal seharusnya:
SSO
Model akan belajar informasi yang salah.
BAB 20 – ARSITEKTUR PRODUKSI ENTERPRISE
Versi source code saat ini:
CLI
↓
Embedding
↓
Classifier
Cukup untuk PoC.
Belum cukup untuk produksi.
Arsitektur Enterprise
User
│
▼
FastAPI
│
├── Redis Cache
│
├── BGE-M3 Service
│
├── Logistic Regression
│
├── PostgreSQL
│
├── MLflow Registry
│
└── Prometheus Monitoring
FastAPI
Berfungsi sebagai API Layer.
Endpoint:
POST /predict
Input:
{
"ticket":"Upload PIB gagal"
}
Output:
{
"prediction":"AL83",
"confidence":0.91
}
Redis
Digunakan sebagai cache.
Jika tiket yang sama muncul:
Upload PIB gagal
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:
Model V1
Accuracy 91%
Model V2
Accuracy 94%
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.
Published by Nirantara
Nirantara is an Indonesian Enterprise AI company specializing in Enterprise AI, RAG, Intelligent Search, and AI Automation. Article written by admin.