Spaces:
Sleeping
Sleeping
Buzzy2045 commited on
Commit ·
541fa1f
0
Parent(s):
Deploy
Browse filesThis view is limited to 50 files because it contains too many changes. See raw diff
- .gitattributes +4 -0
- .gitignore +16 -0
- README.md +151 -0
- app.py +183 -0
- artifacts/classical/fold_metrics.csv +101 -0
- artifacts/classical/keyword_counts.csv +25 -0
- artifacts/classical/oof_tfidf_extra_trees.csv +0 -0
- artifacts/classical/oof_tfidf_gradient_boosting.csv +0 -0
- artifacts/classical/oof_tfidf_linear_svm.csv +0 -0
- artifacts/classical/oof_tfidf_logistic_regression.csv +0 -0
- artifacts/classical/oof_tfidf_random_forest.csv +0 -0
- artifacts/classical/oof_word2vec_extra_trees.csv +0 -0
- artifacts/classical/oof_word2vec_gradient_boosting.csv +0 -0
- artifacts/classical/oof_word2vec_linear_svm.csv +0 -0
- artifacts/classical/oof_word2vec_logistic_regression.csv +0 -0
- artifacts/classical/oof_word2vec_random_forest.csv +0 -0
- artifacts/classical/report_tfidf_extra_trees.json +27 -0
- artifacts/classical/report_tfidf_gradient_boosting.json +27 -0
- artifacts/classical/report_tfidf_linear_svm.json +27 -0
- artifacts/classical/report_tfidf_logistic_regression.json +27 -0
- artifacts/classical/report_tfidf_random_forest.json +27 -0
- artifacts/classical/report_word2vec_extra_trees.json +27 -0
- artifacts/classical/report_word2vec_gradient_boosting.json +27 -0
- artifacts/classical/report_word2vec_linear_svm.json +27 -0
- artifacts/classical/report_word2vec_logistic_regression.json +27 -0
- artifacts/classical/report_word2vec_random_forest.json +27 -0
- artifacts/classical/results.csv +11 -0
- artifacts/classical/top_words_tfidf.csv +121 -0
- artifacts/figures/classical_best_confusion_matrix.png +3 -0
- artifacts/figures/classical_best_roc_auc.png +3 -0
- artifacts/figures/confusion_matrix_ChristopherA08__IndoELECTRA.png +3 -0
- artifacts/figures/confusion_matrix_cahya__distilbert-base-indonesian.png +3 -0
- artifacts/figures/confusion_matrix_flax-community__indonesian-roberta-base.png +3 -0
- artifacts/figures/confusion_matrix_indobenchmark__indobert-base-p1.png +3 -0
- artifacts/figures/confusion_matrix_indobenchmark__indobert-base-p2.png +3 -0
- artifacts/figures/confusion_matrix_indolem__indobert-base-uncased.png +3 -0
- artifacts/figures/confusion_matrix_indolem__indobertweet-base-uncased.png +3 -0
- artifacts/figures/confusion_matrix_naufalihsan__indonesian-sbert-large.png +3 -0
- artifacts/figures/confusion_matrix_sentence-transformers__paraphrase-multilingual-MiniLM-L12-v2.png +3 -0
- artifacts/figures/confusion_matrix_w11wo__indonesian-roberta-base-sentiment-classifier.png +3 -0
- artifacts/figures/roc_auc_ChristopherA08__IndoELECTRA.png +3 -0
- artifacts/figures/roc_auc_cahya__distilbert-base-indonesian.png +3 -0
- artifacts/figures/roc_auc_flax-community__indonesian-roberta-base.png +3 -0
- artifacts/figures/roc_auc_indobenchmark__indobert-base-p1.png +3 -0
- artifacts/figures/roc_auc_indobenchmark__indobert-base-p2.png +3 -0
- artifacts/figures/roc_auc_indolem__indobert-base-uncased.png +3 -0
- artifacts/figures/roc_auc_indolem__indobertweet-base-uncased.png +3 -0
- artifacts/figures/roc_auc_naufalihsan__indonesian-sbert-large.png +3 -0
- artifacts/figures/roc_auc_sentence-transformers__paraphrase-multilingual-MiniLM-L12-v2.png +3 -0
- artifacts/figures/roc_auc_w11wo__indonesian-roberta-base-sentiment-classifier.png +3 -0
.gitattributes
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
*.bin filter=lfs diff=lfs merge=lfs -text
|
| 2 |
+
*.safetensors filter=lfs diff=lfs merge=lfs -text
|
| 3 |
+
models/** filter=lfs diff=lfs merge=lfs -text
|
| 4 |
+
*.png filter=lfs diff=lfs merge=lfs -text
|
.gitignore
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
.cache/
|
| 2 |
+
__pycache__/
|
| 3 |
+
*.pyc
|
| 4 |
+
.pytest_cache/
|
| 5 |
+
.mypy_cache/
|
| 6 |
+
.venv/
|
| 7 |
+
venv/
|
| 8 |
+
env/
|
| 9 |
+
|
| 10 |
+
# Training checkpoints (regenerable; large)
|
| 11 |
+
artifacts/transformers/*/checkpoints/
|
| 12 |
+
models/transformers/*/checkpoints/
|
| 13 |
+
|
| 14 |
+
# Per-candidate transformer weights are regenerable.
|
| 15 |
+
# Keep only models/best_transformer tracked with Git LFS.
|
| 16 |
+
models/transformers/*/model/model.safetensors
|
README.md
ADDED
|
@@ -0,0 +1,151 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
title: Matcha Sentiment
|
| 3 |
+
emoji: 🍵
|
| 4 |
+
colorFrom: green
|
| 5 |
+
colorTo: yellow
|
| 6 |
+
sdk: gradio
|
| 7 |
+
sdk_version: 5.0.1
|
| 8 |
+
app_file: app.py
|
| 9 |
+
python_version: "3.12"
|
| 10 |
+
pinned: false
|
| 11 |
+
license: mit
|
| 12 |
+
---
|
| 13 |
+
|
| 14 |
+
# Matcha Sentiment
|
| 15 |
+
|
| 16 |
+
Sentiment analysis bahasa Indonesia untuk review Matchaya/IKUYO. Dataset dibersihkan menjadi klasifikasi biner `Negatif` dan `Positif`, lalu dibandingkan dengan baseline machine learning klasik dan fine-tuning 9 model Transformer Indonesia.
|
| 17 |
+
|
| 18 |
+

|
| 19 |
+
|
| 20 |
+
## Ringkasan
|
| 21 |
+
|
| 22 |
+
| Area | Hasil |
|
| 23 |
+
| --- | --- |
|
| 24 |
+
| Dataset final | 2028 review |
|
| 25 |
+
| Label | 1014 `Negatif`, 1014 `Positif` |
|
| 26 |
+
| Label dihapus | 14 `Netral` |
|
| 27 |
+
| Duplikat dibuang | 219 teks |
|
| 28 |
+
| Best classical | `TF-IDF + Linear SVM` |
|
| 29 |
+
| Best Transformer | `indolem/indobert-base-uncased` |
|
| 30 |
+
| Runtime | Docker + NVIDIA GPU |
|
| 31 |
+
| Dashboard | Gradio, siap Hugging Face Spaces |
|
| 32 |
+
|
| 33 |
+
> Catatan push: model Transformer terbaik disimpan di `models/best_transformer` dan ditrack lewat Git LFS. Weight kandidat di `models/transformers/*/model/model.safetensors` di-ignore karena bisa dibuat ulang dari pipeline training.
|
| 34 |
+
|
| 35 |
+
## Hasil Utama
|
| 36 |
+
|
| 37 |
+
### Transformer
|
| 38 |
+
|
| 39 |
+
| Model | Accuracy | Precision | Recall | F1 | ROC AUC |
|
| 40 |
+
| --- | ---: | ---: | ---: | ---: | ---: |
|
| 41 |
+
| `indolem/indobert-base-uncased` | 0.9951 | 0.9902 | 1.0000 | 0.9951 | 0.9998 |
|
| 42 |
+
| `naufalihsan/indonesian-sbert-large` | 0.9901 | 0.9806 | 1.0000 | 0.9902 | 0.9998 |
|
| 43 |
+
| `flax-community/indonesian-roberta-base` | 0.9901 | 0.9806 | 1.0000 | 0.9902 | 0.9997 |
|
| 44 |
+
| `sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2` | 0.9901 | 0.9806 | 1.0000 | 0.9902 | 0.9996 |
|
| 45 |
+
| `indobenchmark/indobert-base-p1` | 0.9901 | 0.9806 | 1.0000 | 0.9902 | 0.9989 |
|
| 46 |
+
| `ChristopherA08/IndoELECTRA` | 0.9901 | 0.9806 | 1.0000 | 0.9902 | 0.9989 |
|
| 47 |
+
| `cahya/distilbert-base-indonesian` | 0.9901 | 0.9901 | 0.9901 | 0.9901 | 0.9998 |
|
| 48 |
+
| `indolem/indobertweet-base-uncased` | 0.9852 | 0.9804 | 0.9901 | 0.9852 | 0.9994 |
|
| 49 |
+
| `w11wo/indonesian-roberta-base-sentiment-classifier` | 0.9803 | 0.9619 | 1.0000 | 0.9806 | 1.0000 |
|
| 50 |
+
|
| 51 |
+
Model terbaik sudah disimpan di:
|
| 52 |
+
|
| 53 |
+
```text
|
| 54 |
+
models/best_transformer
|
| 55 |
+
```
|
| 56 |
+
|
| 57 |
+
### Machine Learning Klasik
|
| 58 |
+
|
| 59 |
+
TF-IDF dan Word2Vec diuji dengan Stratified 10-fold cross validation. Hasil lengkap:
|
| 60 |
+
|
| 61 |
+
| Feature | Model | Accuracy | Precision | Recall | F1 | ROC AUC |
|
| 62 |
+
| --- | --- | ---: | ---: | ---: | ---: | ---: |
|
| 63 |
+
| TF-IDF | Linear SVM | 0.9684 | 0.9788 | 0.9576 | 0.9681 | 0.9951 |
|
| 64 |
+
| Word2Vec | Logistic Regression | 0.9635 | 0.9663 | 0.9606 | 0.9634 | 0.9939 |
|
| 65 |
+
| Word2Vec | Extra Trees | 0.9625 | 0.9653 | 0.9596 | 0.9624 | 0.9940 |
|
| 66 |
+
| TF-IDF | Logistic Regression | 0.9610 | 0.9756 | 0.9458 | 0.9604 | 0.9933 |
|
| 67 |
+
| Word2Vec | Linear SVM | 0.9596 | 0.9660 | 0.9527 | 0.9593 | 0.9924 |
|
| 68 |
+
| Word2Vec | Random Forest | 0.9591 | 0.9632 | 0.9546 | 0.9589 | 0.9927 |
|
| 69 |
+
| Word2Vec | Gradient Boosting | 0.9571 | 0.9603 | 0.9536 | 0.9570 | 0.9933 |
|
| 70 |
+
| TF-IDF | Extra Trees | 0.9522 | 0.9580 | 0.9458 | 0.9519 | 0.9918 |
|
| 71 |
+
| TF-IDF | Random Forest | 0.9443 | 0.9353 | 0.9546 | 0.9449 | 0.9882 |
|
| 72 |
+
| TF-IDF | Gradient Boosting | 0.9147 | 0.9304 | 0.8964 | 0.9131 | 0.9735 |
|
| 73 |
+
|
| 74 |
+
## Visual Evaluasi
|
| 75 |
+
|
| 76 |
+

|
| 77 |
+
|
| 78 |
+
### Dashboard
|
| 79 |
+
|
| 80 |
+
| Prediksi | Visual | Kata Kunci |
|
| 81 |
+
| --- | --- | --- |
|
| 82 |
+
|  |  |  |
|
| 83 |
+
|
| 84 |
+
### Detail Plot
|
| 85 |
+
|
| 86 |
+
| Training Loss | Confusion Matrix | ROC AUC |
|
| 87 |
+
| --- | --- | --- |
|
| 88 |
+
|  |  |  |
|
| 89 |
+
|
| 90 |
+
| Top Words | Word Cloud Positif | Word Cloud Negatif |
|
| 91 |
+
| --- | --- | --- |
|
| 92 |
+
|  |  |  |
|
| 93 |
+
|
| 94 |
+
## Kata Kunci Bermakna
|
| 95 |
+
|
| 96 |
+
Beberapa kata yang paling membantu membaca arah sentimen:
|
| 97 |
+
|
| 98 |
+
| Kata | Positif Docs | Negatif Docs | Dominan |
|
| 99 |
+
| --- | ---: | ---: | --- |
|
| 100 |
+
| `enak` | 173 | 10 | Positif |
|
| 101 |
+
| `nyaman` | 54 | 10 | Positif |
|
| 102 |
+
| `ramah` | 37 | 9 | Positif |
|
| 103 |
+
| `terbaik` | 18 | 0 | Positif |
|
| 104 |
+
| `mahal` | 10 | 24 | Negatif |
|
| 105 |
+
| `harga` | 10 | 28 | Negatif |
|
| 106 |
+
| `buruk` | 0 | 19 | Negatif |
|
| 107 |
+
| `antrean` | 0 | 19 | Negatif |
|
| 108 |
+
| `lama` | 1 | 16 | Negatif |
|
| 109 |
+
|
| 110 |
+
File lengkapnya ada di:
|
| 111 |
+
|
| 112 |
+
```text
|
| 113 |
+
artifacts/classical/keyword_counts.csv
|
| 114 |
+
```
|
| 115 |
+
|
| 116 |
+
## Struktur Proyek
|
| 117 |
+
|
| 118 |
+
```text
|
| 119 |
+
.
|
| 120 |
+
├── app.py
|
| 121 |
+
├── Dockerfile
|
| 122 |
+
├── docker-compose.yml
|
| 123 |
+
├── INSTALL_DOCKER.md
|
| 124 |
+
├── data/processed/matcha_sentiment_binary.csv
|
| 125 |
+
├── docs/images/
|
| 126 |
+
├── artifacts/
|
| 127 |
+
├── models/best_transformer/
|
| 128 |
+
├── models/classical/best_model.joblib
|
| 129 |
+
├── scripts/
|
| 130 |
+
└── src/matcha_sentiment/
|
| 131 |
+
```
|
| 132 |
+
|
| 133 |
+
## Quick Start
|
| 134 |
+
|
| 135 |
+
```bash
|
| 136 |
+
docker build -t matcha-sentiment .
|
| 137 |
+
docker run --rm --gpus all -p 7860:7860 -v "${PWD}:/workspace" matcha-sentiment
|
| 138 |
+
```
|
| 139 |
+
|
| 140 |
+
Buka:
|
| 141 |
+
|
| 142 |
+
```text
|
| 143 |
+
http://localhost:7860
|
| 144 |
+
```
|
| 145 |
+
|
| 146 |
+
Panduan dari nol sampai deploy ada di [INSTALL_DOCKER.md](INSTALL_DOCKER.md).
|
| 147 |
+
|
| 148 |
+
## Catatan
|
| 149 |
+
|
| 150 |
+
Skor evaluasi sangat tinggi karena dataset masih kecil dan domainnya sempit. Model ini sudah bagus untuk demo, dashboard, dan eksperimen sentiment analysis review matcha, tetapi untuk production lintas brand atau lintas kategori sebaiknya ditambah data baru yang lebih beragam.
|
| 151 |
+
# matchaSentiment
|
app.py
ADDED
|
@@ -0,0 +1,183 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from __future__ import annotations
|
| 2 |
+
|
| 3 |
+
import json
|
| 4 |
+
import os
|
| 5 |
+
import sys
|
| 6 |
+
from pathlib import Path
|
| 7 |
+
|
| 8 |
+
import gradio as gr
|
| 9 |
+
import joblib
|
| 10 |
+
import numpy as np
|
| 11 |
+
import pandas as pd
|
| 12 |
+
import torch
|
| 13 |
+
from transformers import AutoModelForSequenceClassification, AutoTokenizer
|
| 14 |
+
|
| 15 |
+
sys.path.append(str(Path(__file__).resolve().parent / "src"))
|
| 16 |
+
|
| 17 |
+
from matcha_sentiment.config import ARTIFACT_DIR, ID2LABEL, MODEL_DIR
|
| 18 |
+
from matcha_sentiment.text import normalize_text
|
| 19 |
+
|
| 20 |
+
|
| 21 |
+
ROOT = Path(__file__).resolve().parent
|
| 22 |
+
FIG_DIR = ARTIFACT_DIR / "figures"
|
| 23 |
+
TRANSFORMER_MODEL_PATH = Path(os.getenv("MODEL_DIR", MODEL_DIR / "best_transformer"))
|
| 24 |
+
CLASSICAL_MODEL_PATH = Path(os.getenv("CLASSICAL_MODEL_PATH", MODEL_DIR / "classical" / "best_model.joblib"))
|
| 25 |
+
MODEL_ID = os.getenv("MODEL_ID", "")
|
| 26 |
+
|
| 27 |
+
|
| 28 |
+
class Predictor:
|
| 29 |
+
def __init__(self):
|
| 30 |
+
self.kind = "none"
|
| 31 |
+
self.device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
|
| 32 |
+
self.tokenizer = None
|
| 33 |
+
self.model = None
|
| 34 |
+
self.classical = None
|
| 35 |
+
self.load()
|
| 36 |
+
|
| 37 |
+
def load(self) -> None:
|
| 38 |
+
model_source = None
|
| 39 |
+
if (TRANSFORMER_MODEL_PATH / "config.json").exists():
|
| 40 |
+
model_source = str(TRANSFORMER_MODEL_PATH)
|
| 41 |
+
elif MODEL_ID:
|
| 42 |
+
model_source = MODEL_ID
|
| 43 |
+
|
| 44 |
+
if model_source:
|
| 45 |
+
self.tokenizer = AutoTokenizer.from_pretrained(model_source)
|
| 46 |
+
self.model = AutoModelForSequenceClassification.from_pretrained(model_source)
|
| 47 |
+
self.model.to(self.device)
|
| 48 |
+
self.model.eval()
|
| 49 |
+
self.kind = "transformer"
|
| 50 |
+
return
|
| 51 |
+
|
| 52 |
+
if CLASSICAL_MODEL_PATH.exists():
|
| 53 |
+
self.classical = joblib.load(CLASSICAL_MODEL_PATH)
|
| 54 |
+
self.kind = "classical"
|
| 55 |
+
|
| 56 |
+
def predict(self, text: str) -> tuple[dict[str, float] | None, str]:
|
| 57 |
+
text = normalize_text(text)
|
| 58 |
+
if not text:
|
| 59 |
+
return None, "Masukkan teks review."
|
| 60 |
+
|
| 61 |
+
if self.kind == "transformer":
|
| 62 |
+
encoded = self.tokenizer(
|
| 63 |
+
text,
|
| 64 |
+
truncation=True,
|
| 65 |
+
padding=True,
|
| 66 |
+
max_length=160,
|
| 67 |
+
return_tensors="pt",
|
| 68 |
+
)
|
| 69 |
+
encoded = {key: value.to(self.device) for key, value in encoded.items()}
|
| 70 |
+
with torch.no_grad():
|
| 71 |
+
logits = self.model(**encoded).logits
|
| 72 |
+
probs = torch.softmax(logits, dim=-1).detach().cpu().numpy()[0]
|
| 73 |
+
scores = {ID2LABEL[idx]: float(probs[idx]) for idx in range(len(probs))}
|
| 74 |
+
label = ID2LABEL[int(np.argmax(probs))]
|
| 75 |
+
return scores, f"{label} - {self.kind} on {self.device.type}"
|
| 76 |
+
|
| 77 |
+
if self.kind == "classical":
|
| 78 |
+
pred = int(self.classical.predict([text])[0])
|
| 79 |
+
if hasattr(self.classical, "predict_proba"):
|
| 80 |
+
proba = self.classical.predict_proba([text])
|
| 81 |
+
if proba is not None:
|
| 82 |
+
probs = proba[0]
|
| 83 |
+
return {ID2LABEL[idx]: float(probs[idx]) for idx in range(len(probs))}, f"{ID2LABEL[pred]} - classical"
|
| 84 |
+
if hasattr(self.classical, "decision_function"):
|
| 85 |
+
score = self.classical.decision_function([text])
|
| 86 |
+
if score is not None:
|
| 87 |
+
p_pos = 1.0 / (1.0 + np.exp(-float(np.ravel(score)[0])))
|
| 88 |
+
return {"Negatif": 1.0 - p_pos, "Positif": p_pos}, f"{ID2LABEL[pred]} - classical"
|
| 89 |
+
return {ID2LABEL[pred]: 1.0}, f"{ID2LABEL[pred]} - classical"
|
| 90 |
+
|
| 91 |
+
return None, "Model belum tersedia."
|
| 92 |
+
|
| 93 |
+
|
| 94 |
+
predictor = Predictor()
|
| 95 |
+
|
| 96 |
+
|
| 97 |
+
def predict_review(text: str):
|
| 98 |
+
return predictor.predict(text)
|
| 99 |
+
|
| 100 |
+
|
| 101 |
+
def read_json(path: Path) -> dict:
|
| 102 |
+
if not path.exists():
|
| 103 |
+
return {}
|
| 104 |
+
return json.loads(path.read_text(encoding="utf-8"))
|
| 105 |
+
|
| 106 |
+
|
| 107 |
+
def read_csv(path: Path) -> pd.DataFrame:
|
| 108 |
+
if not path.exists():
|
| 109 |
+
return pd.DataFrame()
|
| 110 |
+
return pd.read_csv(path)
|
| 111 |
+
|
| 112 |
+
|
| 113 |
+
def image_value(name: str):
|
| 114 |
+
path = FIG_DIR / name
|
| 115 |
+
return str(path) if path.exists() else None
|
| 116 |
+
|
| 117 |
+
|
| 118 |
+
summary = read_json(ROOT / "data" / "processed" / "summary.json")
|
| 119 |
+
classical_results = read_csv(ARTIFACT_DIR / "classical" / "results.csv")
|
| 120 |
+
transformer_results = read_csv(ARTIFACT_DIR / "transformers" / "results.csv")
|
| 121 |
+
top_words = read_csv(ARTIFACT_DIR / "classical" / "top_words_tfidf.csv")
|
| 122 |
+
keyword_counts = read_csv(ARTIFACT_DIR / "classical" / "keyword_counts.csv")
|
| 123 |
+
|
| 124 |
+
|
| 125 |
+
css = """
|
| 126 |
+
.metric-card textarea { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; }
|
| 127 |
+
.gradio-container { max-width: 1180px !important; }
|
| 128 |
+
"""
|
| 129 |
+
|
| 130 |
+
|
| 131 |
+
with gr.Blocks(title="Matcha Sentiment", css=css) as demo:
|
| 132 |
+
gr.Markdown("# Matcha Sentiment")
|
| 133 |
+
|
| 134 |
+
with gr.Tab("Prediksi"):
|
| 135 |
+
with gr.Row():
|
| 136 |
+
review = gr.Textbox(
|
| 137 |
+
label="Review",
|
| 138 |
+
lines=7,
|
| 139 |
+
value="Matchanya enak, tempatnya nyaman, tapi harganya agak mahal.",
|
| 140 |
+
)
|
| 141 |
+
with gr.Column():
|
| 142 |
+
output_label = gr.Label(label="Sentimen")
|
| 143 |
+
output_text = gr.Textbox(label="Model", interactive=False)
|
| 144 |
+
submit = gr.Button("Analisis", variant="primary")
|
| 145 |
+
submit.click(predict_review, inputs=review, outputs=[output_label, output_text])
|
| 146 |
+
gr.Examples(
|
| 147 |
+
examples=[
|
| 148 |
+
["Matchanya enak dan pelayanannya ramah."],
|
| 149 |
+
["Harganya terlalu mahal dan rasanya biasa saja."],
|
| 150 |
+
["Tempat nyaman, tetapi antrean lama dan staf kurang ramah."],
|
| 151 |
+
],
|
| 152 |
+
inputs=review,
|
| 153 |
+
)
|
| 154 |
+
|
| 155 |
+
with gr.Tab("Metrik"):
|
| 156 |
+
with gr.Row():
|
| 157 |
+
gr.JSON(value=summary, label="Dataset")
|
| 158 |
+
with gr.Row():
|
| 159 |
+
gr.Dataframe(value=classical_results, label="TF-IDF dan Word2Vec 10-fold", interactive=False)
|
| 160 |
+
with gr.Row():
|
| 161 |
+
gr.Dataframe(value=transformer_results, label="Transformer", interactive=False)
|
| 162 |
+
|
| 163 |
+
with gr.Tab("Visual"):
|
| 164 |
+
with gr.Row():
|
| 165 |
+
gr.Image(value=image_value("transformer_best_training_loss.png"), label="Training loss")
|
| 166 |
+
gr.Image(value=image_value("transformer_best_confusion_matrix.png"), label="Confusion matrix transformer")
|
| 167 |
+
with gr.Row():
|
| 168 |
+
gr.Image(value=image_value("transformer_best_roc_auc.png"), label="ROC AUC transformer")
|
| 169 |
+
gr.Image(value=image_value("classical_best_confusion_matrix.png"), label="Confusion matrix klasik")
|
| 170 |
+
with gr.Row():
|
| 171 |
+
gr.Image(value=image_value("classical_best_roc_auc.png"), label="ROC AUC klasik")
|
| 172 |
+
gr.Image(value=image_value("top_words_tfidf.png"), label="Top words")
|
| 173 |
+
with gr.Row():
|
| 174 |
+
gr.Image(value=image_value("wordcloud_positif.png"), label="Word cloud positif")
|
| 175 |
+
gr.Image(value=image_value("wordcloud_negatif.png"), label="Word cloud negatif")
|
| 176 |
+
|
| 177 |
+
with gr.Tab("Kata Kunci"):
|
| 178 |
+
gr.Dataframe(value=top_words, label="Top words TF-IDF", interactive=False)
|
| 179 |
+
gr.Dataframe(value=keyword_counts, label="Keyword penting", interactive=False)
|
| 180 |
+
|
| 181 |
+
|
| 182 |
+
if __name__ == "__main__":
|
| 183 |
+
demo.launch(server_name="0.0.0.0", server_port=int(os.getenv("PORT", "7860")))
|
artifacts/classical/fold_metrics.csv
ADDED
|
@@ -0,0 +1,101 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
accuracy,precision,recall,f1,roc_auc,feature,model,fold,n_valid
|
| 2 |
+
0.9605911330049262,0.979381443298969,0.9405940594059405,0.9595959595959596,0.9887400504756357,tfidf,logistic_regression,1,203
|
| 3 |
+
0.9753694581280788,1.0,0.9504950495049505,0.9746192893401016,0.9933022714036109,tfidf,logistic_regression,2,203
|
| 4 |
+
0.9753694581280788,0.9897959183673469,0.9603960396039604,0.9748743718592965,0.9939817511162882,tfidf,logistic_regression,3,203
|
| 5 |
+
0.9458128078817734,0.96875,0.9207920792079208,0.9441624365482234,0.9888371190060182,tfidf,logistic_regression,4,203
|
| 6 |
+
0.9408866995073891,0.96875,0.9117647058823529,0.9393939393939394,0.9936905455251408,tfidf,logistic_regression,5,203
|
| 7 |
+
0.9556650246305419,0.9345794392523364,0.9803921568627451,0.9569377990430622,0.9921374490390216,tfidf,logistic_regression,6,203
|
| 8 |
+
0.9753694581280788,0.970873786407767,0.9803921568627451,0.975609756097561,0.9968938070277615,tfidf,logistic_regression,7,203
|
| 9 |
+
0.9605911330049262,0.9895833333333334,0.9313725490196079,0.9595959595959596,0.9946612308289653,tfidf,logistic_regression,8,203
|
| 10 |
+
0.9504950495049505,0.9789473684210527,0.9207920792079208,0.9489795918367347,0.9940201940986177,tfidf,logistic_regression,9,202
|
| 11 |
+
0.9702970297029703,0.9797979797979798,0.9603960396039604,0.97,0.9972551710616606,tfidf,logistic_regression,10,202
|
| 12 |
+
0.9704433497536946,0.9896907216494846,0.9504950495049505,0.9696969696969697,0.9955348476024073,tfidf,linear_svm,1,203
|
| 13 |
+
0.9852216748768473,1.0,0.9702970297029703,0.9849246231155779,0.99524364201126,tfidf,linear_svm,2,203
|
| 14 |
+
0.9852216748768473,0.99,0.9801980198019802,0.9850746268656716,0.9951465734808775,tfidf,linear_svm,3,203
|
| 15 |
+
0.9458128078817734,0.9591836734693877,0.9306930693069307,0.9447236180904522,0.9890312560667831,tfidf,linear_svm,4,203
|
| 16 |
+
0.9458128078817734,0.9690721649484536,0.9215686274509803,0.9447236180904522,0.9958260531935546,tfidf,linear_svm,5,203
|
| 17 |
+
0.9556650246305419,0.9514563106796117,0.9607843137254902,0.9560975609756097,0.9938846825859057,tfidf,linear_svm,6,203
|
| 18 |
+
0.9901477832512315,0.9807692307692307,1.0,0.9902912621359223,0.9966996699669967,tfidf,linear_svm,7,203
|
| 19 |
+
0.9655172413793104,0.9797979797979798,0.9509803921568627,0.9651741293532339,0.9977674238012035,tfidf,linear_svm,8,203
|
| 20 |
+
0.9603960396039604,0.9894736842105263,0.9306930693069307,0.9591836734693877,0.9941182237035585,tfidf,linear_svm,9,202
|
| 21 |
+
0.9801980198019802,0.9801980198019802,0.9801980198019802,0.9801980198019802,0.9985295559258895,tfidf,linear_svm,10,202
|
| 22 |
+
0.9359605911330049,0.9150943396226415,0.9603960396039604,0.9371980676328503,0.9880605707629587,tfidf,random_forest,1,203
|
| 23 |
+
0.9458128078817734,0.9411764705882353,0.9504950495049505,0.9458128078817734,0.9909726266744321,tfidf,random_forest,2,203
|
| 24 |
+
0.9704433497536946,0.9702970297029703,0.9702970297029703,0.9702970297029703,0.9925257231605513,tfidf,random_forest,3,203
|
| 25 |
+
0.9507389162561576,0.941747572815534,0.9603960396039604,0.9509803921568627,0.9841778295476606,tfidf,random_forest,4,203
|
| 26 |
+
0.9408866995073891,0.9245283018867925,0.9607843137254902,0.9423076923076923,0.9881576392933411,tfidf,random_forest,5,203
|
| 27 |
+
0.916256157635468,0.8828828828828829,0.9607843137254902,0.92018779342723,0.9802950883323627,tfidf,random_forest,6,203
|
| 28 |
+
0.9310344827586207,0.9230769230769231,0.9411764705882353,0.9320388349514563,0.9866045428072219,tfidf,random_forest,7,203
|
| 29 |
+
0.9458128078817734,0.9504950495049505,0.9411764705882353,0.9458128078817734,0.9867986798679869,tfidf,random_forest,8,203
|
| 30 |
+
0.9356435643564357,0.9489795918367347,0.9207920792079208,0.9346733668341709,0.9912753651602784,tfidf,random_forest,9,202
|
| 31 |
+
0.9702970297029703,0.9611650485436893,0.9801980198019802,0.9705882352941176,0.9931379276541517,tfidf,random_forest,10,202
|
| 32 |
+
0.9408866995073891,0.9494949494949495,0.9306930693069307,0.94,0.9880605707629586,tfidf,extra_trees,1,203
|
| 33 |
+
0.9507389162561576,0.9504950495049505,0.9504950495049505,0.9504950495049505,0.9937876140555232,tfidf,extra_trees,2,203
|
| 34 |
+
0.9802955665024631,0.98989898989899,0.9702970297029703,0.98,0.9927198602213163,tfidf,extra_trees,3,203
|
| 35 |
+
0.9507389162561576,0.9690721649484536,0.9306930693069307,0.9494949494949495,0.9913609007959618,tfidf,extra_trees,4,203
|
| 36 |
+
0.9605911330049262,0.9795918367346939,0.9411764705882353,0.96,0.9951465734808775,tfidf,extra_trees,5,203
|
| 37 |
+
0.9310344827586207,0.9150943396226415,0.9509803921568627,0.9326923076923077,0.9867016113376043,tfidf,extra_trees,6,203
|
| 38 |
+
0.9507389162561576,0.9509803921568627,0.9509803921568627,0.9509803921568627,0.9919433119782566,tfidf,extra_trees,7,203
|
| 39 |
+
0.9310344827586207,0.94,0.9215686274509803,0.9306930693069307,0.9895165987186955,tfidf,extra_trees,8,203
|
| 40 |
+
0.9554455445544554,0.96,0.9504950495049505,0.9552238805970149,0.9940201940986177,tfidf,extra_trees,9,202
|
| 41 |
+
0.9702970297029703,0.9797979797979798,0.9603960396039604,0.97,0.9942162533084992,tfidf,extra_trees,10,202
|
| 42 |
+
0.896551724137931,0.9081632653061225,0.8811881188118812,0.8944723618090452,0.9764123471170647,tfidf,gradient_boosting,1,203
|
| 43 |
+
0.916256157635468,0.9375,0.8910891089108911,0.9137055837563451,0.9801980198019802,tfidf,gradient_boosting,2,203
|
| 44 |
+
0.9458128078817734,0.95,0.9405940594059405,0.945273631840796,0.9851970491166764,tfidf,gradient_boosting,3,203
|
| 45 |
+
0.9014778325123153,0.9354838709677419,0.8613861386138614,0.8969072164948454,0.9653950689186565,tfidf,gradient_boosting,4,203
|
| 46 |
+
0.9064039408866995,0.9278350515463918,0.8823529411764706,0.9045226130653267,0.9652494661230829,tfidf,gradient_boosting,5,203
|
| 47 |
+
0.9014778325123153,0.8942307692307693,0.9117647058823529,0.9029126213592233,0.967676179382644,tfidf,gradient_boosting,6,203
|
| 48 |
+
0.9359605911330049,0.9405940594059405,0.9313725490196079,0.9359605911330049,0.9850514463211028,tfidf,gradient_boosting,7,203
|
| 49 |
+
0.9064039408866995,0.946236559139785,0.8627450980392157,0.9025641025641026,0.9619976703552708,tfidf,gradient_boosting,8,203
|
| 50 |
+
0.8960396039603961,0.9166666666666666,0.8712871287128713,0.8934010152284264,0.9630428389373591,tfidf,gradient_boosting,9,202
|
| 51 |
+
0.9405940594059405,0.9494949494949495,0.9306930693069307,0.94,0.9850504852465445,tfidf,gradient_boosting,10,202
|
| 52 |
+
0.9704433497536946,0.9702970297029703,0.9702970297029703,0.9702970297029703,0.9916521063871093,word2vec,logistic_regression,1,203
|
| 53 |
+
0.9950738916256158,1.0,0.9900990099009901,0.9950248756218906,0.9990293146961755,word2vec,logistic_regression,2,203
|
| 54 |
+
0.9901477832512315,0.9900990099009901,0.9900990099009901,0.9900990099009901,0.9949524364201127,word2vec,logistic_regression,3,203
|
| 55 |
+
0.9458128078817734,0.96875,0.9207920792079208,0.9441624365482234,0.9911667637351971,word2vec,logistic_regression,4,203
|
| 56 |
+
0.9359605911330049,0.9405940594059405,0.9313725490196079,0.9359605911330049,0.9918462434478742,word2vec,logistic_regression,5,203
|
| 57 |
+
0.9507389162561576,0.9339622641509434,0.9705882352941176,0.9519230769230769,0.9905843525529023,word2vec,logistic_regression,6,203
|
| 58 |
+
0.9556650246305419,0.9428571428571428,0.9705882352941176,0.9565217391304348,0.9963113958454668,word2vec,logistic_regression,7,203
|
| 59 |
+
0.9704433497536946,0.98,0.9607843137254902,0.9702970297029703,0.9915550378567268,word2vec,logistic_regression,8,203
|
| 60 |
+
0.9554455445544554,0.9693877551020408,0.9405940594059405,0.9547738693467337,0.9929418684442702,word2vec,logistic_regression,9,202
|
| 61 |
+
0.9653465346534653,0.97,0.9603960396039604,0.9651741293532339,0.9954906381727282,word2vec,logistic_regression,10,202
|
| 62 |
+
0.9655172413793104,0.9795918367346939,0.9504950495049505,0.964824120603015,0.9859250630945448,word2vec,linear_svm,1,203
|
| 63 |
+
0.9901477832512315,1.0,0.9801980198019802,0.99,0.998932246165793,word2vec,linear_svm,2,203
|
| 64 |
+
0.9802955665024631,0.98989898989899,0.9702970297029703,0.98,0.9962143273150845,word2vec,linear_svm,3,203
|
| 65 |
+
0.9408866995073891,0.968421052631579,0.9108910891089109,0.9387755102040817,0.9890312560667832,word2vec,linear_svm,4,203
|
| 66 |
+
0.9458128078817734,0.9595959595959596,0.9313725490196079,0.945273631840796,0.9890312560667831,word2vec,linear_svm,5,203
|
| 67 |
+
0.9458128078817734,0.9252336448598131,0.9705882352941176,0.9473684210526315,0.9887400504756357,word2vec,linear_svm,6,203
|
| 68 |
+
0.9507389162561576,0.9339622641509434,0.9705882352941176,0.9519230769230769,0.9952436420112599,word2vec,linear_svm,7,203
|
| 69 |
+
0.9655172413793104,0.9797979797979798,0.9509803921568627,0.9651741293532339,0.9964084643758493,word2vec,linear_svm,8,203
|
| 70 |
+
0.9504950495049505,0.9690721649484536,0.9306930693069307,0.9494949494949495,0.9901970395059307,word2vec,linear_svm,9,202
|
| 71 |
+
0.9603960396039604,0.9603960396039604,0.9603960396039604,0.9603960396039604,0.9950004901480247,word2vec,linear_svm,10,202
|
| 72 |
+
0.9458128078817734,0.9411764705882353,0.9504950495049505,0.9458128078817734,0.9868957483983692,word2vec,random_forest,1,203
|
| 73 |
+
0.9901477832512315,1.0,0.9801980198019802,0.99,0.9985439720442633,word2vec,random_forest,2,203
|
| 74 |
+
0.9753694581280788,0.9897959183673469,0.9603960396039604,0.9748743718592965,0.9935934769947583,word2vec,random_forest,3,203
|
| 75 |
+
0.9507389162561576,0.9504950495049505,0.9504950495049505,0.9504950495049505,0.9907784896136672,word2vec,random_forest,4,203
|
| 76 |
+
0.9507389162561576,0.9509803921568627,0.9509803921568627,0.9509803921568627,0.9945641622985828,word2vec,random_forest,5,203
|
| 77 |
+
0.9310344827586207,0.9150943396226415,0.9509803921568627,0.9326923076923077,0.9862162686856921,word2vec,random_forest,6,203
|
| 78 |
+
0.9507389162561576,0.9423076923076923,0.9607843137254902,0.9514563106796117,0.9936905455251408,word2vec,random_forest,7,203
|
| 79 |
+
0.9605911330049262,0.97,0.9509803921568627,0.9603960396039604,0.9953407105416425,word2vec,random_forest,8,203
|
| 80 |
+
0.9603960396039604,1.0,0.9207920792079208,0.9587628865979382,0.9967650230369571,word2vec,random_forest,9,202
|
| 81 |
+
0.9752475247524752,0.98,0.9702970297029703,0.9751243781094527,0.9917655131849819,word2vec,random_forest,10,202
|
| 82 |
+
0.9556650246305419,0.9509803921568627,0.9603960396039604,0.9556650246305419,0.9923315860997864,word2vec,extra_trees,1,203
|
| 83 |
+
0.9852216748768473,1.0,0.9702970297029703,0.9849246231155779,0.9992234517569404,word2vec,extra_trees,2,203
|
| 84 |
+
0.9704433497536946,0.9797979797979798,0.9603960396039604,0.97,0.9923315860997864,word2vec,extra_trees,3,203
|
| 85 |
+
0.9605911330049262,0.9696969696969697,0.9504950495049505,0.96,0.993302271403611,word2vec,extra_trees,4,203
|
| 86 |
+
0.9507389162561576,0.9509803921568627,0.9509803921568627,0.9509803921568627,0.9939817511162881,word2vec,extra_trees,5,203
|
| 87 |
+
0.9507389162561576,0.9259259259259259,0.9803921568627451,0.9523809523809523,0.9889341875364006,word2vec,extra_trees,6,203
|
| 88 |
+
0.9605911330049262,0.9519230769230769,0.9705882352941176,0.9611650485436893,0.9947582993593477,word2vec,extra_trees,7,203
|
| 89 |
+
0.9556650246305419,0.9603960396039604,0.9509803921568627,0.9556650246305419,0.9937876140555233,word2vec,extra_trees,8,203
|
| 90 |
+
0.9603960396039604,0.9894736842105263,0.9306930693069307,0.9591836734693877,0.9962748750122538,word2vec,extra_trees,9,202
|
| 91 |
+
0.9752475247524752,0.98,0.9702970297029703,0.9751243781094527,0.9954906381727282,word2vec,extra_trees,10,202
|
| 92 |
+
0.9507389162561576,0.9504950495049505,0.9504950495049505,0.9504950495049505,0.9896136672490778,word2vec,gradient_boosting,1,203
|
| 93 |
+
0.9852216748768473,0.99,0.9801980198019802,0.9850746268656716,0.9990293146961755,word2vec,gradient_boosting,2,203
|
| 94 |
+
0.9605911330049262,0.9894736842105263,0.9306930693069307,0.9591836734693877,0.9947582993593478,word2vec,gradient_boosting,3,203
|
| 95 |
+
0.9458128078817734,0.9411764705882353,0.9504950495049505,0.9458128078817734,0.9926227916909338,word2vec,gradient_boosting,4,203
|
| 96 |
+
0.9605911330049262,0.9607843137254902,0.9607843137254902,0.9607843137254902,0.9946612308289653,word2vec,gradient_boosting,5,203
|
| 97 |
+
0.9211822660098522,0.9134615384615384,0.9313725490196079,0.9223300970873787,0.9867016113376044,word2vec,gradient_boosting,6,203
|
| 98 |
+
0.9507389162561576,0.9423076923076923,0.9607843137254902,0.9514563106796117,0.9947582993593477,word2vec,gradient_boosting,7,203
|
| 99 |
+
0.9704433497536946,0.9705882352941176,0.9705882352941176,0.9705882352941176,0.9946612308289652,word2vec,gradient_boosting,8,203
|
| 100 |
+
0.9603960396039604,0.9894736842105263,0.9306930693069307,0.9591836734693877,0.9954906381727282,word2vec,gradient_boosting,9,202
|
| 101 |
+
0.9653465346534653,0.9607843137254902,0.9702970297029703,0.9655172413793104,0.993333986864033,word2vec,gradient_boosting,10,202
|
artifacts/classical/keyword_counts.csv
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
term,positif_docs,negatif_docs,positif_rate,negatif_rate,dominant_label,lift
|
| 2 |
+
terbaik,49,0,0.048323471400394474,0.0,Positif,48323472.40039447
|
| 3 |
+
lezat,20,0,0.01972386587771203,0.0,Positif,19723866.87771203
|
| 4 |
+
mantap,18,0,0.01775147928994083,0.0,Positif,17751480.289940827
|
| 5 |
+
nikmat,9,0,0.008875739644970414,0.0,Positif,8875740.644970413
|
| 6 |
+
autentik,21,1,0.020710059171597635,0.0009861932938856016,Positif,20.999979720020566
|
| 7 |
+
enak,510,33,0.5029585798816568,0.03254437869822485,Positif,15.454545010396707
|
| 8 |
+
bagus,91,6,0.08974358974358974,0.005917159763313609,Positif,15.166664272500403
|
| 9 |
+
nyaman,208,23,0.20512820512820512,0.022682445759368838,Positif,9.043477906257104
|
| 10 |
+
direkomendasikan,55,7,0.054240631163708086,0.006903353057199211,Positif,7.857141863836878
|
| 11 |
+
ramah,108,16,0.10650887573964497,0.015779092702169626,Positif,6.749999635593773
|
| 12 |
+
manis,41,30,0.04043392504930966,0.029585798816568046,Positif,1.3666666542733337
|
| 13 |
+
pahit,23,21,0.022682445759368838,0.020710059171597635,Positif,1.0952380906394559
|
| 14 |
+
biasa,18,26,0.01775147928994083,0.02564102564102564,Negatif,0.6923077043076918
|
| 15 |
+
kurang,27,49,0.026627218934911243,0.048323471400394474,Negatif,0.5510204174543939
|
| 16 |
+
harganya,22,43,0.021696252465483234,0.04240631163708087,Negatif,0.5116279184932393
|
| 17 |
+
harga,31,62,0.03057199211045365,0.0611439842209073,Negatif,0.5000000081774192
|
| 18 |
+
kecewa,2,8,0.0019723865877712033,0.007889546351084813,Negatif,0.25000009506248794
|
| 19 |
+
lama,10,42,0.009861932938856016,0.04142011834319527,Negatif,0.23809525648979546
|
| 20 |
+
mahal,11,47,0.010848126232741617,0.046351084812623275,Negatif,0.23404256971661347
|
| 21 |
+
tidak,86,380,0.08481262327416174,0.3747534516765286,Negatif,0.22631579153819942
|
| 22 |
+
murah,2,9,0.0019723865877712033,0.008875739644970414,Negatif,0.222222309851842
|
| 23 |
+
menunggu,4,37,0.0039447731755424065,0.03648915187376726,Negatif,0.10810813255076633
|
| 24 |
+
antrean,2,34,0.0019723865877712033,0.03353057199211045,Negatif,0.05882355748096803
|
| 25 |
+
buruk,0,36,0.0,0.03550295857988166,Negatif,2.816666587330558e-08
|
artifacts/classical/oof_tfidf_extra_trees.csv
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
artifacts/classical/oof_tfidf_gradient_boosting.csv
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
artifacts/classical/oof_tfidf_linear_svm.csv
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
artifacts/classical/oof_tfidf_logistic_regression.csv
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
artifacts/classical/oof_tfidf_random_forest.csv
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
artifacts/classical/oof_word2vec_extra_trees.csv
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
artifacts/classical/oof_word2vec_gradient_boosting.csv
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
artifacts/classical/oof_word2vec_linear_svm.csv
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
artifacts/classical/oof_word2vec_logistic_regression.csv
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
artifacts/classical/oof_word2vec_random_forest.csv
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
artifacts/classical/report_tfidf_extra_trees.json
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"Negatif": {
|
| 3 |
+
"precision": 0.9464459591041869,
|
| 4 |
+
"recall": 0.9585798816568047,
|
| 5 |
+
"f1-score": 0.9524742773150416,
|
| 6 |
+
"support": 1014.0
|
| 7 |
+
},
|
| 8 |
+
"Positif": {
|
| 9 |
+
"precision": 0.958041958041958,
|
| 10 |
+
"recall": 0.9457593688362919,
|
| 11 |
+
"f1-score": 0.9518610421836228,
|
| 12 |
+
"support": 1014.0
|
| 13 |
+
},
|
| 14 |
+
"accuracy": 0.9521696252465484,
|
| 15 |
+
"macro avg": {
|
| 16 |
+
"precision": 0.9522439585730724,
|
| 17 |
+
"recall": 0.9521696252465484,
|
| 18 |
+
"f1-score": 0.9521676597493323,
|
| 19 |
+
"support": 2028.0
|
| 20 |
+
},
|
| 21 |
+
"weighted avg": {
|
| 22 |
+
"precision": 0.9522439585730724,
|
| 23 |
+
"recall": 0.9521696252465484,
|
| 24 |
+
"f1-score": 0.9521676597493323,
|
| 25 |
+
"support": 2028.0
|
| 26 |
+
}
|
| 27 |
+
}
|
artifacts/classical/report_tfidf_gradient_boosting.json
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"Negatif": {
|
| 3 |
+
"precision": 0.9000951474785919,
|
| 4 |
+
"recall": 0.9329388560157791,
|
| 5 |
+
"f1-score": 0.9162227602905569,
|
| 6 |
+
"support": 1014.0
|
| 7 |
+
},
|
| 8 |
+
"Positif": {
|
| 9 |
+
"precision": 0.9303991811668373,
|
| 10 |
+
"recall": 0.8964497041420119,
|
| 11 |
+
"f1-score": 0.9131089904570567,
|
| 12 |
+
"support": 1014.0
|
| 13 |
+
},
|
| 14 |
+
"accuracy": 0.9146942800788954,
|
| 15 |
+
"macro avg": {
|
| 16 |
+
"precision": 0.9152471643227146,
|
| 17 |
+
"recall": 0.9146942800788955,
|
| 18 |
+
"f1-score": 0.9146658753738068,
|
| 19 |
+
"support": 2028.0
|
| 20 |
+
},
|
| 21 |
+
"weighted avg": {
|
| 22 |
+
"precision": 0.9152471643227146,
|
| 23 |
+
"recall": 0.9146942800788954,
|
| 24 |
+
"f1-score": 0.9146658753738068,
|
| 25 |
+
"support": 2028.0
|
| 26 |
+
}
|
| 27 |
+
}
|
artifacts/classical/report_tfidf_linear_svm.json
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"Negatif": {
|
| 3 |
+
"precision": 0.9584942084942085,
|
| 4 |
+
"recall": 0.9792899408284024,
|
| 5 |
+
"f1-score": 0.968780487804878,
|
| 6 |
+
"support": 1014.0
|
| 7 |
+
},
|
| 8 |
+
"Positif": {
|
| 9 |
+
"precision": 0.9788306451612904,
|
| 10 |
+
"recall": 0.9575936883629191,
|
| 11 |
+
"f1-score": 0.9680957128614157,
|
| 12 |
+
"support": 1014.0
|
| 13 |
+
},
|
| 14 |
+
"accuracy": 0.9684418145956607,
|
| 15 |
+
"macro avg": {
|
| 16 |
+
"precision": 0.9686624268277495,
|
| 17 |
+
"recall": 0.9684418145956608,
|
| 18 |
+
"f1-score": 0.9684381003331468,
|
| 19 |
+
"support": 2028.0
|
| 20 |
+
},
|
| 21 |
+
"weighted avg": {
|
| 22 |
+
"precision": 0.9686624268277494,
|
| 23 |
+
"recall": 0.9684418145956607,
|
| 24 |
+
"f1-score": 0.9684381003331468,
|
| 25 |
+
"support": 2028.0
|
| 26 |
+
}
|
| 27 |
+
}
|
artifacts/classical/report_tfidf_logistic_regression.json
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"Negatif": {
|
| 3 |
+
"precision": 0.9473684210526315,
|
| 4 |
+
"recall": 0.9763313609467456,
|
| 5 |
+
"f1-score": 0.9616318601262749,
|
| 6 |
+
"support": 1014.0
|
| 7 |
+
},
|
| 8 |
+
"Positif": {
|
| 9 |
+
"precision": 0.9755849440488301,
|
| 10 |
+
"recall": 0.9457593688362919,
|
| 11 |
+
"f1-score": 0.9604406609914873,
|
| 12 |
+
"support": 1014.0
|
| 13 |
+
},
|
| 14 |
+
"accuracy": 0.9610453648915187,
|
| 15 |
+
"macro avg": {
|
| 16 |
+
"precision": 0.9614766825507308,
|
| 17 |
+
"recall": 0.9610453648915187,
|
| 18 |
+
"f1-score": 0.9610362605588811,
|
| 19 |
+
"support": 2028.0
|
| 20 |
+
},
|
| 21 |
+
"weighted avg": {
|
| 22 |
+
"precision": 0.9614766825507308,
|
| 23 |
+
"recall": 0.9610453648915187,
|
| 24 |
+
"f1-score": 0.961036260558881,
|
| 25 |
+
"support": 2028.0
|
| 26 |
+
}
|
| 27 |
+
}
|
artifacts/classical/report_tfidf_random_forest.json
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"Negatif": {
|
| 3 |
+
"precision": 0.9536757301107754,
|
| 4 |
+
"recall": 0.9339250493096647,
|
| 5 |
+
"f1-score": 0.9436970602889886,
|
| 6 |
+
"support": 1014.0
|
| 7 |
+
},
|
| 8 |
+
"Positif": {
|
| 9 |
+
"precision": 0.9352657004830918,
|
| 10 |
+
"recall": 0.9546351084812623,
|
| 11 |
+
"f1-score": 0.9448511469009273,
|
| 12 |
+
"support": 1014.0
|
| 13 |
+
},
|
| 14 |
+
"accuracy": 0.9442800788954635,
|
| 15 |
+
"macro avg": {
|
| 16 |
+
"precision": 0.9444707152969336,
|
| 17 |
+
"recall": 0.9442800788954635,
|
| 18 |
+
"f1-score": 0.944274103594958,
|
| 19 |
+
"support": 2028.0
|
| 20 |
+
},
|
| 21 |
+
"weighted avg": {
|
| 22 |
+
"precision": 0.9444707152969336,
|
| 23 |
+
"recall": 0.9442800788954635,
|
| 24 |
+
"f1-score": 0.9442741035949579,
|
| 25 |
+
"support": 2028.0
|
| 26 |
+
}
|
| 27 |
+
}
|
artifacts/classical/report_word2vec_extra_trees.json
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"Negatif": {
|
| 3 |
+
"precision": 0.9598039215686275,
|
| 4 |
+
"recall": 0.965483234714004,
|
| 5 |
+
"f1-score": 0.9626352015732547,
|
| 6 |
+
"support": 1014.0
|
| 7 |
+
},
|
| 8 |
+
"Positif": {
|
| 9 |
+
"precision": 0.9652777777777778,
|
| 10 |
+
"recall": 0.9595660749506904,
|
| 11 |
+
"f1-score": 0.9624134520276953,
|
| 12 |
+
"support": 1014.0
|
| 13 |
+
},
|
| 14 |
+
"accuracy": 0.9625246548323472,
|
| 15 |
+
"macro avg": {
|
| 16 |
+
"precision": 0.9625408496732026,
|
| 17 |
+
"recall": 0.9625246548323472,
|
| 18 |
+
"f1-score": 0.9625243268004751,
|
| 19 |
+
"support": 2028.0
|
| 20 |
+
},
|
| 21 |
+
"weighted avg": {
|
| 22 |
+
"precision": 0.9625408496732026,
|
| 23 |
+
"recall": 0.9625246548323472,
|
| 24 |
+
"f1-score": 0.962524326800475,
|
| 25 |
+
"support": 2028.0
|
| 26 |
+
}
|
| 27 |
+
}
|
artifacts/classical/report_word2vec_gradient_boosting.json
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"Negatif": {
|
| 3 |
+
"precision": 0.9539666993143977,
|
| 4 |
+
"recall": 0.960552268244576,
|
| 5 |
+
"f1-score": 0.9572481572481573,
|
| 6 |
+
"support": 1014.0
|
| 7 |
+
},
|
| 8 |
+
"Positif": {
|
| 9 |
+
"precision": 0.9602780536246276,
|
| 10 |
+
"recall": 0.9536489151873767,
|
| 11 |
+
"f1-score": 0.9569520039584364,
|
| 12 |
+
"support": 1014.0
|
| 13 |
+
},
|
| 14 |
+
"accuracy": 0.9571005917159763,
|
| 15 |
+
"macro avg": {
|
| 16 |
+
"precision": 0.9571223764695127,
|
| 17 |
+
"recall": 0.9571005917159763,
|
| 18 |
+
"f1-score": 0.9571000806032968,
|
| 19 |
+
"support": 2028.0
|
| 20 |
+
},
|
| 21 |
+
"weighted avg": {
|
| 22 |
+
"precision": 0.9571223764695126,
|
| 23 |
+
"recall": 0.9571005917159763,
|
| 24 |
+
"f1-score": 0.9571000806032968,
|
| 25 |
+
"support": 2028.0
|
| 26 |
+
}
|
| 27 |
+
}
|
artifacts/classical/report_word2vec_linear_svm.json
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"Negatif": {
|
| 3 |
+
"precision": 0.953307392996109,
|
| 4 |
+
"recall": 0.9664694280078896,
|
| 5 |
+
"f1-score": 0.9598432908912831,
|
| 6 |
+
"support": 1014.0
|
| 7 |
+
},
|
| 8 |
+
"Positif": {
|
| 9 |
+
"precision": 0.966,
|
| 10 |
+
"recall": 0.9526627218934911,
|
| 11 |
+
"f1-score": 0.9592850049652433,
|
| 12 |
+
"support": 1014.0
|
| 13 |
+
},
|
| 14 |
+
"accuracy": 0.9595660749506904,
|
| 15 |
+
"macro avg": {
|
| 16 |
+
"precision": 0.9596536964980544,
|
| 17 |
+
"recall": 0.9595660749506904,
|
| 18 |
+
"f1-score": 0.9595641479282632,
|
| 19 |
+
"support": 2028.0
|
| 20 |
+
},
|
| 21 |
+
"weighted avg": {
|
| 22 |
+
"precision": 0.9596536964980545,
|
| 23 |
+
"recall": 0.9595660749506904,
|
| 24 |
+
"f1-score": 0.9595641479282633,
|
| 25 |
+
"support": 2028.0
|
| 26 |
+
}
|
| 27 |
+
}
|
artifacts/classical/report_word2vec_logistic_regression.json
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"Negatif": {
|
| 3 |
+
"precision": 0.9607843137254902,
|
| 4 |
+
"recall": 0.9664694280078896,
|
| 5 |
+
"f1-score": 0.9636184857423795,
|
| 6 |
+
"support": 1014.0
|
| 7 |
+
},
|
| 8 |
+
"Positif": {
|
| 9 |
+
"precision": 0.9662698412698413,
|
| 10 |
+
"recall": 0.960552268244576,
|
| 11 |
+
"f1-score": 0.963402571711177,
|
| 12 |
+
"support": 1014.0
|
| 13 |
+
},
|
| 14 |
+
"accuracy": 0.9635108481262328,
|
| 15 |
+
"macro avg": {
|
| 16 |
+
"precision": 0.9635270774976658,
|
| 17 |
+
"recall": 0.9635108481262328,
|
| 18 |
+
"f1-score": 0.9635105287267782,
|
| 19 |
+
"support": 2028.0
|
| 20 |
+
},
|
| 21 |
+
"weighted avg": {
|
| 22 |
+
"precision": 0.9635270774976658,
|
| 23 |
+
"recall": 0.9635108481262328,
|
| 24 |
+
"f1-score": 0.9635105287267783,
|
| 25 |
+
"support": 2028.0
|
| 26 |
+
}
|
| 27 |
+
}
|
artifacts/classical/report_word2vec_random_forest.json
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"Negatif": {
|
| 3 |
+
"precision": 0.9550342130987293,
|
| 4 |
+
"recall": 0.9635108481262328,
|
| 5 |
+
"f1-score": 0.9592538046146294,
|
| 6 |
+
"support": 1014.0
|
| 7 |
+
},
|
| 8 |
+
"Positif": {
|
| 9 |
+
"precision": 0.96318407960199,
|
| 10 |
+
"recall": 0.9546351084812623,
|
| 11 |
+
"f1-score": 0.9588905398712234,
|
| 12 |
+
"support": 1014.0
|
| 13 |
+
},
|
| 14 |
+
"accuracy": 0.9590729783037475,
|
| 15 |
+
"macro avg": {
|
| 16 |
+
"precision": 0.9591091463503596,
|
| 17 |
+
"recall": 0.9590729783037475,
|
| 18 |
+
"f1-score": 0.9590721722429264,
|
| 19 |
+
"support": 2028.0
|
| 20 |
+
},
|
| 21 |
+
"weighted avg": {
|
| 22 |
+
"precision": 0.9591091463503597,
|
| 23 |
+
"recall": 0.9590729783037475,
|
| 24 |
+
"f1-score": 0.9590721722429264,
|
| 25 |
+
"support": 2028.0
|
| 26 |
+
}
|
| 27 |
+
}
|
artifacts/classical/results.csv
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
accuracy,precision,recall,f1,roc_auc,feature,model,folds,n
|
| 2 |
+
0.9684418145956607,0.9788306451612904,0.9575936883629191,0.9680957128614157,0.9951448945531786,tfidf,linear_svm,10,2028
|
| 3 |
+
0.9635108481262328,0.9662698412698413,0.960552268244576,0.963402571711177,0.9938698458270603,word2vec,logistic_regression,10,2028
|
| 4 |
+
0.9625246548323472,0.9652777777777778,0.9595660749506904,0.9624134520276953,0.9939816922065442,word2vec,extra_trees,10,2028
|
| 5 |
+
0.9610453648915187,0.9755849440488301,0.9457593688362919,0.9604406609914873,0.993330065473898,tfidf,logistic_regression,10,2028
|
| 6 |
+
0.9595660749506904,0.966,0.9526627218934911,0.9592850049652433,0.9924450202101543,word2vec,linear_svm,10,2028
|
| 7 |
+
0.9590729783037475,0.96318407960199,0.9546351084812623,0.9588905398712234,0.9926978902855098,word2vec,random_forest,10,2028
|
| 8 |
+
0.9571005917159763,0.9602780536246276,0.9536489151873767,0.9569520039584364,0.9932901898081689,word2vec,gradient_boosting,10,2028
|
| 9 |
+
0.9521696252465484,0.958041958041958,0.9457593688362919,0.9518610421836228,0.9917681064699727,tfidf,extra_trees,10,2028
|
| 10 |
+
0.9442800788954635,0.9352657004830918,0.9546351084812623,0.9448511469009273,0.9882347334554891,tfidf,random_forest,10,2028
|
| 11 |
+
0.9146942800788954,0.9303991811668373,0.8964497041420119,0.9131089904570567,0.9734953257939148,tfidf,gradient_boosting,10,2028
|
artifacts/classical/top_words_tfidf.csv
ADDED
|
@@ -0,0 +1,121 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
term,weight,label_name
|
| 2 |
+
enak,6.779675935425394,Positif
|
| 3 |
+
bagus,2.8658279629291394,Positif
|
| 4 |
+
nyaman,2.8581534389813177,Positif
|
| 5 |
+
tempatnya,2.627008864949178,Positif
|
| 6 |
+
terbaik,2.1523917977830203,Positif
|
| 7 |
+
suka,2.054488930967297,Positif
|
| 8 |
+
ramah,2.038783583222844,Positif
|
| 9 |
+
sangat enak,1.7820287632132352,Positif
|
| 10 |
+
matcha-nya,1.7207730656764704,Positif
|
| 11 |
+
enak dan,1.7081207989749454,Positif
|
| 12 |
+
mantap,1.6769131021022596,Positif
|
| 13 |
+
pelayanan,1.6575130843871289,Positif
|
| 14 |
+
enak sekali,1.631890295781384,Positif
|
| 15 |
+
braga,1.5049659927850072,Positif
|
| 16 |
+
direkomendasikan,1.4197258991884931,Positif
|
| 17 |
+
lezat,1.3810395926163632,Positif
|
| 18 |
+
autentik,1.322057364683747,Positif
|
| 19 |
+
menarik,1.271781010383556,Positif
|
| 20 |
+
tidak terlalu,1.2681605237449671,Positif
|
| 21 |
+
mencoba,1.24669576582905,Positif
|
| 22 |
+
wajib,1.2148858565278498,Positif
|
| 23 |
+
luar biasa,1.198937692181637,Positif
|
| 24 |
+
keren,1.189645695081413,Positif
|
| 25 |
+
feel,1.1633305392227709,Positif
|
| 26 |
+
feel matcha,1.1633305392227709,Positif
|
| 27 |
+
menyenangkan,1.1611621129155691,Positif
|
| 28 |
+
nyaman dan,1.157465948684494,Positif
|
| 29 |
+
sini,1.1161567380461428,Positif
|
| 30 |
+
pelayanannya,1.1021108164083118,Positif
|
| 31 |
+
pecinta,1.088950917653697,Positif
|
| 32 |
+
pecinta matcha,1.088950917653697,Positif
|
| 33 |
+
dicoba,1.0513872719613726,Positif
|
| 34 |
+
luar,1.0491663284442232,Positif
|
| 35 |
+
cocok,1.0424196999756452,Positif
|
| 36 |
+
bandung,1.037843601039172,Positif
|
| 37 |
+
sangat direkomendasikan,1.0357254221127778,Positif
|
| 38 |
+
favorit,1.011042823809348,Positif
|
| 39 |
+
terlalu manis,0.981645744103316,Positif
|
| 40 |
+
terjangkau,0.973202784805922,Positif
|
| 41 |
+
nikmat,0.9395737633825911,Positif
|
| 42 |
+
creamy,0.9151266830322586,Positif
|
| 43 |
+
yang bagus,0.9079359550103053,Positif
|
| 44 |
+
suasananya,0.9069920858067819,Positif
|
| 45 |
+
matchanya enak,0.8836480085517279,Positif
|
| 46 |
+
di braga,0.876123980986992,Positif
|
| 47 |
+
cepat,0.8748172674136202,Positif
|
| 48 |
+
matcha enak,0.8709581560752803,Positif
|
| 49 |
+
sangat nyaman,0.8692630220462553,Positif
|
| 50 |
+
pilihan,0.8669644030165948,Positif
|
| 51 |
+
good,0.8646022512513619,Positif
|
| 52 |
+
matcha terbaik,0.8621637427659486,Positif
|
| 53 |
+
rasanya enak,0.8468944055617108,Positif
|
| 54 |
+
sangat suka,0.8307670140605237,Positif
|
| 55 |
+
lumayan,0.8289733956058337,Positif
|
| 56 |
+
ramah dan,0.8105082760482645,Positif
|
| 57 |
+
tempatnya nyaman,0.8003474687367536,Positif
|
| 58 |
+
lucu,0.7853360623739081,Positif
|
| 59 |
+
suasana,0.7818980428197028,Positif
|
| 60 |
+
ke sini,0.7725116187773643,Positif
|
| 61 |
+
menyukai,0.7715396284164138,Positif
|
| 62 |
+
tidak,-3.7154029272590687,Negatif
|
| 63 |
+
banget,-1.8565624312210731,Negatif
|
| 64 |
+
beli,-1.7407328065710748,Negatif
|
| 65 |
+
sangat tidak,-1.5329173647435836,Negatif
|
| 66 |
+
pelanggan,-1.5293160222843036,Negatif
|
| 67 |
+
pesanan,-1.4286890774714087,Negatif
|
| 68 |
+
kayak,-1.3870013285793157,Negatif
|
| 69 |
+
bikin,-1.3699115300927542,Negatif
|
| 70 |
+
area,-1.2964871224998862,Negatif
|
| 71 |
+
kasir,-1.288853516329438,Negatif
|
| 72 |
+
gelas,-1.22731379211243,Negatif
|
| 73 |
+
buruk,-1.2158849363519226,Negatif
|
| 74 |
+
terlalu,-1.1562493904459072,Negatif
|
| 75 |
+
malah,-1.1352520953426055,Negatif
|
| 76 |
+
tidak ada,-1.0817406575783368,Negatif
|
| 77 |
+
jam,-1.0680265948999101,Negatif
|
| 78 |
+
meja,-1.0396674798600292,Negatif
|
| 79 |
+
air,-1.026312085826463,Negatif
|
| 80 |
+
padahal,-1.0214326834781853,Negatif
|
| 81 |
+
pakai,-0.9944526416621025,Negatif
|
| 82 |
+
bau,-0.9530867517678938,Negatif
|
| 83 |
+
gerai,-0.9488617313357083,Negatif
|
| 84 |
+
mahal,-0.9450652598687478,Negatif
|
| 85 |
+
staf,-0.8896046049224152,Negatif
|
| 86 |
+
keras,-0.8504849297916145,Negatif
|
| 87 |
+
sangat buruk,-0.8495769270692559,Negatif
|
| 88 |
+
menunggu,-0.8399522169109798,Negatif
|
| 89 |
+
kurang,-0.8220857045133737,Negatif
|
| 90 |
+
lama,-0.8052777380257831,Negatif
|
| 91 |
+
teh,-0.7908825395876438,Negatif
|
| 92 |
+
sepertinya,-0.7769467947991883,Negatif
|
| 93 |
+
biasa saja,-0.770782100556984,Negatif
|
| 94 |
+
kotor,-0.760729009779986,Negatif
|
| 95 |
+
dikasih,-0.7540166847646226,Negatif
|
| 96 |
+
bubuk,-0.739718714033697,Negatif
|
| 97 |
+
harga,-0.7324491727275422,Negatif
|
| 98 |
+
beli matcha,-0.7321285665156619,Negatif
|
| 99 |
+
antrean,-0.7282306924125145,Negatif
|
| 100 |
+
masuk,-0.7234527379574038,Negatif
|
| 101 |
+
sempit,-0.7183160892820316,Negatif
|
| 102 |
+
cuma,-0.7102850475433332,Negatif
|
| 103 |
+
hanya,-0.7021569999486995,Negatif
|
| 104 |
+
tidak nyaman,-0.7018459658083473,Negatif
|
| 105 |
+
minta,-0.7017103575877348,Negatif
|
| 106 |
+
plastik,-0.7008926248184666,Negatif
|
| 107 |
+
menit,-0.6907597159178882,Negatif
|
| 108 |
+
jauh,-0.6907428639139481,Negatif
|
| 109 |
+
pesan,-0.687907417251262,Negatif
|
| 110 |
+
kualitas,-0.685890280204763,Negatif
|
| 111 |
+
lengket,-0.6821969933381855,Negatif
|
| 112 |
+
aneh,-0.6747821234672332,Negatif
|
| 113 |
+
tumpah,-0.666470971743141,Negatif
|
| 114 |
+
krimnya,-0.6574423085479482,Negatif
|
| 115 |
+
satu,-0.6374849785170068,Negatif
|
| 116 |
+
waktu,-0.6349304476706374,Negatif
|
| 117 |
+
zonk,-0.6282434592606427,Negatif
|
| 118 |
+
panas,-0.6201632756305473,Negatif
|
| 119 |
+
ukuran,-0.6152009043724824,Negatif
|
| 120 |
+
porsi,-0.6006432748736134,Negatif
|
| 121 |
+
tangan,-0.600042149862903,Negatif
|
artifacts/figures/classical_best_confusion_matrix.png
ADDED
|
Git LFS Details
|
artifacts/figures/classical_best_roc_auc.png
ADDED
|
Git LFS Details
|
artifacts/figures/confusion_matrix_ChristopherA08__IndoELECTRA.png
ADDED
|
Git LFS Details
|
artifacts/figures/confusion_matrix_cahya__distilbert-base-indonesian.png
ADDED
|
Git LFS Details
|
artifacts/figures/confusion_matrix_flax-community__indonesian-roberta-base.png
ADDED
|
Git LFS Details
|
artifacts/figures/confusion_matrix_indobenchmark__indobert-base-p1.png
ADDED
|
Git LFS Details
|
artifacts/figures/confusion_matrix_indobenchmark__indobert-base-p2.png
ADDED
|
Git LFS Details
|
artifacts/figures/confusion_matrix_indolem__indobert-base-uncased.png
ADDED
|
Git LFS Details
|
artifacts/figures/confusion_matrix_indolem__indobertweet-base-uncased.png
ADDED
|
Git LFS Details
|
artifacts/figures/confusion_matrix_naufalihsan__indonesian-sbert-large.png
ADDED
|
Git LFS Details
|
artifacts/figures/confusion_matrix_sentence-transformers__paraphrase-multilingual-MiniLM-L12-v2.png
ADDED
|
Git LFS Details
|
artifacts/figures/confusion_matrix_w11wo__indonesian-roberta-base-sentiment-classifier.png
ADDED
|
Git LFS Details
|
artifacts/figures/roc_auc_ChristopherA08__IndoELECTRA.png
ADDED
|
Git LFS Details
|
artifacts/figures/roc_auc_cahya__distilbert-base-indonesian.png
ADDED
|
Git LFS Details
|
artifacts/figures/roc_auc_flax-community__indonesian-roberta-base.png
ADDED
|
Git LFS Details
|
artifacts/figures/roc_auc_indobenchmark__indobert-base-p1.png
ADDED
|
Git LFS Details
|
artifacts/figures/roc_auc_indobenchmark__indobert-base-p2.png
ADDED
|
Git LFS Details
|
artifacts/figures/roc_auc_indolem__indobert-base-uncased.png
ADDED
|
Git LFS Details
|
artifacts/figures/roc_auc_indolem__indobertweet-base-uncased.png
ADDED
|
Git LFS Details
|
artifacts/figures/roc_auc_naufalihsan__indonesian-sbert-large.png
ADDED
|
Git LFS Details
|
artifacts/figures/roc_auc_sentence-transformers__paraphrase-multilingual-MiniLM-L12-v2.png
ADDED
|
Git LFS Details
|
artifacts/figures/roc_auc_w11wo__indonesian-roberta-base-sentiment-classifier.png
ADDED
|
Git LFS Details
|