first commit
This commit is contained in:
commit
88ac7037e4
|
|
@ -0,0 +1,113 @@
|
||||||
|
# 🧠 Analisis Sentimen Komentar TikTok (TF-IDF & Logistic Regression)
|
||||||
|
|
||||||
|
Sistem aplikasi web untuk klasifikasi dan analisis sentimen komentar video TikTok berbahasa Indonesia ke dalam kategori **POSITIF** atau **NEGATIF**. Sistem ditenagai oleh representasi fitur **TF-IDF (1..2 n-gram)** dan model **Logistic Regression**.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✨ Fitur Utama Sistem
|
||||||
|
|
||||||
|
1. **Dashboard & Analisis Video TikTok**:
|
||||||
|
- Memasukkan tautan video TikTok (`https://www.tiktok.com/@.../video/...`).
|
||||||
|
- Menganalisis komentar secara otomatis (Mode Demo 300 komentar realistis) atau input komentar manual (*one comment per line*).
|
||||||
|
- Menghitung persentase sentimen, rasio sentimen, dan diagram visual (*Donut Chart*).
|
||||||
|
2. **Riwayat Analisis (History)**:
|
||||||
|
- Menyimpan seluruh riwayat analisis ke database SQLite lokal (`sentiment_tiktok.db`).
|
||||||
|
- Tabel komentar interaktif dengan filter (*Semua, Positif, Negatif*) dan paginasi.
|
||||||
|
3. **Pengujian Model & Confusion Matrix (Admin)**:
|
||||||
|
- Evaluasi komprehensif performa model Logistic Regression & ekstraksi TF-IDF.
|
||||||
|
- Perhitungan otomatis Akurasi, Presisi, Recall, F1-Score, dan Matriks Kebingungan 2x2 (*True Positive, True Negative, False Positive, False Negative*).
|
||||||
|
- Mendukung 3 mode sumber data uji: Dataset Benchmark Bawaan (60 sampel seimbang), Upload File CSV/TXT berlabel, dan Input Manual Batch.
|
||||||
|
- Tabel Classification Report formal standar Scikit-Learn dan rincian prediksi per sampel komentar.
|
||||||
|
- Ekspor laporan pengujian ke format CSV dan cetak PDF.
|
||||||
|
4. **Autentikasi Pengguna**:
|
||||||
|
- Sistem login dan registrasi akun peneliti.
|
||||||
|
- Akun default: `admin@tiktok.com` (password: `admin123`).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📁 Struktur Direktori Proyek
|
||||||
|
|
||||||
|
```text
|
||||||
|
project/
|
||||||
|
├── app.py # Server Flask utama (REST API, Autentikasi, Analisis TikTok, Static)
|
||||||
|
├── nlp.py # Modul pra-pemrosesan teks NLP (9 tahapan pembersihan)
|
||||||
|
├── models.py # Modul pemuatan model Logistic Regression & ekstraksi TF-IDF
|
||||||
|
├── model_logistic_regression.pkl # Bobot model Logistic Regression hasil latih
|
||||||
|
├── tfidf_vectorizer.pkl # Objek TF-IDF Vectorizer terlatih (4.732 fitur n-gram)
|
||||||
|
├── kamus_alay.csv # Dataset kamus normalisasi kata alay/slang
|
||||||
|
├── requirements.txt # Daftar pustaka Python yang dibutuhkan
|
||||||
|
├── Readme.md # Dokumentasi panduan lengkap (file ini)
|
||||||
|
├── PENJELASAN_PROJECT.txt # Dokumentasi teknis & simulasi perhitungan matematis
|
||||||
|
├── sentiment_tiktok.db # Database SQLite lokal untuk riwayat & pengguna
|
||||||
|
│
|
||||||
|
└── frontend/ # Aset Antarmuka Pengguna (Web SPA)
|
||||||
|
├── index.html # Halaman utama aplikasi Analisis Sentimen TikTok
|
||||||
|
├── style.css # Berkas tata letak dan tema modern
|
||||||
|
└── app.js # Logika SPA (Router, Auth, Dashboard, Riwayat, Donut Chart)
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ⚙️ Persyaratan Sistem & Dependensi
|
||||||
|
|
||||||
|
Proyek ini menggunakan **Python 3.11 / 3.12**.
|
||||||
|
|
||||||
|
| Pustaka | Versi | Kegunaan |
|
||||||
|
|---|---|---|
|
||||||
|
| **Flask** | `>=3.0.0` | Server web & penyedia endpoint REST API |
|
||||||
|
| **scikit-learn** | `>=1.3.0` | Model Logistic Regression & TF-IDF Vectorizer |
|
||||||
|
| **joblib** | `>=1.3.0` | Deserialisasi file model `.pkl` |
|
||||||
|
| **pandas** | `>=2.0.0` | Pembacaan dataset kamus kata gaul CSV |
|
||||||
|
| **nltk** | `>=3.8.0` | Tokenisasi kata (`word_tokenize`) & korpus stopword |
|
||||||
|
| **Sastrawi** | `>=1.0.1` | Algoritma stemming kata dasar bahasa Indonesia |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚀 Cara Menjalankan Aplikasi
|
||||||
|
|
||||||
|
### 1. Buka PowerShell / Terminal pada folder proyek
|
||||||
|
```powershell
|
||||||
|
cd "d:\SEMESTER 7\Tugas Akhir\project"
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Aktifkan Virtual Environment
|
||||||
|
```powershell
|
||||||
|
.\venv\Scripts\activate
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. Jalankan Server Flask
|
||||||
|
```powershell
|
||||||
|
python App.py
|
||||||
|
```
|
||||||
|
*(Atau `.\venv\Scripts\python.exe App.py`)*
|
||||||
|
|
||||||
|
### 4. Buka di Browser
|
||||||
|
Kunjungi alamat:
|
||||||
|
```
|
||||||
|
http://127.0.0.1:5000
|
||||||
|
```
|
||||||
|
- **Login Akun Bawaan**:
|
||||||
|
- Email: `admin@tiktok.com`
|
||||||
|
- Password: `admin123`
|
||||||
|
- Atau klik **"Daftar"** untuk membuat akun baru.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📡 Dokumentasi Endpoint REST API
|
||||||
|
|
||||||
|
| Method | Endpoint | Keterangan |
|
||||||
|
|---|---|---|
|
||||||
|
| `GET` | `/` atau `/index.html` | Memuat aplikasi web utama (TikTok Sentiment Analysis) |
|
||||||
|
| `POST` | `/api/login` | Autentikasi pengguna (`email`, `password`) |
|
||||||
|
| `POST` | `/api/register` | Mendaftarkan pengguna baru |
|
||||||
|
| `GET` | `/api/me` | Memeriksa sesi pengguna aktif |
|
||||||
|
| `POST` | `/api/logout` | Mengakhiri sesi pengguna |
|
||||||
|
| `GET` | `/api/stats` | Statistik total analisis, komentar, positif, negatif |
|
||||||
|
| `GET` | `/api/analyses` | Mengambil seluruh riwayat analisis pengguna |
|
||||||
|
| `POST` | `/api/analyses` | Menganalisis video TikTok baru (`tiktok_url`, `manual_comments`) |
|
||||||
|
| `GET` | `/api/analyses/<id>` | Detail analisis video (ringkasan persentase sentimen) |
|
||||||
|
| `DELETE` | `/api/analyses/<id>` | Menghapus data analisis dan komentarnya |
|
||||||
|
| `GET` | `/api/analyses/<id>/comments` | Daftar komentar dengan filter (`POSITIF`/`NEGATIF`) dan paginasi |
|
||||||
|
| `POST` | `/predict` | Inferensi satu komentar langsung via REST API |
|
||||||
|
| `GET` | `/api/model-test/benchmark` | Mengambil dataset benchmark terkurasi 60 sampel berlabel |
|
||||||
|
| `POST` | `/api/model-test/evaluate` | Evaluasi batch model menghasilkan Confusion Matrix & classification report |
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,98 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="id">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>Analisis Sentimen Komentar TikTok | TF-IDF & Logistic Regression</title>
|
||||||
|
<meta name="description"
|
||||||
|
content="Sistem analisis sentimen komentar TikTok menggunakan ekstraksi fitur TF-IDF dan algoritma Logistic Regression dengan dukungan database MySQL Laragon.">
|
||||||
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||||
|
<link
|
||||||
|
href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600&family=Plus+Jakarta+Sans:wght@400;500;600;700;800&display=swap"
|
||||||
|
rel="stylesheet">
|
||||||
|
<link rel="icon"
|
||||||
|
href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><rect width='100' height='100' rx='25' fill='%230f172a'/><path d='M65 30c-5 0-9.5-2.2-12.5-5.6V62a15 15 0 1 1-15-15c2.3 0 4.5.5 6.4 1.5v9.1A6.8 6.8 0 1 0 50 64V18h8.5c1.4 6 5.8 10.5 11.5 11.5v6.5A16.5 16.5 0 0 1 65 30z' fill='%2325f4ee'/><path d='M62 33c-5 0-9.5-2.2-12.5-5.6V65a15 15 0 1 1-15-15c2.3 0 4.5.5 6.4 1.5v9.1A6.8 6.8 0 1 0 47 67V21h8.5c1.4 6 5.8 10.5 11.5 11.5v6.5A16.5 16.5 0 0 1 62 33z' fill='%23fe2c55'/></svg>">
|
||||||
|
<link rel="stylesheet" href="/static/style.css">
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div class="shell">
|
||||||
|
<header class="top" id="topbar" hidden>
|
||||||
|
<div class="brand-wrap">
|
||||||
|
<a class="brand" href="#/">
|
||||||
|
<div class="brand-icon">
|
||||||
|
<svg width="22" height="22" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path
|
||||||
|
d="M16.5 3C14.5 5.5 12 6.5 9 6.5V15.5C9 18 6.8 20 4.5 20C2.2 20 0 18 0 15.5C0 13 2 11 4.5 11C5.2 11 6 11.2 6.5 11.5V6.8C5.8 6.6 5.2 6.5 4.5 6.5C1.8 6.5 -0.5 9 -0.5 12C-0.5 15 1.8 17.5 4.5 17.5C7.2 17.5 9.5 15 9.5 12V3H16.5Z"
|
||||||
|
fill="#25f4ee" transform="translate(4, 2)" />
|
||||||
|
<path
|
||||||
|
d="M18.5 5C16.5 7.5 14 8.5 11 8.5V17.5C11 20 8.8 22 6.5 22C4.2 22 2 20 2 17.5C2 15 4 13 6.5 13C7.2 13 8 13.2 8.5 13.5V8.8C7.8 8.6 7.2 8.5 6.5 8.5C3.8 8.5 1.5 11 1.5 14C1.5 17 3.8 19.5 6.5 19.5C9.2 19.5 11.5 17 11.5 14V5H18.5Z"
|
||||||
|
fill="#fe2c55" transform="translate(3, 1)" />
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
<div class="brand-text">
|
||||||
|
<span class="brand-title">Sentimen TikTok</span>
|
||||||
|
<span class="brand-subtitle">TF-IDF & Logistic Regression</span>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
<div class="db-pill" id="dbStatusBadge" title="Status Koneksi Database">
|
||||||
|
<span class="db-dot"></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<nav class="nav">
|
||||||
|
<a href="#/" data-nav="dashboard" class="nav-item">
|
||||||
|
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
||||||
|
<rect x="3" y="3" width="7" height="9" rx="1" />
|
||||||
|
<rect x="14" y="3" width="7" height="5" rx="1" />
|
||||||
|
<rect x="14" y="12" width="7" height="9" rx="1" />
|
||||||
|
<rect x="3" y="16" width="7" height="5" rx="1" />
|
||||||
|
</svg>
|
||||||
|
<span>Dashboard</span>
|
||||||
|
</a>
|
||||||
|
<a href="#/playground" data-nav="playground" class="nav-item">
|
||||||
|
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
||||||
|
<path
|
||||||
|
d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z" />
|
||||||
|
<polyline points="3.27 6.96 12 12.01 20.73 6.96" />
|
||||||
|
<line x1="12" y1="22.08" x2="12" y2="12" />
|
||||||
|
</svg>
|
||||||
|
<span>Uji Cepat Kata</span>
|
||||||
|
</a>
|
||||||
|
<a href="#/history" data-nav="history" class="nav-item">
|
||||||
|
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
||||||
|
<circle cx="12" cy="12" r="10" />
|
||||||
|
<polyline points="12 6 12 12 16 14" />
|
||||||
|
</svg>
|
||||||
|
<span>Riwayat</span>
|
||||||
|
</a>
|
||||||
|
<a href="#/evaluation" data-nav="evaluation" class="nav-item nav-item-admin" id="navEvaluation">
|
||||||
|
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
||||||
|
<rect x="3" y="3" width="18" height="18" rx="2" />
|
||||||
|
<path d="M3 9h18" />
|
||||||
|
<path d="M9 21V9" />
|
||||||
|
</svg>
|
||||||
|
<span>Pengujian Model</span>
|
||||||
|
<span class="admin-pill">Admin</span>
|
||||||
|
</a>
|
||||||
|
<div class="user-chip">
|
||||||
|
<div class="avatar-circle" id="userAvatar">-</div>
|
||||||
|
<span class="who" id="whoami"></span>
|
||||||
|
</div>
|
||||||
|
<button class="btn-logout" id="btnLogout" title="Keluar">
|
||||||
|
<svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
||||||
|
<path d="M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4" />
|
||||||
|
<polyline points="16 17 21 12 16 7" />
|
||||||
|
<line x1="21" y1="12" x2="9" y2="12" />
|
||||||
|
</svg>
|
||||||
|
<span>Keluar</span>
|
||||||
|
</button>
|
||||||
|
</nav>
|
||||||
|
</header>
|
||||||
|
<main id="app" aria-live="polite"></main>
|
||||||
|
</div>
|
||||||
|
<script src="/static/app.js"></script>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
|
@ -0,0 +1,125 @@
|
||||||
|
"""
|
||||||
|
Models.py - Modul Model Klasifikasi dan Vektorisasi TF-IDF
|
||||||
|
Proyek Tugas Akhir: Analisis Sentimen Komentar Berbasis TF-IDF & Logistic Regression
|
||||||
|
|
||||||
|
Modul ini menangani:
|
||||||
|
1. Pemuatan pre-trained TF-IDF Vectorizer dan model Logistic Regression
|
||||||
|
2. Transformasi teks bersih ke vektor TF-IDF
|
||||||
|
3. Perhitungan skor probabilitas dan decision value
|
||||||
|
4. Ekstraksi fitur n-gram dominan berserta bobot koefisiennya
|
||||||
|
"""
|
||||||
|
|
||||||
|
import os
|
||||||
|
import time
|
||||||
|
import warnings
|
||||||
|
import joblib
|
||||||
|
from typing import Dict, Any
|
||||||
|
|
||||||
|
warnings.filterwarnings("ignore")
|
||||||
|
|
||||||
|
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
|
||||||
|
MODEL_PATH = os.path.join(BASE_DIR, "model_logistic_regression.pkl")
|
||||||
|
TFIDF_PATH = os.path.join(BASE_DIR, "tfidf_vectorizer.pkl")
|
||||||
|
|
||||||
|
# Memuat model dan vectorizer saat modul diimpor
|
||||||
|
model = joblib.load(MODEL_PATH)
|
||||||
|
tfidf = joblib.load(TFIDF_PATH)
|
||||||
|
|
||||||
|
|
||||||
|
def predict_sentiment(teks_bersih: str) -> Dict[str, Any]:
|
||||||
|
"""
|
||||||
|
Melakukan inferensi klasifikasi sentimen berdasarkan teks yang telah diproses:
|
||||||
|
- X = tfidf.transform([teks_bersih])
|
||||||
|
- Prediksi label: POSITIF / NEGATIF
|
||||||
|
- Probabilitas Sigmoid untuk tiap kelas
|
||||||
|
- Nilai Decision Function (z = w*x + b)
|
||||||
|
- Ekstraksi kontribusi bobot fitur dominan
|
||||||
|
"""
|
||||||
|
start_time = time.time()
|
||||||
|
if not teks_bersih or not teks_bersih.strip():
|
||||||
|
return {
|
||||||
|
"success": True,
|
||||||
|
"sentimen": "GAGAL DIANALISIS",
|
||||||
|
"preprocessing": "",
|
||||||
|
"probabilitas": {
|
||||||
|
"negatif": 0.0,
|
||||||
|
"positif": 0.0
|
||||||
|
},
|
||||||
|
"keyakinan": 0.0,
|
||||||
|
"decision_value": 0.0,
|
||||||
|
"fitur_dominan": [],
|
||||||
|
"elapsed_ms": 0.5,
|
||||||
|
"keterangan": "Hasil preprocessing kosong (tidak dapat dianalisis)."
|
||||||
|
}
|
||||||
|
|
||||||
|
# Transformasi TF-IDF
|
||||||
|
X = tfidf.transform([teks_bersih])
|
||||||
|
|
||||||
|
# Ekstraksi Fitur N-Gram Dominan
|
||||||
|
feature_names = tfidf.get_feature_names_out()
|
||||||
|
non_zero_indices = X.nonzero()[1]
|
||||||
|
has_features = len(non_zero_indices) > 0
|
||||||
|
elapsed_ms = round((time.time() - start_time) * 1000, 1)
|
||||||
|
|
||||||
|
# Bila fitur kata tidak ditemukan pada TF-IDF, jangan gunakan bias model
|
||||||
|
if not has_features:
|
||||||
|
return {
|
||||||
|
"success": True,
|
||||||
|
"sentimen": "FITUR TIDAK DITEMUKAN",
|
||||||
|
"preprocessing": teks_bersih,
|
||||||
|
"probabilitas": {
|
||||||
|
"negatif": 0.0,
|
||||||
|
"positif": 0.0
|
||||||
|
},
|
||||||
|
"keyakinan": 0.0,
|
||||||
|
"decision_value": 0.0,
|
||||||
|
"fitur_dominan": [],
|
||||||
|
"fitur_ditemukan": False,
|
||||||
|
"keterangan": "Fitur tidak ditemukan",
|
||||||
|
"elapsed_ms": max(1.0, elapsed_ms)
|
||||||
|
}
|
||||||
|
|
||||||
|
# Prediksi Label dan Probabilitas hanya bila fitur kata ditemukan
|
||||||
|
hasil_prediksi = model.predict(X)[0]
|
||||||
|
proba = model.predict_proba(X)[0]
|
||||||
|
prob_negatif = float(proba[0])
|
||||||
|
prob_positif = float(proba[1])
|
||||||
|
decision_val = float(model.decision_function(X)[0])
|
||||||
|
|
||||||
|
features_info = []
|
||||||
|
for idx in non_zero_indices:
|
||||||
|
token = feature_names[idx]
|
||||||
|
val = float(X[0, idx])
|
||||||
|
weight = float(model.coef_[0, idx])
|
||||||
|
features_info.append({
|
||||||
|
"token": token,
|
||||||
|
"tfidf": round(val, 4),
|
||||||
|
"weight": round(weight, 4)
|
||||||
|
})
|
||||||
|
|
||||||
|
# Urutkan berdasarkan nilai absolut kontribusi fitur
|
||||||
|
features_info.sort(key=lambda item: abs(item['weight'] * item['tfidf']), reverse=True)
|
||||||
|
top_features = features_info[:8]
|
||||||
|
keyakinan = (prob_negatif if hasil_prediksi == 'NEGATIF' else prob_positif) * 100
|
||||||
|
|
||||||
|
return {
|
||||||
|
"success": True,
|
||||||
|
"sentimen": str(hasil_prediksi),
|
||||||
|
"preprocessing": teks_bersih,
|
||||||
|
"probabilitas": {
|
||||||
|
"negatif": round(prob_negatif, 4),
|
||||||
|
"positif": round(prob_positif, 4)
|
||||||
|
},
|
||||||
|
"keyakinan": round(keyakinan, 1),
|
||||||
|
"decision_value": round(decision_val, 4),
|
||||||
|
"fitur_dominan": top_features,
|
||||||
|
"fitur_ditemukan": True,
|
||||||
|
"keterangan": "Fitur berhasil diekstraksi",
|
||||||
|
"elapsed_ms": max(1.0, elapsed_ms)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
test_clean = "sok cantik banget"
|
||||||
|
hasil = predict_sentiment(test_clean)
|
||||||
|
print("Hasil Prediksi:", hasil)
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,280 @@
|
||||||
|
"""
|
||||||
|
Nlp.py - Modul Pemrosesan Teks (Natural Language Processing)
|
||||||
|
Proyek Tugas Akhir: Analisis Sentimen Komentar Berbasis TF-IDF & Logistic Regression
|
||||||
|
|
||||||
|
Modul ini menangani tahapan preprocessing teks:
|
||||||
|
1. Case Folding
|
||||||
|
2. Slang Negation Replacement ('t)
|
||||||
|
3. Reduksi Karakter Berulang
|
||||||
|
4. Tokenizing (NLTK)
|
||||||
|
5a. Normalisasi Rumus Alay 1 (Kamus Manual + kamus_alay.csv)
|
||||||
|
5b. Normalisasi Rumus Alay 2 (new_kamusalay.csv - 15.000+ entri)
|
||||||
|
6. Cleaning (Hanya huruf alfabet)
|
||||||
|
7. Stopword Removal (Menyimpan kata negasi & penegas)
|
||||||
|
8. Stemming Bahasa Indonesia (Sastrawi)
|
||||||
|
9. Negation Tagging (menggabungkan 'tidak_bagus')
|
||||||
|
"""
|
||||||
|
|
||||||
|
import os
|
||||||
|
import re
|
||||||
|
import warnings
|
||||||
|
try:
|
||||||
|
import regex
|
||||||
|
except ImportError:
|
||||||
|
regex = None
|
||||||
|
import pandas as pd
|
||||||
|
import nltk
|
||||||
|
from nltk.tokenize import word_tokenize
|
||||||
|
from nltk.corpus import stopwords
|
||||||
|
from Sastrawi.Stemmer.StemmerFactory import StemmerFactory
|
||||||
|
|
||||||
|
warnings.filterwarnings("ignore")
|
||||||
|
|
||||||
|
# Kata-kata yang ada di vocabulary model TF-IDF agar tidak ditimpa oleh kamus ke kata yang OOV
|
||||||
|
KATA_PROTEKSI_TFIDF = {'aku', 'lu', 'kasih', 'moga', 'cakep'}
|
||||||
|
|
||||||
|
# Memastikan korpus NLTK yang dibutuhkan terunduh
|
||||||
|
for resource in ['punkt', 'punkt_tab', 'stopwords']:
|
||||||
|
try:
|
||||||
|
nltk.data.find(f'tokenizers/{resource}' if 'punkt' in resource else f'corpora/{resource}')
|
||||||
|
except LookupError:
|
||||||
|
nltk.download(resource, quiet=True)
|
||||||
|
|
||||||
|
# ==========================================
|
||||||
|
# 1. KAMUS NORMALISASI DAN SLANG / ALAY
|
||||||
|
# ==========================================
|
||||||
|
|
||||||
|
normalisasi = {
|
||||||
|
# Singkatan umum
|
||||||
|
'bgt': 'banget', 'bgtt': 'banget', 'bangett': 'banget', 'bngt': 'banget', 'bngtt': 'banget',
|
||||||
|
'yg': 'yang', 'yng': 'yang', 'dgn': 'dengan', 'dngn': 'dengan', 'dr': 'dari',
|
||||||
|
'drpd': 'daripada', 'krn': 'karena', 'karna': 'karena', 'krena': 'karena',
|
||||||
|
'klo': 'kalau', 'kalo': 'kalau', 'kl': 'kalau', 'klau': 'kalau',
|
||||||
|
'aja': 'saja', 'aj': 'saja', 'sja': 'saja', 'udah': 'sudah', 'udh': 'sudah',
|
||||||
|
'sdh': 'sudah', 'dah': 'sudah', 'blm': 'belum', 'blom': 'belum', 'belom': 'belum',
|
||||||
|
'tp': 'tapi', 'tpi': 'tapi', 'tpp': 'tapi', 'trs': 'terus', 'trus': 'terus',
|
||||||
|
'terusss': 'terus', 'smp': 'sampai', 'sampe': 'sampai', 'ampe': 'sampai',
|
||||||
|
'sm': 'sama', 'sma': 'sama', 'ama': 'sama', 'emg': 'memang', 'emang': 'memang',
|
||||||
|
'emng': 'memang', 'bkn': 'bukan', 'bknnya': 'bukannya', 'tdk': 'tidak',
|
||||||
|
'gak': 'tidak', 'ga': 'tidak', 'g': 'tidak', 'nggak': 'tidak', 'ngga': 'tidak',
|
||||||
|
'nggk': 'tidak', 'enggak': 'tidak', 'engga': 'tidak', 'kagak': 'tidak',
|
||||||
|
'gk': 'tidak', 'gpp': 'tidak apa apa',
|
||||||
|
|
||||||
|
# Kata ganti
|
||||||
|
'gw': 'aku', 'gua': 'aku', 'gue': 'aku', 'aku': 'aku', 'aq': 'aku',
|
||||||
|
'sya': 'saya', 'ane': 'aku', 'ana': 'aku', 'lu': 'lu', 'lo': 'lu',
|
||||||
|
'elu': 'lu', 'elo': 'lu', 'km': 'kamu', 'kamu': 'kamu', 'mu': 'kamu',
|
||||||
|
'dia': 'dia', 'dy': 'dia', 'dya': 'dia', 'mereka': 'mereka', 'mrk': 'mereka',
|
||||||
|
|
||||||
|
# Orang / sapaan
|
||||||
|
'org': 'orang', 'orng': 'orang', 'org2': 'orang', 'tmn': 'teman',
|
||||||
|
'temen': 'teman', 'tmen': 'teman', 'kwn': 'kawan', 'sob': 'teman',
|
||||||
|
'bestie': 'teman', 'besty': 'teman', 'kak': 'kak', 'kk': 'kak',
|
||||||
|
'kaka': 'kak', 'kakak': 'kak', 'bang': 'abang', 'bng': 'abang',
|
||||||
|
'bro': 'saudara', 'sis': 'saudari',
|
||||||
|
|
||||||
|
# Kata kerja / aktivitas
|
||||||
|
'bikin': 'membuat', 'bwt': 'buat', 'buat': 'buat', 'ngapain': 'ngapain',
|
||||||
|
'ngapa2in': 'mengapa', 'ngomong': 'berbicara', 'ngomongin': 'membicarakan',
|
||||||
|
'ngeliat': 'melihat', 'liat': 'lihat', 'liat2': 'lihat', 'ngelihat': 'melihat',
|
||||||
|
'nonton': 'menonton', 'nyari': 'mencari', 'cari': 'cari', 'nyoba': 'mencoba',
|
||||||
|
'coba': 'coba', 'pake': 'pakai', 'pakai': 'pakai', 'kasih': 'kasih',
|
||||||
|
'kasi': 'kasih', 'ngasih': 'memberi', 'dikasih': 'diberi', 'dikasi': 'diberi',
|
||||||
|
'ngambil': 'mengambil', 'ambil': 'ambil', 'nanya': 'bertanya', 'tanya': 'tanya',
|
||||||
|
'jawab': 'jawab', 'ngejek': 'mengejek', 'ejek': 'ejek', 'nyindir': 'menyindir', 'sindir': 'sindir',
|
||||||
|
|
||||||
|
# Kata sifat / ekspresi
|
||||||
|
'bagusss': 'bagus', 'baguss': 'bagus', 'bgs': 'bagus', 'jelek2': 'jelek',
|
||||||
|
'jelekk': 'jelek', 'keren2': 'keren', 'kerenn': 'keren', 'keren banget': 'keren banget',
|
||||||
|
'lucuu': 'lucu', 'lucuuu': 'lucu', 'lucu2': 'lucu', 'gemess': 'gemas',
|
||||||
|
'gemesss': 'gemas', 'gemoy': 'gemas', 'gemoyy': 'gemas', 'cantikk': 'cantik',
|
||||||
|
'cantikkk': 'cantik', 'cantiknyaaa': 'cantiknya', 'gantenggg': 'ganteng',
|
||||||
|
'gantengg': 'ganteng', 'imuttt': 'imut', 'imutttt': 'imut', 'maniss': 'manis',
|
||||||
|
'manisss': 'manis', 'cakepp': 'cakep', 'cakeppp': 'cakep', 'mantapp': 'mantap',
|
||||||
|
'mantappp': 'mantap', 'parahh': 'parah', 'parahhh': 'parah', 'anehh': 'aneh',
|
||||||
|
'anehhh': 'aneh', 'burukkk': 'buruk',
|
||||||
|
|
||||||
|
# Bahasa gaul
|
||||||
|
'sok': 'sok', 'alay': 'alay', 'norak': 'norak', 'lebay': 'berlebihan',
|
||||||
|
'lebayy': 'berlebihan', 'garing': 'garing', 'receh': 'receh', 'gabut': 'tidak ada kegiatan',
|
||||||
|
'mager': 'malas', 'baper': 'terbawa perasaan', 'bucin': 'budak cinta',
|
||||||
|
'kepo': 'ingin tahu', 'julid': 'iri', 'nyinyir': 'mencela', 'santuy': 'santai',
|
||||||
|
'santuyy': 'santai', 'mantul': 'mantap betul', 'wkwk': 'tertawa',
|
||||||
|
'wkwkwk': 'tertawa', 'wkwwk': 'tertawa', 'haha': 'tertawa', 'hahaha': 'tertawa',
|
||||||
|
|
||||||
|
# Singkatan internet
|
||||||
|
'otw': 'dalam perjalanan', 'btw': 'ngomong ngomong', 'fyi': 'sebagai informasi',
|
||||||
|
'cmiiw': 'koreksi jika saya salah', 'lol': 'tertawa', 'plis': 'tolong',
|
||||||
|
'pls': 'tolong', 'please': 'tolong', 'thx': 'terima kasih', 'tks': 'terima kasih',
|
||||||
|
'makasih': 'terima kasih', 'mksh': 'terima kasih', 'mksd': 'maksud',
|
||||||
|
'mksih': 'terima kasih', 'thanks': 'terima kasih',
|
||||||
|
|
||||||
|
# Angka / bentuk pendek
|
||||||
|
'bbrp': 'beberapa', 'brp': 'berapa', 'blh': 'boleh', 'bs': 'bisa',
|
||||||
|
'bisa': 'bisa', 'hrs': 'harus', 'harus': 'harus', 'jd': 'jadi',
|
||||||
|
'jdi': 'jadi', 'jdnya': 'jadinya', 'lg': 'lagi', 'lgi': 'lagi',
|
||||||
|
'sdg': 'sedang', 'dlu': 'dulu', 'dahulu': 'dulu', 'skrg': 'sekarang',
|
||||||
|
'skrng': 'sekarang', 'sekarang': 'sekarang', 'kpn': 'kapan', 'knp': 'kenapa',
|
||||||
|
'kenapa': 'kenapa', 'gmn': 'bagaimana', 'gmna': 'bagaimana', 'gimana': 'bagaimana',
|
||||||
|
'dmn': 'dimana', 'dimana': 'dimana', 'kmn': 'kemana', 'kemana': 'kemana',
|
||||||
|
|
||||||
|
# Lain-lain
|
||||||
|
'dpt': 'dapat', 'dapet': 'dapat', 'dri': 'dari', 'mslh': 'masalah',
|
||||||
|
'masalah': 'masalah', 'msh': 'masih', 'masi': 'masih', 'bnyk': 'banyak',
|
||||||
|
'byk': 'banyak', 'bnyak': 'banyak', 'sedikit': 'sedikit', 'sdkt': 'sedikit',
|
||||||
|
'pgn': 'ingin', 'pengen': 'ingin', 'pngn': 'ingin', 'ingin': 'ingin',
|
||||||
|
'mau': 'mau', 'mw': 'mau', 'udh': 'sudah', 'blm': 'belum', 'jg': 'juga',
|
||||||
|
'jga': 'juga', 'jgn': 'jangan', 'jangan': 'jangan', 'td': 'tadi',
|
||||||
|
'tadi': 'tadi', 'smoga': 'moga', 'moga': 'moga', 'semoga': 'semoga',
|
||||||
|
't': 'tidak',
|
||||||
|
}
|
||||||
|
|
||||||
|
kamus_alay_path = os.path.join(os.path.dirname(__file__), "kamus_alay.csv")
|
||||||
|
if os.path.exists(kamus_alay_path):
|
||||||
|
try:
|
||||||
|
kamus_df = pd.read_csv(kamus_alay_path)[['slang', 'formal']].dropna()
|
||||||
|
kamus_alay_1_dict = dict(zip(
|
||||||
|
kamus_df['slang'].astype(str).str.lower().str.strip(),
|
||||||
|
kamus_df['formal'].astype(str).str.lower().str.strip()
|
||||||
|
))
|
||||||
|
except Exception:
|
||||||
|
kamus_alay_1_dict = {}
|
||||||
|
else:
|
||||||
|
kamus_alay_1_dict = {}
|
||||||
|
|
||||||
|
# Rumus Alay 1: Kamus Manual + kamus_alay.csv
|
||||||
|
normalisasi_1 = kamus_alay_1_dict.copy()
|
||||||
|
normalisasi_1.update(normalisasi)
|
||||||
|
|
||||||
|
# Rumus Alay 2: new_kamusalay.csv (15.000+ entri kata gaul)
|
||||||
|
new_kamusalay_path = os.path.join(os.path.dirname(__file__), "new_kamusalay.csv")
|
||||||
|
if os.path.exists(new_kamusalay_path):
|
||||||
|
try:
|
||||||
|
new_kamus_df = pd.read_csv(new_kamusalay_path, header=None, encoding='latin-1').dropna()
|
||||||
|
kamus_alay_2_dict = dict(zip(
|
||||||
|
new_kamus_df[0].astype(str).str.lower().str.strip(),
|
||||||
|
new_kamus_df[1].astype(str).str.lower().str.strip()
|
||||||
|
))
|
||||||
|
except Exception as e:
|
||||||
|
print("[!] Gagal memuat new_kamusalay.csv:", e)
|
||||||
|
kamus_alay_2_dict = {}
|
||||||
|
else:
|
||||||
|
kamus_alay_2_dict = {}
|
||||||
|
|
||||||
|
# Gabungan kamus lengkap
|
||||||
|
normalisasi_gabungan = kamus_alay_2_dict.copy()
|
||||||
|
normalisasi_gabungan.update(normalisasi_1)
|
||||||
|
|
||||||
|
# ==========================================
|
||||||
|
# 2. STOPWORDS & STEMMER SETUP
|
||||||
|
# ==========================================
|
||||||
|
|
||||||
|
stop_words = set(stopwords.words('indonesian'))
|
||||||
|
|
||||||
|
kata_negasi = {
|
||||||
|
'tidak', 'bukan', 'jangan', 'belum', 'tanpa',
|
||||||
|
'gak', 'ga', 'gk', 'nggak', 'ngga', 'enggak', 'engga', 'tak',
|
||||||
|
'bukanlah', 'tidaklah', 'jangan', 'kurang'
|
||||||
|
}
|
||||||
|
|
||||||
|
kata_kontras_dan_penegas = {
|
||||||
|
'tapi', 'namun', 'padahal', 'sangat', 'banget', 'sekali', 'terlalu'
|
||||||
|
}
|
||||||
|
|
||||||
|
# Kata sentimen bermakna yang tidak boleh dibuang oleh stopword
|
||||||
|
kata_sentiment_simpan = {
|
||||||
|
'jelas', 'guna', 'manfaat', 'bisa', 'benar', 'pasti', 'penting',
|
||||||
|
'puas', 'baik', 'bagus', 'suka', 'sayang', 'senang', 'cinta',
|
||||||
|
'indah', 'hebat', 'tolong', 'bantu'
|
||||||
|
}
|
||||||
|
|
||||||
|
# Partikel obrolan medsos yang perlu dibuang agar tidak menempel pada negasi (mis: tidak_sih -> tidak_jelas)
|
||||||
|
partikel_tambahan = {
|
||||||
|
'sih', 'deh', 'kah', 'loh', 'lho', 'tuh', 'nih', 'dong', 'kok', 'kan', 'pun', 'ya', 'yah'
|
||||||
|
}
|
||||||
|
|
||||||
|
stop_words = (stop_words - kata_negasi - kata_kontras_dan_penegas - kata_sentiment_simpan) | partikel_tambahan
|
||||||
|
|
||||||
|
factory = StemmerFactory()
|
||||||
|
stemmer = factory.create_stemmer()
|
||||||
|
|
||||||
|
print("Stemmer berhasil dibuat!")
|
||||||
|
|
||||||
|
# ==========================================
|
||||||
|
# 6. FUNGSI PREPROCESSING
|
||||||
|
# ==========================================
|
||||||
|
|
||||||
|
def preprocessing(teks, use_stopword=False):
|
||||||
|
# 1. Pastikan teks berupa string dan case folding ke huruf kecil
|
||||||
|
teks = str(teks).lower()
|
||||||
|
|
||||||
|
# 2. Menangani bentuk negasi singkatan bahasa gaul: bagus't -> tidak bagus
|
||||||
|
teks = re.sub(r"(\w+)'t\b", r"tidak \1", teks)
|
||||||
|
|
||||||
|
# 3. Penanganan Teks Berdampingan dengan Emotikon (text terus emote / emote terus text)
|
||||||
|
# Sisipkan spasi di sekeliling karakter emoji/piktogram agar tidak melekat ke huruf
|
||||||
|
if regex is not None:
|
||||||
|
teks = regex.sub(r'(\p{Extended_Pictographic}+|\p{So}+|\p{Sk}+)', r' \1 ', teks)
|
||||||
|
else:
|
||||||
|
teks = re.sub(r'([\U00010000-\U0010ffff\u2600-\u27bf])', r' \1 ', teks)
|
||||||
|
|
||||||
|
# 4. Tangani tanda baca, petik, atau simbol (misal: assalamu'alaikum -> assalamu alaikum)
|
||||||
|
teks = re.sub(r"[^\w\s]|_", " ", teks)
|
||||||
|
|
||||||
|
# 5. Reduksi huruf berulang lebih dari 2 (contoh: bngttttt -> bngt, baguuus -> baguus)
|
||||||
|
teks = re.sub(r'(.)\1{2,}', r'\1\1', teks)
|
||||||
|
|
||||||
|
# 6. Tokenizing
|
||||||
|
tokens = [t for t in teks.split() if t]
|
||||||
|
|
||||||
|
# 7a. Normalisasi Rumus Alay 1 (Kamus Manual + kamus_alay.csv)
|
||||||
|
tokens_norm_1 = []
|
||||||
|
for kata in tokens:
|
||||||
|
if kata in KATA_PROTEKSI_TFIDF:
|
||||||
|
tokens_norm_1.append(kata)
|
||||||
|
continue
|
||||||
|
kata_ganti = normalisasi_1.get(kata, kata)
|
||||||
|
tokens_norm_1.extend(kata_ganti.split())
|
||||||
|
|
||||||
|
# 7b. Normalisasi Rumus Alay 2 (Kamus new_kamusalay.csv)
|
||||||
|
tokens_norm_2 = []
|
||||||
|
for kata in tokens_norm_1:
|
||||||
|
if kata in KATA_PROTEKSI_TFIDF:
|
||||||
|
tokens_norm_2.append(kata)
|
||||||
|
continue
|
||||||
|
kata_ganti = kamus_alay_2_dict.get(kata, kata)
|
||||||
|
tokens_norm_2.extend(kata_ganti.split())
|
||||||
|
|
||||||
|
# 8. Menghapus karakter selain huruf
|
||||||
|
tokens = [kata for kata in tokens_norm_2 if kata.isalpha()]
|
||||||
|
|
||||||
|
# 9. Stopword Removal (Default: False / nonaktif sesuai instruksi agar tidak banyak data kosong)
|
||||||
|
if use_stopword:
|
||||||
|
tokens = [kata for kata in tokens if kata not in stop_words]
|
||||||
|
|
||||||
|
# 10. Stemming menggunakan Sastrawi
|
||||||
|
tokens = [stemmer.stem(kata) for kata in tokens if kata.strip()]
|
||||||
|
|
||||||
|
# 11. Negation Tagging (menggabungkan kata negasi dengan kata setelahnya, misal: tidak_bagus)
|
||||||
|
kata_negasi_gabung = {'tidak', 'bukan', 'jangan', 'belum', 'kurang', 'tak'}
|
||||||
|
final_tokens = []
|
||||||
|
skip = False
|
||||||
|
for i in range(len(tokens)):
|
||||||
|
if skip:
|
||||||
|
skip = False
|
||||||
|
continue
|
||||||
|
if tokens[i] in kata_negasi_gabung and i + 1 < len(tokens):
|
||||||
|
final_tokens.append(f"{tokens[i]}_{tokens[i+1]}")
|
||||||
|
skip = True
|
||||||
|
else:
|
||||||
|
final_tokens.append(tokens[i])
|
||||||
|
|
||||||
|
# Menggabungkan token kembali
|
||||||
|
teks_hasil = ' '.join(final_tokens)
|
||||||
|
return teks_hasil
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
contoh = "sok cantik banget jadi cewek"
|
||||||
|
print("Contoh Masukan :", contoh)
|
||||||
|
print("Hasil Bersih :", preprocessing(contoh))
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
Flask>=3.0.0
|
||||||
|
pandas>=2.0.0
|
||||||
|
scikit-learn>=1.3.0
|
||||||
|
joblib>=1.3.0
|
||||||
|
nltk>=3.8.0
|
||||||
|
Sastrawi>=1.0.1
|
||||||
|
pymysql>=1.1.0
|
||||||
|
cryptography>=42.0.0
|
||||||
|
regex>=2024.1.0
|
||||||
Binary file not shown.
|
|
@ -0,0 +1,365 @@
|
||||||
|
-- MySQL dump converted from sentiment_tiktok.db (SQLite)
|
||||||
|
-- Generated for phpMyAdmin / MySQL
|
||||||
|
|
||||||
|
SET NAMES utf8mb4;
|
||||||
|
SET FOREIGN_KEY_CHECKS=0;
|
||||||
|
|
||||||
|
-- Table structure for users
|
||||||
|
DROP TABLE IF EXISTS `users`;
|
||||||
|
CREATE TABLE `users` (
|
||||||
|
`id` INT NOT NULL AUTO_INCREMENT,
|
||||||
|
`name` VARCHAR(255) NOT NULL,
|
||||||
|
`email` VARCHAR(255) NOT NULL,
|
||||||
|
`password_hash` TEXT NOT NULL,
|
||||||
|
`created_at` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
UNIQUE KEY `uq_users_email` (`email`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||||
|
|
||||||
|
-- Table structure for analyses
|
||||||
|
DROP TABLE IF EXISTS `analyses`;
|
||||||
|
CREATE TABLE `analyses` (
|
||||||
|
`id` INT NOT NULL AUTO_INCREMENT,
|
||||||
|
`user_id` INT NOT NULL,
|
||||||
|
`tiktok_url` TEXT NOT NULL,
|
||||||
|
`video_id` VARCHAR(255) DEFAULT NULL,
|
||||||
|
`status` VARCHAR(50) DEFAULT 'done',
|
||||||
|
`total_comments` INT DEFAULT 0,
|
||||||
|
`positive_count` INT DEFAULT 0,
|
||||||
|
`positive_percentage` DOUBLE DEFAULT 0.0,
|
||||||
|
`negative_count` INT DEFAULT 0,
|
||||||
|
`negative_percentage` DOUBLE DEFAULT 0.0,
|
||||||
|
`error` TEXT DEFAULT NULL,
|
||||||
|
`created_at` DATETIME(6) DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
KEY `idx_analyses_user_id` (`user_id`),
|
||||||
|
CONSTRAINT `fk_analyses_user` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||||
|
|
||||||
|
-- Table structure for comments
|
||||||
|
DROP TABLE IF EXISTS `comments`;
|
||||||
|
CREATE TABLE `comments` (
|
||||||
|
`id` INT NOT NULL AUTO_INCREMENT,
|
||||||
|
`analysis_id` INT NOT NULL,
|
||||||
|
`original_comment` TEXT NOT NULL,
|
||||||
|
`cleaned_comment` TEXT DEFAULT NULL,
|
||||||
|
`sentiment` VARCHAR(50) NOT NULL,
|
||||||
|
`probability` DOUBLE NOT NULL,
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
KEY `idx_comments_analysis_id` (`analysis_id`),
|
||||||
|
CONSTRAINT `fk_comments_analysis` FOREIGN KEY (`analysis_id`) REFERENCES `analyses` (`id`) ON DELETE CASCADE
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||||
|
|
||||||
|
-- Data for `users` (1 rows)
|
||||||
|
INSERT INTO `users` (`id`, `name`, `email`, `password_hash`, `created_at`) VALUES (1, 'Admin Peneliti', 'admin@tiktok.com', 'scrypt:32768:8:1$LV2o1OlhA72Xgl0h$f2537eb4a25d27038e3e09ea4670ec4edc41664adcfc77f879196a5cef56bc5fa69571786527cff1be2a1d89e6fddc4148bdaf3cc0f103d7761845dff2d03b9f', '2026-10-01 13:03:36');
|
||||||
|
|
||||||
|
-- Data for `analyses` (1 rows)
|
||||||
|
INSERT INTO `analyses` (`id`, `user_id`, `tiktok_url`, `video_id`, `status`, `total_comments`, `positive_count`, `positive_percentage`, `negative_count`, `negative_percentage`, `error`, `created_at`) VALUES (1, 1, 'https://www.tiktok.com/@creator/video/7123456789012345678', '7123456789012345678', 'done', 300, 193, 64.3, 107, 35.7, NULL, '2026-10-01T13:03:51.596064Z');
|
||||||
|
|
||||||
|
-- Data for `comments` (300 rows)
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (1, 1, 'terharu nonton video ini, pesan moralnya dapet banget', 'haru tonton video pesan moral banget', 'POSITIF', 0.5154);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (2, 1, 'parah banget hasilnya ga sesuai sama yang diomongin', 'parah banget hasil tidak_sesuai diomongin', 'POSITIF', 0.5012);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (3, 1, 'bagus banget kualitas videonya, visual dan audionya jernih', 'bagus banget kualitas video visual audio jernih', 'POSITIF', 0.7399);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (4, 1, 'pembodohan publik ini mah, tolong jangan dipercaya', 'bodoh publik mah tolong jangan_percaya', 'NEGATIF', 0.6374);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (5, 1, 'norak banget sumpah ga ada bagus-bagusnya konten kayak gini beneran', 'norak banget sumpah tidak_konten kayak benar', 'NEGATIF', 0.5977);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (6, 1, 'mantap betul ilmunya, makasih banyak ya kak sukses selalu', 'mantap ilmu terima kasih ya kak sukses', 'POSITIF', 0.7655);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (7, 1, 'suaranya adem banget didenger, penjelasannya runtut ya ampun', 'suara adem banget didenger jelas runtut ya ampun', 'POSITIF', 0.6201);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (8, 1, 'paling suka pas bagian tips terakhir, beneran ngebantu', 'suka pas tips benar bantu', 'NEGATIF', 0.5979);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (9, 1, 'bagus pol hasilnya rapi banget kak, berbakat sekali parah sih', 'bagus pol hasil rapi banget kak bakat sekali parah sih', 'POSITIF', 0.8137);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (10, 1, 'jelek banget penjelasannya ga jelas muter-muter bikin pusing', 'jelek banget jelas tidak_pusing', 'NEGATIF', 0.5695);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (11, 1, 'ga usah sok pintar deh, teorinya salah total itu', 'tidak_sok pintar deh teori salah total', 'POSITIF', 0.5149);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (12, 1, 'kreatif banget idenya kak, gak kepikiran sebelumnya', 'kreatif banget ide kak tidak_pikir', 'POSITIF', 0.8359);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (13, 1, 'lucu banget ekspresinya di akhir video haha ngakak banget', 'lucu banget ekspresi video tertawa akak banget', 'POSITIF', 0.6543);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (14, 1, 'bener-bener nyesel ngikutin sarannya, malah tambah ancur', 'sesal ikut saran hancur', 'NEGATIF', 0.5601);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (15, 1, 'semangat berkarya kak, konten edukatifnya sangat menginspirasi', 'semangat karya kak konten edukatif sangat inspirasi', 'POSITIF', 0.8821);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (16, 1, 'mantap betul ilmunya, makasih banyak ya kak sukses selalu sumpah', 'mantap ilmu terima kasih ya kak sukses sumpah', 'POSITIF', 0.7519);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (17, 1, 'lucu banget ekspresinya di akhir video haha ngakak banget', 'lucu banget ekspresi video tertawa akak banget', 'POSITIF', 0.6543);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (18, 1, 'bagus banget kualitas videonya, visual dan audionya jernih gan', 'bagus banget kualitas video visual audio jernih gan', 'POSITIF', 0.7399);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (19, 1, 'clickbait parah judul sama isinya sama sekali ga nyambung parah sih', 'clickbait parah judul isi sekali tidak_sambung parah sih', 'NEGATIF', 0.5661);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (20, 1, 'kreatif banget idenya kak, gak kepikiran sebelumnya banget kak', 'kreatif banget ide kak tidak_pikir banget kak', 'POSITIF', 0.8925);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (21, 1, 'paling suka pas bagian tips terakhir, beneran ngebantu', 'suka pas tips benar bantu', 'NEGATIF', 0.5979);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (22, 1, 'bener-bener nyesel ngikutin sarannya, malah tambah ancur', 'sesal ikut saran hancur', 'NEGATIF', 0.5601);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (23, 1, 'lucu banget ekspresinya di akhir video haha ngakak banget', 'lucu banget ekspresi video tertawa akak banget', 'POSITIF', 0.6543);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (24, 1, 'konten bermutu kayak gini yang harusnya trending di tiktok sumpah', 'konten mutu kayak trending tiktok sumpah', 'POSITIF', 0.5195);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (25, 1, 'terharu nonton video ini, pesan moralnya dapet banget sumpah', 'haru tonton video pesan moral banget sumpah', 'NEGATIF', 0.5183);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (26, 1, 'makin ke sini kontennya makin garing dan ga bermakna banget kak', 'konten garing tidak_makna banget kak', 'POSITIF', 0.7564);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (27, 1, 'terharu nonton video ini, pesan moralnya dapet banget ya ampun', 'haru tonton video pesan moral banget ya ampun', 'POSITIF', 0.5614);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (28, 1, 'selalu nungguin konten kakak, ga pernah gagal bikin semangat', 'tunggu konten kak tidak_gagal semangat', 'POSITIF', 0.7935);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (29, 1, 'ngomong apa sih ga jelas banget artikulasinya jelek', 'bicara sih tidak_banget artikulasi jelek', 'NEGATIF', 0.7061);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (30, 1, 'selalu nungguin konten kakak, ga pernah gagal bikin semangat', 'tunggu konten kak tidak_gagal semangat', 'POSITIF', 0.7935);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (31, 1, 'rekomendasi terbaik sih ini, udah coba dan hasilnya memuaskan banget kak', 'rekomendasi baik sih coba hasil muas banget kak', 'POSITIF', 0.759);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (32, 1, 'sok cantik banget jadi cewek, gayanya norak dan alay', 'sok cantik banget cewek gaya norak alay', 'NEGATIF', 0.5901);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (33, 1, 'sangat mengecewakan pelayanannya lambat dan judes ya ampun', 'sangat kecewa layan lambat judes ya ampun', 'POSITIF', 0.6482);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (34, 1, 'cantik banget kak masyaAllah, outfitnya beli di mana ya?', 'cantik banget kak masyaallah outfitnya beli ya', 'POSITIF', 0.8306);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (35, 1, 'semoga rezekinya lancar terus kak, kontennya selalu positif parah sih', 'moga rezeki lancar kak konten positif parah sih', 'POSITIF', 0.834);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (36, 1, 'cantik banget kak masyaAllah, outfitnya beli di mana ya?', 'cantik banget kak masyaallah outfitnya beli ya', 'POSITIF', 0.8306);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (37, 1, 'lebay banget deh ekspresinya dibuat-buat ga natural fix no debat', 'banget deh ekspresi tidak_natural fix no debat', 'NEGATIF', 0.5038);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (38, 1, 'clickbait parah judul sama isinya sama sekali ga nyambung', 'clickbait parah judul isi sekali tidak_sambung', 'NEGATIF', 0.532);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (39, 1, 'semoga rezekinya lancar terus kak, kontennya selalu positif parah sih', 'moga rezeki lancar kak konten positif parah sih', 'POSITIF', 0.834);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (40, 1, 'jelek banget penjelasannya ga jelas muter-muter bikin pusing', 'jelek banget jelas tidak_pusing', 'NEGATIF', 0.5695);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (41, 1, 'semoga rezekinya lancar terus kak, kontennya selalu positif', 'moga rezeki lancar kak konten positif', 'POSITIF', 0.8595);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (42, 1, 'lucu banget ekspresinya di akhir video haha ngakak banget', 'lucu banget ekspresi video tertawa akak banget', 'POSITIF', 0.6543);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (43, 1, 'gak suka banget sama cara bicaranya, sombong dan angkuh', 'tidak_suka banget bicara sombong angkuh', 'NEGATIF', 0.6805);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (44, 1, 'suaranya adem banget didenger, penjelasannya runtut', 'suara adem banget didenger jelas runtut', 'POSITIF', 0.5084);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (45, 1, 'wah baru tahu trik ini, keren banget makasih tipsnya!', 'trik keren banget terima kasih tipsnya', 'POSITIF', 0.695);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (46, 1, 'kreatif banget idenya kak, gak kepikiran sebelumnya', 'kreatif banget ide kak tidak_pikir', 'POSITIF', 0.8359);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (47, 1, 'mantap betul ilmunya, makasih banyak ya kak sukses selalu banget kak', 'mantap ilmu terima kasih ya kak sukses banget kak', 'POSITIF', 0.8536);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (48, 1, 'terharu nonton video ini, pesan moralnya dapet banget', 'haru tonton video pesan moral banget', 'POSITIF', 0.5154);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (49, 1, 'terharu nonton video ini, pesan moralnya dapet banget', 'haru tonton video pesan moral banget', 'POSITIF', 0.5154);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (50, 1, 'jelek parah kualitasnya, baru dipakai sekali langsung rusak', 'jelek parah kualitas pakai sekali langsung rusak', 'NEGATIF', 0.6173);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (51, 1, 'paling suka pas bagian tips terakhir, beneran ngebantu', 'suka pas tips benar bantu', 'NEGATIF', 0.5979);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (52, 1, 'ga usah sok pintar deh, teorinya salah total itu', 'tidak_sok pintar deh teori salah total', 'POSITIF', 0.5149);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (53, 1, 'clickbait parah judul sama isinya sama sekali ga nyambung fix no debat', 'clickbait parah judul isi sekali tidak_sambung fix no debat', 'NEGATIF', 0.5206);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (54, 1, 'makasih banyak ya kak sudah berbagi informasi yang sangat berharga beneran', 'terima kasih ya kak bagi informasi sangat harga benar', 'POSITIF', 0.6528);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (55, 1, 'buruk banget kualitas videonya burem ga keliatan apa-apa tolong', 'buruk banget kualitas video buram tidak_tolong', 'NEGATIF', 0.5211);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (56, 1, 'lucu banget ekspresinya di akhir video haha ngakak banget', 'lucu banget ekspresi video tertawa akak banget', 'POSITIF', 0.6543);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (57, 1, 'norak banget sumpah ga ada bagus-bagusnya konten kayak gini tolong', 'norak banget sumpah tidak_konten kayak tolong', 'NEGATIF', 0.55);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (58, 1, 'cantik banget kak masyaAllah, outfitnya beli di mana ya?', 'cantik banget kak masyaallah outfitnya beli ya', 'POSITIF', 0.8306);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (59, 1, 'suka banget sama cara penyampaiannya, santai tapi masuk materinya tolong', 'suka banget sampai santai tapi masuk materi tolong', 'POSITIF', 0.6054);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (60, 1, 'rekomendasi terbaik sih ini, udah coba dan hasilnya memuaskan tolong', 'rekomendasi baik sih coba hasil muas tolong', 'POSITIF', 0.5104);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (61, 1, 'berfaedah banget kontennya kak, auto follow dan share sumpah', 'faedah banget konten kak auto follow share sumpah', 'POSITIF', 0.7184);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (62, 1, 'wah baru tahu trik ini, keren banget makasih tipsnya!', 'trik keren banget terima kasih tipsnya', 'POSITIF', 0.695);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (63, 1, 'wah baru tahu trik ini, keren banget makasih tipsnya!', 'trik keren banget terima kasih tipsnya', 'POSITIF', 0.695);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (64, 1, 'keren abis tutorialnya, langsung paham cara pakainya', 'keren habis tutorial langsung paham pakai', 'POSITIF', 0.5661);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (65, 1, 'masyaAllah kak cantik luar dalam, pembawaannya ramah', 'masyaallah kak cantik bawa ramah', 'POSITIF', 0.7933);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (66, 1, 'sok cantik banget jadi cewek, gayanya norak dan alay', 'sok cantik banget cewek gaya norak alay', 'NEGATIF', 0.5901);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (67, 1, 'selalu nungguin konten kakak, ga pernah gagal bikin semangat sumpah', 'tunggu konten kak tidak_gagal semangat sumpah', 'POSITIF', 0.7709);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (68, 1, 'semoga rezekinya lancar terus kak, kontennya selalu positif gan', 'moga rezeki lancar kak konten positif gan', 'POSITIF', 0.8595);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (69, 1, 'berfaedah banget kontennya kak, auto follow dan share', 'faedah banget konten kak auto follow share', 'POSITIF', 0.7399);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (70, 1, 'penjelasannya detail dan sangat mudah dipahami pemula tolong', 'jelas detail sangat mudah paham mula tolong', 'POSITIF', 0.59);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (71, 1, 'selalu nungguin konten kakak, ga pernah gagal bikin semangat', 'tunggu konten kak tidak_gagal semangat', 'POSITIF', 0.7935);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (72, 1, 'bener-bener nyesel ngikutin sarannya, malah tambah ancur', 'sesal ikut saran hancur', 'NEGATIF', 0.5601);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (73, 1, 'paling suka pas bagian tips terakhir, beneran ngebantu deh', 'suka pas tips benar bantu deh', 'NEGATIF', 0.5977);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (74, 1, 'gak suka banget sama cara bicaranya, sombong dan angkuh', 'tidak_suka banget bicara sombong angkuh', 'NEGATIF', 0.6805);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (75, 1, 'semangat berkarya kak, konten edukatifnya sangat menginspirasi gan', 'semangat karya kak konten edukatif sangat inspirasi gan', 'POSITIF', 0.8821);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (76, 1, 'jangan beli di sini penipu barangnya sangat mengecewakan', 'jangan_beli tipu barang sangat kecewa', 'NEGATIF', 0.5725);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (77, 1, 'penjelasannya detail dan sangat mudah dipahami pemula', 'jelas detail sangat mudah paham mula', 'POSITIF', 0.5946);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (78, 1, 'beneran worth it dicoba, hasilnya sesuai ekspektasi', 'benar worth coba hasil sesuai ekspektasi', 'NEGATIF', 0.609);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (79, 1, 'lebay banget deh ekspresinya dibuat-buat ga natural gan', 'banget deh ekspresi tidak_natural gan', 'NEGATIF', 0.513);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (80, 1, 'terima kasih infonya kak sangat membantu buat tugas akhir saya', 'terima info kak sangat bantu tugas', 'POSITIF', 0.6957);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (81, 1, 'jangan beli di sini penipu barangnya sangat mengecewakan wkwk', 'jangan_beli tipu barang sangat kecewa tertawa', 'NEGATIF', 0.6113);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (82, 1, 'bagus pol hasilnya rapi banget kak, berbakat sekali', 'bagus pol hasil rapi banget kak bakat sekali', 'POSITIF', 0.8355);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (83, 1, 'makasih banyak ya kak sudah berbagi informasi yang sangat berharga', 'terima kasih ya kak bagi informasi sangat harga', 'POSITIF', 0.6985);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (84, 1, 'jelek parah kualitasnya, baru dipakai sekali langsung rusak', 'jelek parah kualitas pakai sekali langsung rusak', 'NEGATIF', 0.6173);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (85, 1, 'berfaedah banget kontennya kak, auto follow dan share', 'faedah banget konten kak auto follow share', 'POSITIF', 0.7399);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (86, 1, 'jelek parah kualitasnya, baru dipakai sekali langsung rusak', 'jelek parah kualitas pakai sekali langsung rusak', 'NEGATIF', 0.6173);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (87, 1, 'pembodohan publik ini mah, tolong jangan dipercaya', 'bodoh publik mah tolong jangan_percaya', 'NEGATIF', 0.6374);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (88, 1, 'mantap betul ilmunya, makasih banyak ya kak sukses selalu ya ampun', 'mantap ilmu terima kasih ya kak sukses ya ampun', 'POSITIF', 0.7778);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (89, 1, 'bagus pol hasilnya rapi banget kak, berbakat sekali', 'bagus pol hasil rapi banget kak bakat sekali', 'POSITIF', 0.8355);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (90, 1, 'keren abis tutorialnya, langsung paham cara pakainya', 'keren habis tutorial langsung paham pakai', 'POSITIF', 0.5661);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (91, 1, 'selalu nungguin konten kakak, ga pernah gagal bikin semangat deh', 'tunggu konten kak tidak_gagal semangat deh', 'POSITIF', 0.7617);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (92, 1, 'suaranya adem banget didenger, penjelasannya runtut', 'suara adem banget didenger jelas runtut', 'POSITIF', 0.5084);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (93, 1, 'cantik banget kak videonya, sangat bermanfaat dan mengedukasi! beneran', 'cantik banget kak video sangat manfaat edukasi benar', 'POSITIF', 0.8172);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (94, 1, 'buruk banget kualitas videonya burem ga keliatan apa-apa', 'buruk banget kualitas video buram tidak', 'NEGATIF', 0.5851);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (95, 1, 'makin ke sini kontennya makin garing dan ga bermakna', 'konten garing tidak_makna', 'NEGATIF', 0.5539);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (96, 1, 'lebay banget deh ekspresinya dibuat-buat ga natural', 'banget deh ekspresi tidak_natural', 'NEGATIF', 0.513);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (97, 1, 'berfaedah banget kontennya kak, auto follow dan share banget kak', 'faedah banget konten kak auto follow share banget kak', 'POSITIF', 0.8356);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (98, 1, 'salah info tuh, belajar lagi sebelum bikin video edukasi', 'salah info tuh ajar video edukasi', 'NEGATIF', 0.5511);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (99, 1, 'berfaedah banget kontennya kak, auto follow dan share', 'faedah banget konten kak auto follow share', 'POSITIF', 0.7399);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (100, 1, 'paling suka pas bagian tips terakhir, beneran ngebantu deh', 'suka pas tips benar bantu deh', 'NEGATIF', 0.5977);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (101, 1, 'rugi waktu dan kuota nonton video ginian ga ada faedahnya wkwk', 'rugi kuota tonton video tidak_faedah tertawa', 'NEGATIF', 0.6918);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (102, 1, 'ga usah sok pintar deh, teorinya salah total itu', 'tidak_sok pintar deh teori salah total', 'POSITIF', 0.5149);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (103, 1, 'kreatif banget idenya kak, gak kepikiran sebelumnya', 'kreatif banget ide kak tidak_pikir', 'POSITIF', 0.8359);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (104, 1, 'kakak baik banget mau share resep rahasia ini gratis', 'kak banget share resep rahasia gratis', 'POSITIF', 0.7358);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (105, 1, 'beneran worth it dicoba, hasilnya sesuai ekspektasi gan', 'benar worth coba hasil sesuai ekspektasi gan', 'NEGATIF', 0.609);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (106, 1, 'terima kasih infonya kak sangat membantu buat tugas akhir saya tolong', 'terima info kak sangat bantu tugas tolong', 'POSITIF', 0.6854);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (107, 1, 'cantik banget kak masyaAllah, outfitnya beli di mana ya? fix no debat', 'cantik banget kak masyaallah outfitnya beli ya fix no debat', 'POSITIF', 0.8214);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (108, 1, 'bohong banget ini mah ga sesuai realita di lapangan', 'bohong banget mah tidak_sesuai realita lapang', 'NEGATIF', 0.6018);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (109, 1, 'gak usah lebay deh biasa aja ga ada spesialnya', 'tidak_deh tidak_spesial', 'NEGATIF', 0.5714);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (110, 1, 'norak banget sumpah ga ada bagus-bagusnya konten kayak gini', 'norak banget sumpah tidak_konten kayak', 'NEGATIF', 0.5562);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (111, 1, 'paling suka pas bagian tips terakhir, beneran ngebantu', 'suka pas tips benar bantu', 'NEGATIF', 0.5979);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (112, 1, 'bikin emosi nontonnya, informasi yang disampaikan menyesatkan', 'emosi nontonnya informasi sesat', 'NEGATIF', 0.6076);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (113, 1, 'pembodohan publik ini mah, tolong jangan dipercaya deh', 'bodoh publik mah tolong jangan_percaya deh', 'NEGATIF', 0.6278);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (114, 1, 'mantap betul ilmunya, makasih banyak ya kak sukses selalu', 'mantap ilmu terima kasih ya kak sukses', 'POSITIF', 0.7655);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (115, 1, 'makasih banyak ya kak sudah berbagi informasi yang sangat berharga deh', 'terima kasih ya kak bagi informasi sangat harga deh', 'POSITIF', 0.6817);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (116, 1, 'suka banget sama cara penyampaiannya, santai tapi masuk materinya', 'suka banget sampai santai tapi masuk materi', 'POSITIF', 0.6113);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (117, 1, 'parah banget hasilnya ga sesuai sama yang diomongin', 'parah banget hasil tidak_sesuai diomongin', 'POSITIF', 0.5012);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (118, 1, 'masyaAllah kak cantik luar dalam, pembawaannya ramah', 'masyaallah kak cantik bawa ramah', 'POSITIF', 0.7933);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (119, 1, 'bener-bener nyesel ngikutin sarannya, malah tambah ancur ya ampun', 'sesal ikut saran hancur ya ampun', 'POSITIF', 0.5096);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (120, 1, 'konten ga bermutu buang-buang kuota doang nontonnya parah sih', 'konten tidak_mutu kuota doang nontonnya parah sih', 'NEGATIF', 0.5858);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (121, 1, 'kreatif banget idenya kak, gak kepikiran sebelumnya', 'kreatif banget ide kak tidak_pikir', 'POSITIF', 0.8359);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (122, 1, 'cantik banget kak masyaAllah, outfitnya beli di mana ya? parah sih', 'cantik banget kak masyaallah outfitnya beli ya parah sih', 'POSITIF', 0.8082);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (123, 1, 'wah baru tahu trik ini, keren banget makasih tipsnya!', 'trik keren banget terima kasih tipsnya', 'POSITIF', 0.695);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (124, 1, 'kakak baik banget mau share resep rahasia ini gratis', 'kak banget share resep rahasia gratis', 'POSITIF', 0.7358);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (125, 1, 'semangat berkarya kak, konten edukatifnya sangat menginspirasi fix no debat', 'semangat karya kak konten edukatif sangat inspirasi fix no debat', 'POSITIF', 0.8608);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (126, 1, 'lucu banget ekspresinya di akhir video haha ngakak banget', 'lucu banget ekspresi video tertawa akak banget', 'POSITIF', 0.6543);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (127, 1, 'males banget liat kelakuannya caper banget di kamera fix no debat', 'malas banget lihat laku caper banget kamera fix no debat', 'POSITIF', 0.5501);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (128, 1, 'selalu nungguin konten kakak, ga pernah gagal bikin semangat fix no debat', 'tunggu konten kak tidak_gagal semangat fix no debat', 'POSITIF', 0.7758);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (129, 1, 'suka banget sama cara penyampaiannya, santai tapi masuk materinya', 'suka banget sampai santai tapi masuk materi', 'POSITIF', 0.6113);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (130, 1, 'berfaedah banget kontennya kak, auto follow dan share deh', 'faedah banget konten kak auto follow share deh', 'POSITIF', 0.7083);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (131, 1, 'makasih banyak ya kak sudah berbagi informasi yang sangat berharga parah sih', 'terima kasih ya kak bagi informasi sangat harga parah sih', 'POSITIF', 0.6711);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (132, 1, 'terharu nonton video ini, pesan moralnya dapet banget', 'haru tonton video pesan moral banget', 'POSITIF', 0.5154);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (133, 1, 'jelek banget penjelasannya ga jelas muter-muter bikin pusing', 'jelek banget jelas tidak_pusing', 'NEGATIF', 0.5695);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (134, 1, 'terima kasih infonya kak sangat membantu buat tugas akhir saya', 'terima info kak sangat bantu tugas', 'POSITIF', 0.6957);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (135, 1, 'selalu nungguin konten kakak, ga pernah gagal bikin semangat fix no debat', 'tunggu konten kak tidak_gagal semangat fix no debat', 'POSITIF', 0.7758);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (136, 1, 'terharu nonton video ini, pesan moralnya dapet banget fix no debat', 'haru tonton video pesan moral banget fix no debat', 'POSITIF', 0.5217);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (137, 1, 'sangat mengecewakan pelayanannya lambat dan judes fix no debat', 'sangat kecewa layan lambat judes fix no debat', 'POSITIF', 0.5542);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (138, 1, 'terima kasih infonya kak sangat membantu buat tugas akhir saya banget kak', 'terima info kak sangat bantu tugas banget kak', 'POSITIF', 0.8174);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (139, 1, 'selalu nungguin konten kakak, ga pernah gagal bikin semangat', 'tunggu konten kak tidak_gagal semangat', 'POSITIF', 0.7935);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (140, 1, 'wah baru tahu trik ini, keren banget makasih tipsnya! deh', 'trik keren banget terima kasih tipsnya deh', 'POSITIF', 0.671);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (141, 1, 'terharu nonton video ini, pesan moralnya dapet banget', 'haru tonton video pesan moral banget', 'POSITIF', 0.5154);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (142, 1, 'clickbait parah judul sama isinya sama sekali ga nyambung', 'clickbait parah judul isi sekali tidak_sambung', 'NEGATIF', 0.532);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (143, 1, 'lucu banget ekspresinya di akhir video haha ngakak banget', 'lucu banget ekspresi video tertawa akak banget', 'POSITIF', 0.6543);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (144, 1, 'cantik banget kak masyaAllah, outfitnya beli di mana ya? beneran', 'cantik banget kak masyaallah outfitnya beli ya benar', 'POSITIF', 0.7904);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (145, 1, 'paling suka pas bagian tips terakhir, beneran ngebantu', 'suka pas tips benar bantu', 'NEGATIF', 0.5979);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (146, 1, 'bener-bener nyesel ngikutin sarannya, malah tambah ancur', 'sesal ikut saran hancur', 'NEGATIF', 0.5601);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (147, 1, 'ngomong apa sih ga jelas banget artikulasinya jelek parah sih', 'bicara sih tidak_banget artikulasi jelek parah sih', 'NEGATIF', 0.7101);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (148, 1, 'gak suka banget sama cara bicaranya, sombong dan angkuh', 'tidak_suka banget bicara sombong angkuh', 'NEGATIF', 0.6805);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (149, 1, 'bagus pol hasilnya rapi banget kak, berbakat sekali', 'bagus pol hasil rapi banget kak bakat sekali', 'POSITIF', 0.8355);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (150, 1, 'bener-bener nyesel ngikutin sarannya, malah tambah ancur wkwk', 'sesal ikut saran hancur tertawa', 'NEGATIF', 0.5984);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (151, 1, 'konten ga bermutu buang-buang kuota doang nontonnya', 'konten tidak_mutu kuota doang nontonnya', 'NEGATIF', 0.5449);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (152, 1, 'cantik banget kak videonya, sangat bermanfaat dan mengedukasi!', 'cantik banget kak video sangat manfaat edukasi', 'POSITIF', 0.8707);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (153, 1, 'cantik banget kak masyaAllah, outfitnya beli di mana ya?', 'cantik banget kak masyaallah outfitnya beli ya', 'POSITIF', 0.8306);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (154, 1, 'mantap betul ilmunya, makasih banyak ya kak sukses selalu gan', 'mantap ilmu terima kasih ya kak sukses gan', 'POSITIF', 0.7655);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (155, 1, 'norak banget sumpah ga ada bagus-bagusnya konten kayak gini fix no debat', 'norak banget sumpah tidak_konten kayak fix no debat', 'NEGATIF', 0.543);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (156, 1, 'keren abis tutorialnya, langsung paham cara pakainya', 'keren habis tutorial langsung paham pakai', 'POSITIF', 0.5661);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (157, 1, 'lucu banget ekspresinya di akhir video haha ngakak banget fix no debat', 'lucu banget ekspresi video tertawa akak banget fix no debat', 'POSITIF', 0.6516);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (158, 1, 'konten toxic kayak gini kok masih bisa viral heran', 'konten toxic kayak viral heran', 'NEGATIF', 0.5503);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (159, 1, 'kreatif banget idenya kak, gak kepikiran sebelumnya', 'kreatif banget ide kak tidak_pikir', 'POSITIF', 0.8359);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (160, 1, 'gak usah lebay deh biasa aja ga ada spesialnya', 'tidak_deh tidak_spesial', 'NEGATIF', 0.5714);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (161, 1, 'jelek parah kualitasnya, baru dipakai sekali langsung rusak sumpah', 'jelek parah kualitas pakai sekali langsung rusak sumpah', 'NEGATIF', 0.6078);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (162, 1, 'mantap betul ilmunya, makasih banyak ya kak sukses selalu banget kak', 'mantap ilmu terima kasih ya kak sukses banget kak', 'POSITIF', 0.8536);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (163, 1, 'cantik banget kak videonya, sangat bermanfaat dan mengedukasi!', 'cantik banget kak video sangat manfaat edukasi', 'POSITIF', 0.8707);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (164, 1, 'wah baru tahu trik ini, keren banget makasih tipsnya!', 'trik keren banget terima kasih tipsnya', 'POSITIF', 0.695);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (165, 1, 'gak usah lebay deh biasa aja ga ada spesialnya', 'tidak_deh tidak_spesial', 'NEGATIF', 0.5714);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (166, 1, 'cantik banget kak videonya, sangat bermanfaat dan mengedukasi! wkwk', 'cantik banget kak video sangat manfaat edukasi tertawa', 'POSITIF', 0.8277);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (167, 1, 'makasih banyak ya kak sudah berbagi informasi yang sangat berharga deh', 'terima kasih ya kak bagi informasi sangat harga deh', 'POSITIF', 0.6817);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (168, 1, 'penjelasannya detail dan sangat mudah dipahami pemula', 'jelas detail sangat mudah paham mula', 'POSITIF', 0.5946);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (169, 1, 'bagus pol hasilnya rapi banget kak, berbakat sekali', 'bagus pol hasil rapi banget kak bakat sekali', 'POSITIF', 0.8355);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (170, 1, 'wah baru tahu trik ini, keren banget makasih tipsnya! fix no debat', 'trik keren banget terima kasih tipsnya fix no debat', 'POSITIF', 0.6865);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (171, 1, 'berfaedah banget kontennya kak, auto follow dan share', 'faedah banget konten kak auto follow share', 'POSITIF', 0.7399);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (172, 1, 'jelek banget penjelasannya ga jelas muter-muter bikin pusing fix no debat', 'jelek banget jelas tidak_pusing fix no debat', 'NEGATIF', 0.5523);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (173, 1, 'bagus banget kualitas videonya, visual dan audionya jernih banget kak', 'bagus banget kualitas video visual audio jernih banget kak', 'POSITIF', 0.8738);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (174, 1, 'rekomendasi terbaik sih ini, udah coba dan hasilnya memuaskan', 'rekomendasi baik sih coba hasil muas', 'POSITIF', 0.5098);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (175, 1, 'bagus pol hasilnya rapi banget kak, berbakat sekali sumpah', 'bagus pol hasil rapi banget kak bakat sekali sumpah', 'POSITIF', 0.8233);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (176, 1, 'gak usah lebay deh biasa aja ga ada spesialnya', 'tidak_deh tidak_spesial', 'NEGATIF', 0.5714);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (177, 1, 'terima kasih infonya kak sangat membantu buat tugas akhir saya deh', 'terima info kak sangat bantu tugas deh', 'POSITIF', 0.6714);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (178, 1, 'bohong banget ini mah ga sesuai realita di lapangan fix no debat', 'bohong banget mah tidak_sesuai realita lapang fix no debat', 'NEGATIF', 0.5835);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (179, 1, 'gak suka banget sama cara bicaranya, sombong dan angkuh parah sih', 'tidak_suka banget bicara sombong angkuh parah sih', 'NEGATIF', 0.7009);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (180, 1, 'lucu banget ekspresinya di akhir video haha ngakak banget tolong', 'lucu banget ekspresi video tertawa akak banget tolong', 'POSITIF', 0.6358);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (181, 1, 'bener-bener nyesel ngikutin sarannya, malah tambah ancur deh', 'sesal ikut saran hancur deh', 'NEGATIF', 0.5636);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (182, 1, 'sok cantik banget jadi cewek, gayanya norak dan alay', 'sok cantik banget cewek gaya norak alay', 'NEGATIF', 0.5901);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (183, 1, 'paling suka pas bagian tips terakhir, beneran ngebantu banget kak', 'suka pas tips benar bantu banget kak', 'POSITIF', 0.6738);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (184, 1, 'jelek parah kualitasnya, baru dipakai sekali langsung rusak', 'jelek parah kualitas pakai sekali langsung rusak', 'NEGATIF', 0.6173);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (185, 1, 'salah info tuh, belajar lagi sebelum bikin video edukasi ya ampun', 'salah info tuh ajar video edukasi ya ampun', 'POSITIF', 0.5148);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (186, 1, 'bohong banget ini mah ga sesuai realita di lapangan', 'bohong banget mah tidak_sesuai realita lapang', 'NEGATIF', 0.6018);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (187, 1, 'ga usah sok pintar deh, teorinya salah total itu', 'tidak_sok pintar deh teori salah total', 'POSITIF', 0.5149);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (188, 1, 'konten toxic kayak gini kok masih bisa viral heran', 'konten toxic kayak viral heran', 'NEGATIF', 0.5503);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (189, 1, 'cantik banget kak masyaAllah, outfitnya beli di mana ya?', 'cantik banget kak masyaallah outfitnya beli ya', 'POSITIF', 0.8306);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (190, 1, 'jelek banget penjelasannya ga jelas muter-muter bikin pusing', 'jelek banget jelas tidak_pusing', 'NEGATIF', 0.5695);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (191, 1, 'salah info tuh, belajar lagi sebelum bikin video edukasi', 'salah info tuh ajar video edukasi', 'NEGATIF', 0.5511);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (192, 1, 'bikin emosi nontonnya, informasi yang disampaikan menyesatkan', 'emosi nontonnya informasi sesat', 'NEGATIF', 0.6076);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (193, 1, 'suaranya adem banget didenger, penjelasannya runtut', 'suara adem banget didenger jelas runtut', 'POSITIF', 0.5084);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (194, 1, 'parah banget hasilnya ga sesuai sama yang diomongin', 'parah banget hasil tidak_sesuai diomongin', 'POSITIF', 0.5012);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (195, 1, 'semoga rezekinya lancar terus kak, kontennya selalu positif', 'moga rezeki lancar kak konten positif', 'POSITIF', 0.8595);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (196, 1, 'parah banget hasilnya ga sesuai sama yang diomongin', 'parah banget hasil tidak_sesuai diomongin', 'POSITIF', 0.5012);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (197, 1, 'penjelasannya detail dan sangat mudah dipahami pemula', 'jelas detail sangat mudah paham mula', 'POSITIF', 0.5946);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (198, 1, 'buruk banget kualitas videonya burem ga keliatan apa-apa tolong', 'buruk banget kualitas video buram tidak_tolong', 'NEGATIF', 0.5211);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (199, 1, 'beneran worth it dicoba, hasilnya sesuai ekspektasi banget kak', 'benar worth coba hasil sesuai ekspektasi banget kak', 'POSITIF', 0.6485);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (200, 1, 'rekomendasi terbaik sih ini, udah coba dan hasilnya memuaskan ya ampun', 'rekomendasi baik sih coba hasil muas ya ampun', 'POSITIF', 0.589);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (201, 1, 'kakak baik banget mau share resep rahasia ini gratis', 'kak banget share resep rahasia gratis', 'POSITIF', 0.7358);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (202, 1, 'konten bermutu kayak gini yang harusnya trending di tiktok', 'konten mutu kayak trending tiktok', 'POSITIF', 0.5259);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (203, 1, 'gak suka banget sama cara bicaranya, sombong dan angkuh', 'tidak_suka banget bicara sombong angkuh', 'NEGATIF', 0.6805);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (204, 1, 'mantap betul ilmunya, makasih banyak ya kak sukses selalu', 'mantap ilmu terima kasih ya kak sukses', 'POSITIF', 0.7655);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (205, 1, 'jangan beli di sini penipu barangnya sangat mengecewakan', 'jangan_beli tipu barang sangat kecewa', 'NEGATIF', 0.5725);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (206, 1, 'buruk banget kualitas videonya burem ga keliatan apa-apa deh', 'buruk banget kualitas video buram tidak_deh', 'NEGATIF', 0.5211);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (207, 1, 'konten bermutu kayak gini yang harusnya trending di tiktok', 'konten mutu kayak trending tiktok', 'POSITIF', 0.5259);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (208, 1, 'konten bermutu kayak gini yang harusnya trending di tiktok sumpah', 'konten mutu kayak trending tiktok sumpah', 'POSITIF', 0.5195);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (209, 1, 'cantik banget kak videonya, sangat bermanfaat dan mengedukasi!', 'cantik banget kak video sangat manfaat edukasi', 'POSITIF', 0.8707);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (210, 1, 'bagus pol hasilnya rapi banget kak, berbakat sekali', 'bagus pol hasil rapi banget kak bakat sekali', 'POSITIF', 0.8355);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (211, 1, 'terharu nonton video ini, pesan moralnya dapet banget', 'haru tonton video pesan moral banget', 'POSITIF', 0.5154);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (212, 1, 'jangan beli di sini penipu barangnya sangat mengecewakan', 'jangan_beli tipu barang sangat kecewa', 'NEGATIF', 0.5725);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (213, 1, 'beneran worth it dicoba, hasilnya sesuai ekspektasi', 'benar worth coba hasil sesuai ekspektasi', 'NEGATIF', 0.609);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (214, 1, 'masyaAllah kak cantik luar dalam, pembawaannya ramah', 'masyaallah kak cantik bawa ramah', 'POSITIF', 0.7933);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (215, 1, 'bohong banget ini mah ga sesuai realita di lapangan deh', 'bohong banget mah tidak_sesuai realita lapang deh', 'NEGATIF', 0.6011);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (216, 1, 'bohong banget ini mah ga sesuai realita di lapangan', 'bohong banget mah tidak_sesuai realita lapang', 'NEGATIF', 0.6018);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (217, 1, 'berfaedah banget kontennya kak, auto follow dan share', 'faedah banget konten kak auto follow share', 'POSITIF', 0.7399);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (218, 1, 'cantik banget kak videonya, sangat bermanfaat dan mengedukasi!', 'cantik banget kak video sangat manfaat edukasi', 'POSITIF', 0.8707);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (219, 1, 'paling suka pas bagian tips terakhir, beneran ngebantu beneran', 'suka pas tips benar bantu benar', 'NEGATIF', 0.6178);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (220, 1, 'berfaedah banget kontennya kak, auto follow dan share', 'faedah banget konten kak auto follow share', 'POSITIF', 0.7399);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (221, 1, 'terharu nonton video ini, pesan moralnya dapet banget banget kak', 'haru tonton video pesan moral banget banget kak', 'POSITIF', 0.7124);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (222, 1, 'rekomendasi terbaik sih ini, udah coba dan hasilnya memuaskan', 'rekomendasi baik sih coba hasil muas', 'POSITIF', 0.5098);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (223, 1, 'bener-bener nyesel ngikutin sarannya, malah tambah ancur', 'sesal ikut saran hancur', 'NEGATIF', 0.5601);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (224, 1, 'parah banget hasilnya ga sesuai sama yang diomongin fix no debat', 'parah banget hasil tidak_sesuai diomongin fix no debat', 'POSITIF', 0.5088);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (225, 1, 'suaranya adem banget didenger, penjelasannya runtut', 'suara adem banget didenger jelas runtut', 'POSITIF', 0.5084);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (226, 1, 'jelek banget penjelasannya ga jelas muter-muter bikin pusing', 'jelek banget jelas tidak_pusing', 'NEGATIF', 0.5695);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (227, 1, 'gak suka banget sama cara bicaranya, sombong dan angkuh', 'tidak_suka banget bicara sombong angkuh', 'NEGATIF', 0.6805);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (228, 1, 'lebay banget deh ekspresinya dibuat-buat ga natural', 'banget deh ekspresi tidak_natural', 'NEGATIF', 0.513);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (229, 1, 'keren abis tutorialnya, langsung paham cara pakainya deh', 'keren habis tutorial langsung paham pakai deh', 'POSITIF', 0.5526);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (230, 1, 'makasih banyak ya kak sudah berbagi informasi yang sangat berharga banget kak', 'terima kasih ya kak bagi informasi sangat harga banget kak', 'POSITIF', 0.8062);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (231, 1, 'rekomendasi terbaik sih ini, udah coba dan hasilnya memuaskan', 'rekomendasi baik sih coba hasil muas', 'POSITIF', 0.5098);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (232, 1, 'bagus banget kualitas videonya, visual dan audionya jernih deh', 'bagus banget kualitas video visual audio jernih deh', 'POSITIF', 0.6998);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (233, 1, 'parah banget hasilnya ga sesuai sama yang diomongin gan', 'parah banget hasil tidak_sesuai diomongin gan', 'POSITIF', 0.5012);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (234, 1, 'ngomong apa sih ga jelas banget artikulasinya jelek', 'bicara sih tidak_banget artikulasi jelek', 'NEGATIF', 0.7061);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (235, 1, 'males banget liat kelakuannya caper banget di kamera', 'malas banget lihat laku caper banget kamera', 'POSITIF', 0.546);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (236, 1, 'bohong banget ini mah ga sesuai realita di lapangan', 'bohong banget mah tidak_sesuai realita lapang', 'NEGATIF', 0.6018);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (237, 1, 'jelek parah kualitasnya, baru dipakai sekali langsung rusak wkwk', 'jelek parah kualitas pakai sekali langsung rusak tertawa', 'NEGATIF', 0.6509);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (238, 1, 'jangan beli di sini penipu barangnya sangat mengecewakan', 'jangan_beli tipu barang sangat kecewa', 'NEGATIF', 0.5725);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (239, 1, 'terharu nonton video ini, pesan moralnya dapet banget', 'haru tonton video pesan moral banget', 'POSITIF', 0.5154);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (240, 1, 'penjelasannya detail dan sangat mudah dipahami pemula', 'jelas detail sangat mudah paham mula', 'POSITIF', 0.5946);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (241, 1, 'lucu banget ekspresinya di akhir video haha ngakak banget beneran', 'lucu banget ekspresi video tertawa akak banget benar', 'POSITIF', 0.6058);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (242, 1, 'ga usah sok pintar deh, teorinya salah total itu', 'tidak_sok pintar deh teori salah total', 'POSITIF', 0.5149);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (243, 1, 'sangat mengecewakan pelayanannya lambat dan judes', 'sangat kecewa layan lambat judes', 'POSITIF', 0.5567);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (244, 1, 'salah info tuh, belajar lagi sebelum bikin video edukasi', 'salah info tuh ajar video edukasi', 'NEGATIF', 0.5511);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (245, 1, 'suaranya adem banget didenger, penjelasannya runtut', 'suara adem banget didenger jelas runtut', 'POSITIF', 0.5084);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (246, 1, 'keren abis tutorialnya, langsung paham cara pakainya', 'keren habis tutorial langsung paham pakai', 'POSITIF', 0.5661);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (247, 1, 'suaranya adem banget didenger, penjelasannya runtut', 'suara adem banget didenger jelas runtut', 'POSITIF', 0.5084);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (248, 1, 'pembodohan publik ini mah, tolong jangan dipercaya', 'bodoh publik mah tolong jangan_percaya', 'NEGATIF', 0.6374);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (249, 1, 'beneran worth it dicoba, hasilnya sesuai ekspektasi', 'benar worth coba hasil sesuai ekspektasi', 'NEGATIF', 0.609);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (250, 1, 'konten toxic kayak gini kok masih bisa viral heran', 'konten toxic kayak viral heran', 'NEGATIF', 0.5503);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (251, 1, 'clickbait parah judul sama isinya sama sekali ga nyambung', 'clickbait parah judul isi sekali tidak_sambung', 'NEGATIF', 0.532);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (252, 1, 'berfaedah banget kontennya kak, auto follow dan share', 'faedah banget konten kak auto follow share', 'POSITIF', 0.7399);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (253, 1, 'masyaAllah kak cantik luar dalam, pembawaannya ramah', 'masyaallah kak cantik bawa ramah', 'POSITIF', 0.7933);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (254, 1, 'kreatif banget idenya kak, gak kepikiran sebelumnya', 'kreatif banget ide kak tidak_pikir', 'POSITIF', 0.8359);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (255, 1, 'makin ke sini kontennya makin garing dan ga bermakna deh', 'konten garing tidak_makna deh', 'NEGATIF', 0.5605);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (256, 1, 'bagus banget kualitas videonya, visual dan audionya jernih', 'bagus banget kualitas video visual audio jernih', 'POSITIF', 0.7399);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (257, 1, 'jelek banget penjelasannya ga jelas muter-muter bikin pusing', 'jelek banget jelas tidak_pusing', 'NEGATIF', 0.5695);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (258, 1, 'jangan beli di sini penipu barangnya sangat mengecewakan', 'jangan_beli tipu barang sangat kecewa', 'NEGATIF', 0.5725);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (259, 1, 'ga usah sok pintar deh, teorinya salah total itu', 'tidak_sok pintar deh teori salah total', 'POSITIF', 0.5149);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (260, 1, 'bagus pol hasilnya rapi banget kak, berbakat sekali fix no debat', 'bagus pol hasil rapi banget kak bakat sekali fix no debat', 'POSITIF', 0.8264);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (261, 1, 'rekomendasi terbaik sih ini, udah coba dan hasilnya memuaskan', 'rekomendasi baik sih coba hasil muas', 'POSITIF', 0.5098);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (262, 1, 'kreatif banget idenya kak, gak kepikiran sebelumnya', 'kreatif banget ide kak tidak_pikir', 'POSITIF', 0.8359);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (263, 1, 'gak usah lebay deh biasa aja ga ada spesialnya', 'tidak_deh tidak_spesial', 'NEGATIF', 0.5714);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (264, 1, 'males banget liat kelakuannya caper banget di kamera gan', 'malas banget lihat laku caper banget kamera gan', 'POSITIF', 0.546);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (265, 1, 'mantap betul ilmunya, makasih banyak ya kak sukses selalu', 'mantap ilmu terima kasih ya kak sukses', 'POSITIF', 0.7655);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (266, 1, 'terharu nonton video ini, pesan moralnya dapet banget', 'haru tonton video pesan moral banget', 'POSITIF', 0.5154);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (267, 1, 'terharu nonton video ini, pesan moralnya dapet banget', 'haru tonton video pesan moral banget', 'POSITIF', 0.5154);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (268, 1, 'jelek parah kualitasnya, baru dipakai sekali langsung rusak', 'jelek parah kualitas pakai sekali langsung rusak', 'NEGATIF', 0.6173);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (269, 1, 'suaranya adem banget didenger, penjelasannya runtut', 'suara adem banget didenger jelas runtut', 'POSITIF', 0.5084);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (270, 1, 'masyaAllah kak cantik luar dalam, pembawaannya ramah', 'masyaallah kak cantik bawa ramah', 'POSITIF', 0.7933);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (271, 1, 'sangat mengecewakan pelayanannya lambat dan judes fix no debat', 'sangat kecewa layan lambat judes fix no debat', 'POSITIF', 0.5542);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (272, 1, 'penjelasannya detail dan sangat mudah dipahami pemula ya ampun', 'jelas detail sangat mudah paham mula ya ampun', 'POSITIF', 0.6585);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (273, 1, 'rekomendasi terbaik sih ini, udah coba dan hasilnya memuaskan sumpah', 'rekomendasi baik sih coba hasil muas sumpah', 'POSITIF', 0.5075);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (274, 1, 'terima kasih infonya kak sangat membantu buat tugas akhir saya', 'terima info kak sangat bantu tugas', 'POSITIF', 0.6957);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (275, 1, 'kakak baik banget mau share resep rahasia ini gratis deh', 'kak banget share resep rahasia gratis deh', 'POSITIF', 0.6986);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (276, 1, 'sangat mengecewakan pelayanannya lambat dan judes', 'sangat kecewa layan lambat judes', 'POSITIF', 0.5567);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (277, 1, 'sok cantik banget jadi cewek, gayanya norak dan alay', 'sok cantik banget cewek gaya norak alay', 'NEGATIF', 0.5901);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (278, 1, 'berfaedah banget kontennya kak, auto follow dan share', 'faedah banget konten kak auto follow share', 'POSITIF', 0.7399);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (279, 1, 'ga usah sok pintar deh, teorinya salah total itu', 'tidak_sok pintar deh teori salah total', 'POSITIF', 0.5149);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (280, 1, 'parah banget hasilnya ga sesuai sama yang diomongin', 'parah banget hasil tidak_sesuai diomongin', 'POSITIF', 0.5012);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (281, 1, 'makin ke sini kontennya makin garing dan ga bermakna beneran', 'konten garing tidak_makna benar', 'NEGATIF', 0.6075);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (282, 1, 'sok cantik banget jadi cewek, gayanya norak dan alay tolong', 'sok cantik banget cewek gaya norak alay tolong', 'NEGATIF', 0.583);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (283, 1, 'wah baru tahu trik ini, keren banget makasih tipsnya!', 'trik keren banget terima kasih tipsnya', 'POSITIF', 0.695);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (284, 1, 'bagus pol hasilnya rapi banget kak, berbakat sekali ya ampun', 'bagus pol hasil rapi banget kak bakat sekali ya ampun', 'POSITIF', 0.8608);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (285, 1, 'suka banget sama cara penyampaiannya, santai tapi masuk materinya fix no debat', 'suka banget sampai santai tapi masuk materi fix no debat', 'POSITIF', 0.6088);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (286, 1, 'terima kasih infonya kak sangat membantu buat tugas akhir saya', 'terima info kak sangat bantu tugas', 'POSITIF', 0.6957);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (287, 1, 'lebay banget deh ekspresinya dibuat-buat ga natural', 'banget deh ekspresi tidak_natural', 'NEGATIF', 0.513);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (288, 1, 'kreatif banget idenya kak, gak kepikiran sebelumnya', 'kreatif banget ide kak tidak_pikir', 'POSITIF', 0.8359);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (289, 1, 'keren abis tutorialnya, langsung paham cara pakainya', 'keren habis tutorial langsung paham pakai', 'POSITIF', 0.5661);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (290, 1, 'terima kasih infonya kak sangat membantu buat tugas akhir saya fix no debat', 'terima info kak sangat bantu tugas fix no debat', 'POSITIF', 0.687);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (291, 1, 'salah info tuh, belajar lagi sebelum bikin video edukasi', 'salah info tuh ajar video edukasi', 'NEGATIF', 0.5511);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (292, 1, 'sok cantik banget jadi cewek, gayanya norak dan alay tolong', 'sok cantik banget cewek gaya norak alay tolong', 'NEGATIF', 0.583);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (293, 1, 'ngomong apa sih ga jelas banget artikulasinya jelek', 'bicara sih tidak_banget artikulasi jelek', 'NEGATIF', 0.7061);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (294, 1, 'suka banget sama cara penyampaiannya, santai tapi masuk materinya fix no debat', 'suka banget sampai santai tapi masuk materi fix no debat', 'POSITIF', 0.6088);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (295, 1, 'bagus pol hasilnya rapi banget kak, berbakat sekali beneran', 'bagus pol hasil rapi banget kak bakat sekali benar', 'POSITIF', 0.7964);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (296, 1, 'selalu nungguin konten kakak, ga pernah gagal bikin semangat fix no debat', 'tunggu konten kak tidak_gagal semangat fix no debat', 'POSITIF', 0.7758);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (297, 1, 'parah banget hasilnya ga sesuai sama yang diomongin wkwk', 'parah banget hasil tidak_sesuai diomongin tertawa', 'NEGATIF', 0.549);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (298, 1, 'rugi waktu dan kuota nonton video ginian ga ada faedahnya', 'rugi kuota tonton video tidak_faedah', 'NEGATIF', 0.6555);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (299, 1, 'rugi waktu dan kuota nonton video ginian ga ada faedahnya gan', 'rugi kuota tonton video tidak_faedah gan', 'NEGATIF', 0.6555);
|
||||||
|
INSERT INTO `comments` (`id`, `analysis_id`, `original_comment`, `cleaned_comment`, `sentiment`, `probability`) VALUES (300, 1, 'sangat mengecewakan pelayanannya lambat dan judes', 'sangat kecewa layan lambat judes', 'POSITIF', 0.5567);
|
||||||
|
|
||||||
|
ALTER TABLE `users` AUTO_INCREMENT = 2;
|
||||||
|
ALTER TABLE `analyses` AUTO_INCREMENT = 2;
|
||||||
|
ALTER TABLE `comments` AUTO_INCREMENT = 301;
|
||||||
|
|
||||||
|
SET FOREIGN_KEY_CHECKS=1;
|
||||||
Binary file not shown.
|
|
@ -0,0 +1,3 @@
|
||||||
|
Library for stemming Indonesian (Bahasa) text
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
pip
|
||||||
|
|
@ -0,0 +1,25 @@
|
||||||
|
Metadata-Version: 2.0
|
||||||
|
Name: Sastrawi
|
||||||
|
Version: 1.0.1
|
||||||
|
Summary: Library for stemming Indonesian (Bahasa) text
|
||||||
|
Home-page: https://github.com/har07/sastrawi
|
||||||
|
Author: Hanif Amal Robbani
|
||||||
|
Author-email: dev.har07@gmail.com
|
||||||
|
License: MIT
|
||||||
|
Keywords: nlp stemming indonesia indonesian
|
||||||
|
Platform: UNKNOWN
|
||||||
|
Classifier: Development Status :: 4 - Beta
|
||||||
|
Classifier: Intended Audience :: Information Technology
|
||||||
|
Classifier: Intended Audience :: Science/Research
|
||||||
|
Classifier: Topic :: Text Processing :: Linguistic
|
||||||
|
Classifier: License :: OSI Approved :: MIT License
|
||||||
|
Classifier: Programming Language :: Python :: 2
|
||||||
|
Classifier: Programming Language :: Python :: 2.7
|
||||||
|
Classifier: Programming Language :: Python :: 3
|
||||||
|
Classifier: Programming Language :: Python :: 3.3
|
||||||
|
Classifier: Programming Language :: Python :: 3.4
|
||||||
|
Classifier: Programming Language :: Python :: 3.5
|
||||||
|
|
||||||
|
Library for stemming Indonesian (Bahasa) text
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,162 @@
|
||||||
|
Sastrawi-1.0.1.dist-info/DESCRIPTION.rst,sha256=_8EMTiWZFL-fc08weStUaDW77aRZDxA645j8clIUeYo,48
|
||||||
|
Sastrawi-1.0.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||||
|
Sastrawi-1.0.1.dist-info/METADATA,sha256=kYLckaBVXokwQ64BLaVfHSjRIHFg7bpWu08ZEgs7Tjg,909
|
||||||
|
Sastrawi-1.0.1.dist-info/RECORD,,
|
||||||
|
Sastrawi-1.0.1.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||||
|
Sastrawi-1.0.1.dist-info/WHEEL,sha256=5f-Lb0dq-Ei5P75pgK065AnrFl2dK_ZqskZBpCbWERA,116
|
||||||
|
Sastrawi-1.0.1.dist-info/metadata.json,sha256=LJkTV4Te02EZPjh-VeOxsW4ov4ieFsbtlkYEX0JUI4I,956
|
||||||
|
Sastrawi-1.0.1.dist-info/top_level.txt,sha256=G5gMS6UiyRAF5R4S6kljfGyIJLHVgEltCUUyYWO9ujk,9
|
||||||
|
Sastrawi/Dictionary/ArrayDictionary.py,sha256=T7ES9rVIiw3Njmd2h73Bm7Ds2PqIcai2MkzgJANnE8Q,628
|
||||||
|
Sastrawi/Dictionary/DictionaryInterface.py,sha256=3O6q8hGdEALlQGXYcIBjVhvaQ0HlZEehVSiXaRgO8aY,121
|
||||||
|
Sastrawi/Dictionary/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||||
|
Sastrawi/Dictionary/__pycache__/ArrayDictionary.cpython-311.pyc,,
|
||||||
|
Sastrawi/Dictionary/__pycache__/DictionaryInterface.cpython-311.pyc,,
|
||||||
|
Sastrawi/Dictionary/__pycache__/__init__.cpython-311.pyc,,
|
||||||
|
Sastrawi/Morphology/Disambiguator/DisambiguatorPrefixRule1.py,sha256=mkf-glrZNQCDrMyGVZv6VRXIf_P3TmrpWMErosGHCP8,733
|
||||||
|
Sastrawi/Morphology/Disambiguator/DisambiguatorPrefixRule10.py,sha256=0YozsELBLIfkVlVqm3lop_q_LqBoVWRyZg5XUxMqtOw,448
|
||||||
|
Sastrawi/Morphology/Disambiguator/DisambiguatorPrefixRule11.py,sha256=DG2aUH9PlDQQnZF7k3adN7fnuES8qfmZQWzFkHsdxgk,412
|
||||||
|
Sastrawi/Morphology/Disambiguator/DisambiguatorPrefixRule12.py,sha256=8b7KSqqPUQttR0WM31pR0qiK6OQF9r9EqJ3Z_NyCMP0,625
|
||||||
|
Sastrawi/Morphology/Disambiguator/DisambiguatorPrefixRule13.py,sha256=N8_T9VxUYVBB2wEDy58v_fPaTaPFIF12Kk_ThZCGzqY,831
|
||||||
|
Sastrawi/Morphology/Disambiguator/DisambiguatorPrefixRule14.py,sha256=v_8d2j1KcEwJn1Ugpb5Xjne7ZgzHG98ZcdZl6RgX0p4,933
|
||||||
|
Sastrawi/Morphology/Disambiguator/DisambiguatorPrefixRule15.py,sha256=RWhNcDLjLKUulVPB7KxAup15UxOdXIc4UwhzsPJjCNU,807
|
||||||
|
Sastrawi/Morphology/Disambiguator/DisambiguatorPrefixRule16.py,sha256=TFe1m6DFMkxh4jmsDE5wcNIZlfwnaCyotgXaltu_oIY,671
|
||||||
|
Sastrawi/Morphology/Disambiguator/DisambiguatorPrefixRule17.py,sha256=epujL8knVIMzz41MKrMFW_-GsNk5xH23AWP-8ggW7yA,1585
|
||||||
|
Sastrawi/Morphology/Disambiguator/DisambiguatorPrefixRule18.py,sha256=8p9C5I6_DNxr0xQfB45z3lgOd3hx_WGNtwO8jRaBaQs,980
|
||||||
|
Sastrawi/Morphology/Disambiguator/DisambiguatorPrefixRule19.py,sha256=zM_q79o1cH-LheWjWwnB0DZlovUkFuWOrgrwN5c14-8,654
|
||||||
|
Sastrawi/Morphology/Disambiguator/DisambiguatorPrefixRule2.py,sha256=4B0dw78JdmWA3utIYBEy8RlrkaBehw361qAN9eNUVNs,587
|
||||||
|
Sastrawi/Morphology/Disambiguator/DisambiguatorPrefixRule20.py,sha256=HZjrJUICRuC-qetfjR_yH6a-d8silB1JUVmyZ14DwQQ,430
|
||||||
|
Sastrawi/Morphology/Disambiguator/DisambiguatorPrefixRule21.py,sha256=xG5a9c-B42Ejen9JEIiJK6CRifB0bmCv4h3RDZukSsI,779
|
||||||
|
Sastrawi/Morphology/Disambiguator/DisambiguatorPrefixRule23.py,sha256=mXsNZ5oAo7JUDH1SdAEyLSQcxLj1fHcg9MSZWaPJ2zI,579
|
||||||
|
Sastrawi/Morphology/Disambiguator/DisambiguatorPrefixRule24.py,sha256=_k4H6wbuvSWt7iYdFGeDjqHowJ99cTLu4tmU4kt7L2I,580
|
||||||
|
Sastrawi/Morphology/Disambiguator/DisambiguatorPrefixRule25.py,sha256=Y2EEUp8N9ZkS3-iIBBKW1Pakj8w7khGLIjog9Hb3nuk,412
|
||||||
|
Sastrawi/Morphology/Disambiguator/DisambiguatorPrefixRule26.py,sha256=PXPsMHaHf6UJIR-zWs15EDYpyyuqIfaXweHZup9wjZE,831
|
||||||
|
Sastrawi/Morphology/Disambiguator/DisambiguatorPrefixRule27.py,sha256=IndtHEV413QpQLgy8BQvJ6-71WA_7uJDBxRF3534Wws,421
|
||||||
|
Sastrawi/Morphology/Disambiguator/DisambiguatorPrefixRule28.py,sha256=vPNU_LjOSFe3oL1fEfIS5JylgxV7qjwo5XQxBpxuuUs,807
|
||||||
|
Sastrawi/Morphology/Disambiguator/DisambiguatorPrefixRule29.py,sha256=RIBfzVMTPMNAIeIfVoCGG_3C3ou8XcQozU31yQQO6-c,551
|
||||||
|
Sastrawi/Morphology/Disambiguator/DisambiguatorPrefixRule3.py,sha256=DhH2XPxVjwkpE_OevKKhDCSN58EbUI0VhiXWTczCw9g,587
|
||||||
|
Sastrawi/Morphology/Disambiguator/DisambiguatorPrefixRule30.py,sha256=XSmgZNEUIXnoXbXs7jvTv5HznQLq3xV6Sv9hxLlBC1M,1187
|
||||||
|
Sastrawi/Morphology/Disambiguator/DisambiguatorPrefixRule31.py,sha256=h5OTYFJ9ttIsI2EJvhUgENfhX182_MFKM6qfGyaJgDA,896
|
||||||
|
Sastrawi/Morphology/Disambiguator/DisambiguatorPrefixRule32.py,sha256=LHcaCxtknvQx20HGPOhpPVJjI_ezdl0C3yYHuLlEUkE,494
|
||||||
|
Sastrawi/Morphology/Disambiguator/DisambiguatorPrefixRule34.py,sha256=yMRECW2UrPXLIb5Iqojpei0T0ge9z_Y2Yzk2FOp6aAc,564
|
||||||
|
Sastrawi/Morphology/Disambiguator/DisambiguatorPrefixRule35.py,sha256=0tgnroHCLmCOd6nDfANpvLOCpHxekzWUPyFbs_3xCuU,498
|
||||||
|
Sastrawi/Morphology/Disambiguator/DisambiguatorPrefixRule36.py,sha256=3YTpKX1MjXxTz4iUjHHuBTQS7XZ9kVx6TdwWhd8Bw5w,513
|
||||||
|
Sastrawi/Morphology/Disambiguator/DisambiguatorPrefixRule37.py,sha256=6LVvA-oKUXHIZFMuefkiE3bjF1XAnVyilCHn2uZw8Tc,925
|
||||||
|
Sastrawi/Morphology/Disambiguator/DisambiguatorPrefixRule38.py,sha256=mTvut4OSqE61vhuY6_X0LWxkQ1dj0Ek114fTwTiG9F4,925
|
||||||
|
Sastrawi/Morphology/Disambiguator/DisambiguatorPrefixRule39.py,sha256=GACTRhl5dFZ9rSTHh_X45sUqHKC82YkfQLHCLhR8vDQ,925
|
||||||
|
Sastrawi/Morphology/Disambiguator/DisambiguatorPrefixRule4.py,sha256=lrGeYHdHZl6kGoQQC5-iBYktM8qZJ1KsGJuZRioTNnQ,308
|
||||||
|
Sastrawi/Morphology/Disambiguator/DisambiguatorPrefixRule40.py,sha256=HriW1IGUdGhMBlzpfY7KMKVN5byoINQr420X3vz0i4g,925
|
||||||
|
Sastrawi/Morphology/Disambiguator/DisambiguatorPrefixRule41.py,sha256=JokRY9g-B5Te_dEzo26PTVMFQrW2fZ60_Gk8kKWxkuo,357
|
||||||
|
Sastrawi/Morphology/Disambiguator/DisambiguatorPrefixRule42.py,sha256=82SDsYz_Zq5OXBcPNCRTzHCN33YJ7GqKmx2eMNjiYv4,362
|
||||||
|
Sastrawi/Morphology/Disambiguator/DisambiguatorPrefixRule5.py,sha256=jGOKFdjh38m3CUV-5K2m0Dxu7oXSq3B5Zh1WPDpzDh8,492
|
||||||
|
Sastrawi/Morphology/Disambiguator/DisambiguatorPrefixRule6.py,sha256=4W3T-_c1Aokg0rTuQ5SfeP_XvdQYu4d2cZ5sxmCbhwg,733
|
||||||
|
Sastrawi/Morphology/Disambiguator/DisambiguatorPrefixRule7.py,sha256=aKcKLLPTd8IIwEytEZtYcSmVbFA_4SeXZbK3b3uH1Ko,524
|
||||||
|
Sastrawi/Morphology/Disambiguator/DisambiguatorPrefixRule8.py,sha256=3znbuxXU62dQuhzN4-WHHftGgfXZ-orRfl70JfThLRI,571
|
||||||
|
Sastrawi/Morphology/Disambiguator/DisambiguatorPrefixRule9.py,sha256=LgXY1bJJHUow4yIuH084I5qFmcKcBeCLD1DbIoRTpXE,568
|
||||||
|
Sastrawi/Morphology/Disambiguator/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||||
|
Sastrawi/Morphology/Disambiguator/__pycache__/DisambiguatorPrefixRule1.cpython-311.pyc,,
|
||||||
|
Sastrawi/Morphology/Disambiguator/__pycache__/DisambiguatorPrefixRule10.cpython-311.pyc,,
|
||||||
|
Sastrawi/Morphology/Disambiguator/__pycache__/DisambiguatorPrefixRule11.cpython-311.pyc,,
|
||||||
|
Sastrawi/Morphology/Disambiguator/__pycache__/DisambiguatorPrefixRule12.cpython-311.pyc,,
|
||||||
|
Sastrawi/Morphology/Disambiguator/__pycache__/DisambiguatorPrefixRule13.cpython-311.pyc,,
|
||||||
|
Sastrawi/Morphology/Disambiguator/__pycache__/DisambiguatorPrefixRule14.cpython-311.pyc,,
|
||||||
|
Sastrawi/Morphology/Disambiguator/__pycache__/DisambiguatorPrefixRule15.cpython-311.pyc,,
|
||||||
|
Sastrawi/Morphology/Disambiguator/__pycache__/DisambiguatorPrefixRule16.cpython-311.pyc,,
|
||||||
|
Sastrawi/Morphology/Disambiguator/__pycache__/DisambiguatorPrefixRule17.cpython-311.pyc,,
|
||||||
|
Sastrawi/Morphology/Disambiguator/__pycache__/DisambiguatorPrefixRule18.cpython-311.pyc,,
|
||||||
|
Sastrawi/Morphology/Disambiguator/__pycache__/DisambiguatorPrefixRule19.cpython-311.pyc,,
|
||||||
|
Sastrawi/Morphology/Disambiguator/__pycache__/DisambiguatorPrefixRule2.cpython-311.pyc,,
|
||||||
|
Sastrawi/Morphology/Disambiguator/__pycache__/DisambiguatorPrefixRule20.cpython-311.pyc,,
|
||||||
|
Sastrawi/Morphology/Disambiguator/__pycache__/DisambiguatorPrefixRule21.cpython-311.pyc,,
|
||||||
|
Sastrawi/Morphology/Disambiguator/__pycache__/DisambiguatorPrefixRule23.cpython-311.pyc,,
|
||||||
|
Sastrawi/Morphology/Disambiguator/__pycache__/DisambiguatorPrefixRule24.cpython-311.pyc,,
|
||||||
|
Sastrawi/Morphology/Disambiguator/__pycache__/DisambiguatorPrefixRule25.cpython-311.pyc,,
|
||||||
|
Sastrawi/Morphology/Disambiguator/__pycache__/DisambiguatorPrefixRule26.cpython-311.pyc,,
|
||||||
|
Sastrawi/Morphology/Disambiguator/__pycache__/DisambiguatorPrefixRule27.cpython-311.pyc,,
|
||||||
|
Sastrawi/Morphology/Disambiguator/__pycache__/DisambiguatorPrefixRule28.cpython-311.pyc,,
|
||||||
|
Sastrawi/Morphology/Disambiguator/__pycache__/DisambiguatorPrefixRule29.cpython-311.pyc,,
|
||||||
|
Sastrawi/Morphology/Disambiguator/__pycache__/DisambiguatorPrefixRule3.cpython-311.pyc,,
|
||||||
|
Sastrawi/Morphology/Disambiguator/__pycache__/DisambiguatorPrefixRule30.cpython-311.pyc,,
|
||||||
|
Sastrawi/Morphology/Disambiguator/__pycache__/DisambiguatorPrefixRule31.cpython-311.pyc,,
|
||||||
|
Sastrawi/Morphology/Disambiguator/__pycache__/DisambiguatorPrefixRule32.cpython-311.pyc,,
|
||||||
|
Sastrawi/Morphology/Disambiguator/__pycache__/DisambiguatorPrefixRule34.cpython-311.pyc,,
|
||||||
|
Sastrawi/Morphology/Disambiguator/__pycache__/DisambiguatorPrefixRule35.cpython-311.pyc,,
|
||||||
|
Sastrawi/Morphology/Disambiguator/__pycache__/DisambiguatorPrefixRule36.cpython-311.pyc,,
|
||||||
|
Sastrawi/Morphology/Disambiguator/__pycache__/DisambiguatorPrefixRule37.cpython-311.pyc,,
|
||||||
|
Sastrawi/Morphology/Disambiguator/__pycache__/DisambiguatorPrefixRule38.cpython-311.pyc,,
|
||||||
|
Sastrawi/Morphology/Disambiguator/__pycache__/DisambiguatorPrefixRule39.cpython-311.pyc,,
|
||||||
|
Sastrawi/Morphology/Disambiguator/__pycache__/DisambiguatorPrefixRule4.cpython-311.pyc,,
|
||||||
|
Sastrawi/Morphology/Disambiguator/__pycache__/DisambiguatorPrefixRule40.cpython-311.pyc,,
|
||||||
|
Sastrawi/Morphology/Disambiguator/__pycache__/DisambiguatorPrefixRule41.cpython-311.pyc,,
|
||||||
|
Sastrawi/Morphology/Disambiguator/__pycache__/DisambiguatorPrefixRule42.cpython-311.pyc,,
|
||||||
|
Sastrawi/Morphology/Disambiguator/__pycache__/DisambiguatorPrefixRule5.cpython-311.pyc,,
|
||||||
|
Sastrawi/Morphology/Disambiguator/__pycache__/DisambiguatorPrefixRule6.cpython-311.pyc,,
|
||||||
|
Sastrawi/Morphology/Disambiguator/__pycache__/DisambiguatorPrefixRule7.cpython-311.pyc,,
|
||||||
|
Sastrawi/Morphology/Disambiguator/__pycache__/DisambiguatorPrefixRule8.cpython-311.pyc,,
|
||||||
|
Sastrawi/Morphology/Disambiguator/__pycache__/DisambiguatorPrefixRule9.cpython-311.pyc,,
|
||||||
|
Sastrawi/Morphology/Disambiguator/__pycache__/__init__.cpython-311.pyc,,
|
||||||
|
Sastrawi/Morphology/InvalidAffixPairSpecification.py,sha256=P1ulQhN9q04b0Ml1Msis-HQ2eurlOzcWPlLM-9knF-A,808
|
||||||
|
Sastrawi/Morphology/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||||
|
Sastrawi/Morphology/__pycache__/InvalidAffixPairSpecification.cpython-311.pyc,,
|
||||||
|
Sastrawi/Morphology/__pycache__/__init__.cpython-311.pyc,,
|
||||||
|
Sastrawi/Stemmer/Cache/ArrayCache.py,sha256=oZomA7c9k_EySG0Y-vV-v6DmT5UV4UmPDK9rZ5-toEw,408
|
||||||
|
Sastrawi/Stemmer/Cache/CacheInterface.py,sha256=pD8wNvEjFpXBu9lziybHyQ854krNmIA0iq89f7r_KLM,197
|
||||||
|
Sastrawi/Stemmer/Cache/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||||
|
Sastrawi/Stemmer/Cache/__pycache__/ArrayCache.cpython-311.pyc,,
|
||||||
|
Sastrawi/Stemmer/Cache/__pycache__/CacheInterface.cpython-311.pyc,,
|
||||||
|
Sastrawi/Stemmer/Cache/__pycache__/__init__.cpython-311.pyc,,
|
||||||
|
Sastrawi/Stemmer/CachedStemmer.py,sha256=4hFc0RRBP6jOllROqfYvRVmZlcLW3UqUZx-voMY0MNQ,834
|
||||||
|
Sastrawi/Stemmer/ConfixStripping/PrecedenceAdjustmentSpecification.py,sha256=0JQchEK8XHK7fgCES2Jh-ditfFWcuEgjG9SgwT3P9AM,675
|
||||||
|
Sastrawi/Stemmer/ConfixStripping/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||||
|
Sastrawi/Stemmer/ConfixStripping/__pycache__/PrecedenceAdjustmentSpecification.cpython-311.pyc,,
|
||||||
|
Sastrawi/Stemmer/ConfixStripping/__pycache__/__init__.cpython-311.pyc,,
|
||||||
|
Sastrawi/Stemmer/Context/Context.py,sha256=C0JaXxNMvUWcGRBvgr0ATpcw58pkcMmxZC6l34I3R78,5678
|
||||||
|
Sastrawi/Stemmer/Context/ContextInterface.py,sha256=kvEI9e4W4glAHmsXJe2_JQq5R5dUrgtffmHl6cM5U4k,456
|
||||||
|
Sastrawi/Stemmer/Context/Removal.py,sha256=9QrixJFgP9g4sKyDXkVBnZ0bMNEvRGuMmawE_mwTUBE,690
|
||||||
|
Sastrawi/Stemmer/Context/RemovalInterface.py,sha256=gbDtpCBJk5Kw7IpaSqCc_OPNKgFzwLtmyZ8vtf-_91M,300
|
||||||
|
Sastrawi/Stemmer/Context/Visitor/AbstractDisambiguatePrefixRule.py,sha256=x9sPtTZ6QCl_7IZYZaxv8WzEfusJYTNTkwupLchiWwA,999
|
||||||
|
Sastrawi/Stemmer/Context/Visitor/DontStemShortWord.py,sha256=0oi4bSFDwEjrReenpgb9smXDx5Z4mbFG8UmI54S6AGo,265
|
||||||
|
Sastrawi/Stemmer/Context/Visitor/PrefixDisambiguator.py,sha256=U3nP0nn_6o74zbsaZDQnCVzAeBMOweXS1h06PTYMbK4,355
|
||||||
|
Sastrawi/Stemmer/Context/Visitor/RemoveDerivationalSuffix.py,sha256=07D97jYEi1_9dyubU3W7o6SDlf8QfE7J2kxldfXM2Os,932
|
||||||
|
Sastrawi/Stemmer/Context/Visitor/RemoveInflectionalParticle.py,sha256=wLSSTFcOT98CnTT52WuH7MgPxJuuJUlWsS90euEaJVk,857
|
||||||
|
Sastrawi/Stemmer/Context/Visitor/RemoveInflectionalPossessivePronoun.py,sha256=JbCS6OppPIY4WCKakHLoSku_EVBx-FL_j-JLQrQOsxo,875
|
||||||
|
Sastrawi/Stemmer/Context/Visitor/RemovePlainPrefix.py,sha256=XqeqFRq706JnW1zhZshDIPUuJ23vQCrYvl3fzBtEyTk,813
|
||||||
|
Sastrawi/Stemmer/Context/Visitor/VisitorProvider.py,sha256=ZrvJGLOj4nKLAIlEtqGivv-m3AbKB9x_cDR7ZKX7UIs,10248
|
||||||
|
Sastrawi/Stemmer/Context/Visitor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||||
|
Sastrawi/Stemmer/Context/Visitor/__pycache__/AbstractDisambiguatePrefixRule.cpython-311.pyc,,
|
||||||
|
Sastrawi/Stemmer/Context/Visitor/__pycache__/DontStemShortWord.cpython-311.pyc,,
|
||||||
|
Sastrawi/Stemmer/Context/Visitor/__pycache__/PrefixDisambiguator.cpython-311.pyc,,
|
||||||
|
Sastrawi/Stemmer/Context/Visitor/__pycache__/RemoveDerivationalSuffix.cpython-311.pyc,,
|
||||||
|
Sastrawi/Stemmer/Context/Visitor/__pycache__/RemoveInflectionalParticle.cpython-311.pyc,,
|
||||||
|
Sastrawi/Stemmer/Context/Visitor/__pycache__/RemoveInflectionalPossessivePronoun.cpython-311.pyc,,
|
||||||
|
Sastrawi/Stemmer/Context/Visitor/__pycache__/RemovePlainPrefix.cpython-311.pyc,,
|
||||||
|
Sastrawi/Stemmer/Context/Visitor/__pycache__/VisitorProvider.cpython-311.pyc,,
|
||||||
|
Sastrawi/Stemmer/Context/Visitor/__pycache__/__init__.cpython-311.pyc,,
|
||||||
|
Sastrawi/Stemmer/Context/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||||
|
Sastrawi/Stemmer/Context/__pycache__/Context.cpython-311.pyc,,
|
||||||
|
Sastrawi/Stemmer/Context/__pycache__/ContextInterface.cpython-311.pyc,,
|
||||||
|
Sastrawi/Stemmer/Context/__pycache__/Removal.cpython-311.pyc,,
|
||||||
|
Sastrawi/Stemmer/Context/__pycache__/RemovalInterface.cpython-311.pyc,,
|
||||||
|
Sastrawi/Stemmer/Context/__pycache__/__init__.cpython-311.pyc,,
|
||||||
|
Sastrawi/Stemmer/Filter/TextNormalizer.py,sha256=go8eaXzG5jlQFWH1HeT-HZFOoaBvosxe-JXkv2wtbq4,270
|
||||||
|
Sastrawi/Stemmer/Filter/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||||
|
Sastrawi/Stemmer/Filter/__pycache__/TextNormalizer.cpython-311.pyc,,
|
||||||
|
Sastrawi/Stemmer/Filter/__pycache__/__init__.cpython-311.pyc,,
|
||||||
|
Sastrawi/Stemmer/Stemmer.py,sha256=dO42J4vyZEeEaT1FkUs7RRJ3lclgTw8_VyAnAJMrjcw,2969
|
||||||
|
Sastrawi/Stemmer/StemmerFactory.py,sha256=2EpdLmv1I0gqUHl7OMWp-AnqSnOMJlNiEBA7LeEz4zM,1597
|
||||||
|
Sastrawi/Stemmer/StemmerInterface.py,sha256=vvkoxfEdEEIWkHmoY-qgBmPPqgMHnRjsR1tqKC54C7I,113
|
||||||
|
Sastrawi/Stemmer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||||
|
Sastrawi/Stemmer/__pycache__/CachedStemmer.cpython-311.pyc,,
|
||||||
|
Sastrawi/Stemmer/__pycache__/Stemmer.cpython-311.pyc,,
|
||||||
|
Sastrawi/Stemmer/__pycache__/StemmerFactory.cpython-311.pyc,,
|
||||||
|
Sastrawi/Stemmer/__pycache__/StemmerInterface.cpython-311.pyc,,
|
||||||
|
Sastrawi/Stemmer/__pycache__/__init__.cpython-311.pyc,,
|
||||||
|
Sastrawi/Stemmer/data/kata-dasar.original.txt,sha256=Q6_aSMLGZv8FVpJ6dTjmekHaBBTep1NmbZYRtZsIDsQ,239616
|
||||||
|
Sastrawi/Stemmer/data/kata-dasar.txt,sha256=Tc75NzKHAgc94zNhEnYmOZ3cfajkWgPN5uO2CaHhEHY,236296
|
||||||
|
Sastrawi/StopWordRemover/StopWordRemover.py,sha256=jmNJaGalPwv15OuJ9QQkHKJNxooV3WChKRgzKNAmzKw,458
|
||||||
|
Sastrawi/StopWordRemover/StopWordRemoverFactory.py,sha256=NPDvRH14I1OROfSpIevsmOEvhTxby-fTu2BrkhoMgpM,1825
|
||||||
|
Sastrawi/StopWordRemover/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||||
|
Sastrawi/StopWordRemover/__pycache__/StopWordRemover.cpython-311.pyc,,
|
||||||
|
Sastrawi/StopWordRemover/__pycache__/StopWordRemoverFactory.cpython-311.pyc,,
|
||||||
|
Sastrawi/StopWordRemover/__pycache__/__init__.cpython-311.pyc,,
|
||||||
|
Sastrawi/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||||
|
Sastrawi/__pycache__/__init__.cpython-311.pyc,,
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
Wheel-Version: 1.0
|
||||||
|
Generator: bdist_wheel (0.26.0)
|
||||||
|
Root-Is-Purelib: true
|
||||||
|
Tag: py2-none-any
|
||||||
|
Tag: py3-none-any
|
||||||
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
{"generator": "bdist_wheel (0.26.0)", "summary": "Library for stemming Indonesian (Bahasa) text", "classifiers": ["Development Status :: 4 - Beta", "Intended Audience :: Information Technology", "Intended Audience :: Science/Research", "Topic :: Text Processing :: Linguistic", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5"], "extensions": {"python.details": {"project_urls": {"Home": "https://github.com/har07/sastrawi"}, "contacts": [{"email": "dev.har07@gmail.com", "name": "Hanif Amal Robbani", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst"}}}, "keywords": ["nlp", "stemming", "indonesia", "indonesian"], "license": "MIT", "metadata_version": "2.0", "name": "Sastrawi", "version": "1.0.1"}
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Sastrawi
|
||||||
|
|
@ -0,0 +1,29 @@
|
||||||
|
class ArrayDictionary(object):
|
||||||
|
"""description of class"""
|
||||||
|
|
||||||
|
def __init__(self, words=None):
|
||||||
|
self.words = []
|
||||||
|
if words:
|
||||||
|
self.add_words(words)
|
||||||
|
|
||||||
|
def contains(self, word):
|
||||||
|
return word in self.words
|
||||||
|
|
||||||
|
def count(self):
|
||||||
|
return len(self.words)
|
||||||
|
|
||||||
|
def add_words(self, words):
|
||||||
|
"""Add multiple words to the dictionary"""
|
||||||
|
for word in words:
|
||||||
|
self.add(word)
|
||||||
|
|
||||||
|
def add(self, word):
|
||||||
|
"""Add a word to the dictionary"""
|
||||||
|
if not word or word.strip() == '':
|
||||||
|
return
|
||||||
|
self.words.append(word)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
class DictionaryInterface(object):
|
||||||
|
"""description of class"""
|
||||||
|
|
||||||
|
def contains(self, word):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -0,0 +1,27 @@
|
||||||
|
import re
|
||||||
|
|
||||||
|
class DisambiguatorPrefixRule1a(object):
|
||||||
|
"""Disambiguate Prefix Rule 1a
|
||||||
|
Rule 1a : berV -> ber-V
|
||||||
|
"""
|
||||||
|
|
||||||
|
def disambiguate(self, word):
|
||||||
|
"""Disambiguate Prefix Rule 1a
|
||||||
|
Rule 1a : berV -> ber-V
|
||||||
|
"""
|
||||||
|
matches = re.match(r'^ber([aiueo].*)$', word)
|
||||||
|
if matches:
|
||||||
|
return matches.group(1)
|
||||||
|
|
||||||
|
class DisambiguatorPrefixRule1b(object):
|
||||||
|
"""Disambiguate Prefix Rule 1b
|
||||||
|
Rule 1b : berV -> be-rV
|
||||||
|
"""
|
||||||
|
|
||||||
|
def disambiguate(self, word):
|
||||||
|
"""Disambiguate Prefix Rule 1b
|
||||||
|
Rule 1b : berV -> be-rV
|
||||||
|
"""
|
||||||
|
matches = re.match(r'^ber([aiueo].*)$', word)
|
||||||
|
if matches:
|
||||||
|
return 'r' + matches.group(1)
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
import re
|
||||||
|
|
||||||
|
class DisambiguatorPrefixRule10(object):
|
||||||
|
"""Disambiguate Prefix Rule 10
|
||||||
|
Rule 10 : me{l|r|w|y}V -> me-{l|r|w|y}V
|
||||||
|
"""
|
||||||
|
|
||||||
|
def disambiguate(self, word):
|
||||||
|
"""Disambiguate Prefix Rule 10
|
||||||
|
Rule 10 : me{l|r|w|y}V -> me-{l|r|w|y}V
|
||||||
|
"""
|
||||||
|
matches = re.match(r'^me([lrwy])([aiueo])(.*)$', word)
|
||||||
|
if matches:
|
||||||
|
return matches.group(1) + matches.group(2) + matches.group(3)
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
import re
|
||||||
|
|
||||||
|
class DisambiguatorPrefixRule11(object):
|
||||||
|
"""Disambiguate Prefix Rule 11
|
||||||
|
Rule 11 : mem{b|f|v} -> mem-{b|f|v}
|
||||||
|
"""
|
||||||
|
|
||||||
|
def disambiguate(self, word):
|
||||||
|
"""Disambiguate Prefix Rule 11
|
||||||
|
Rule 11 : mem{b|f|v} -> mem-{b|f|v}
|
||||||
|
"""
|
||||||
|
matches = re.match(r'^mem([bfv])(.*)$', word)
|
||||||
|
if matches:
|
||||||
|
return matches.group(1) + matches.group(2)
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
import re
|
||||||
|
|
||||||
|
class DisambiguatorPrefixRule12(object):
|
||||||
|
"""Disambiguate Prefix Rule 12
|
||||||
|
Nazief and Adriani Rule 12 : beC1erC2 -> be-C1erC2 where C1 != 'r'
|
||||||
|
Modified by Jelita Asian's CS Rule 12 : mempe -> mem-pe to stem mempengaruhi
|
||||||
|
"""
|
||||||
|
|
||||||
|
def disambiguate(self, word):
|
||||||
|
"""Disambiguate Prefix Rule 12
|
||||||
|
Nazief and Adriani Rule 12 : beC1erC2 -> be-C1erC2 where C1 != 'r'
|
||||||
|
Modified by Jelita Asian's CS Rule 12 : mempe -> mem-pe to stem mempengaruhi
|
||||||
|
"""
|
||||||
|
matches = re.match(r'^mempe(.*)$', word)
|
||||||
|
if matches:
|
||||||
|
return 'pe' + matches.group(1)
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
import re
|
||||||
|
|
||||||
|
class DisambiguatorPrefixRule13a(object):
|
||||||
|
"""Disambiguate Prefix Rule 13a
|
||||||
|
Rule 13a : mem{rV|V} -> me-m{rV|V}
|
||||||
|
"""
|
||||||
|
|
||||||
|
def disambiguate(self, word):
|
||||||
|
"""Disambiguate Prefix Rule 13a
|
||||||
|
Rule 13a : mem{rV|V} -> me-m{rV|V}
|
||||||
|
"""
|
||||||
|
matches = re.match(r'^mem([aiueo])(.*)$', word)
|
||||||
|
if matches:
|
||||||
|
return 'm' + matches.group(1) + matches.group(2)
|
||||||
|
|
||||||
|
class DisambiguatorPrefixRule13b(object):
|
||||||
|
"""Disambiguate Prefix Rule 13b
|
||||||
|
Rule 13b : mem{rV|V} -> me-p{rV|V}
|
||||||
|
"""
|
||||||
|
|
||||||
|
def disambiguate(self, word):
|
||||||
|
"""Disambiguate Prefix Rule 13b
|
||||||
|
Rule 13b : mem{rV|V} -> me-p{rV|V}
|
||||||
|
"""
|
||||||
|
matches = re.match(r'^mem([aiueo])(.*)$', word)
|
||||||
|
if matches:
|
||||||
|
return 'p' + matches.group(1) + matches.group(2)
|
||||||
|
|
@ -0,0 +1,26 @@
|
||||||
|
import re
|
||||||
|
|
||||||
|
class DisambiguatorPrefixRule14(object):
|
||||||
|
"""Disambiguate Prefix Rule 14
|
||||||
|
Rule 14 modified by Andy Librian : men{c|d|j|s|t|z} -> men-{c|d|j|s|t|z}
|
||||||
|
in order to stem mentaati
|
||||||
|
|
||||||
|
Rule 14 modified by ECS: men{c|d|j|s|z} -> men-{c|d|j|s|z}
|
||||||
|
in order to stem mensyaratkan, mensyukuri
|
||||||
|
|
||||||
|
Original CS Rule no 14 was : men{c|d|j|z} -> men-{c|d|j|z}
|
||||||
|
"""
|
||||||
|
|
||||||
|
def disambiguate(self, word):
|
||||||
|
"""Disambiguate Prefix Rule 14
|
||||||
|
Rule 14 modified by Andy Librian : men{c|d|j|s|t|z} -> men-{c|d|j|s|t|z}
|
||||||
|
in order to stem mentaati
|
||||||
|
|
||||||
|
Rule 14 modified by ECS: men{c|d|j|s|z} -> men-{c|d|j|s|z}
|
||||||
|
in order to stem mensyaratkan, mensyukuri
|
||||||
|
|
||||||
|
Original CS Rule no 14 was : men{c|d|j|z} -> men-{c|d|j|z}
|
||||||
|
"""
|
||||||
|
matches = re.match(r'^men([cdjstz])(.*)$', word)
|
||||||
|
if matches:
|
||||||
|
return matches.group(1) + matches.group(2)
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
import re
|
||||||
|
|
||||||
|
class DisambiguatorPrefixRule15a(object):
|
||||||
|
"""Disambiguate Prefix Rule 15a
|
||||||
|
Rule 15a : men{V} -> me-n{V}
|
||||||
|
"""
|
||||||
|
|
||||||
|
def disambiguate(self, word):
|
||||||
|
"""Disambiguate Prefix Rule 15a
|
||||||
|
Rule 15a : men{V} -> me-n{V}
|
||||||
|
"""
|
||||||
|
matches = re.match(r'^men([aiueo])(.*)$', word)
|
||||||
|
if matches:
|
||||||
|
return 'n' + matches.group(1) + matches.group(2)
|
||||||
|
|
||||||
|
class DisambiguatorPrefixRule15b(object):
|
||||||
|
"""Disambiguate Prefix Rule 15b
|
||||||
|
Rule 15b : men{V} -> me-t{V}
|
||||||
|
"""
|
||||||
|
|
||||||
|
def disambiguate(self, word):
|
||||||
|
"""Disambiguate Prefix Rule 15b
|
||||||
|
Rule 15b : men{V} -> me-t{V}
|
||||||
|
"""
|
||||||
|
matches = re.match(r'^men([aiueo])(.*)$', word)
|
||||||
|
if matches:
|
||||||
|
return 't' + matches.group(1) + matches.group(2)
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
import re
|
||||||
|
|
||||||
|
class DisambiguatorPrefixRule16(object):
|
||||||
|
"""Disambiguate Prefix Rule 16
|
||||||
|
Original Nazief and Adriani's Rule 16 : meng{g|h|q} -> meng-{g|h|q}
|
||||||
|
Modified Jelita Asian's CS Rule 16 : meng{g|h|q|k} -> meng-{g|h|q|k} to stem mengkritik
|
||||||
|
"""
|
||||||
|
|
||||||
|
def disambiguate(self, word):
|
||||||
|
"""Disambiguate Prefix Rule 16
|
||||||
|
Original Nazief and Adriani's Rule 16 : meng{g|h|q} -> meng-{g|h|q}
|
||||||
|
Modified Jelita Asian's CS Rule 16 : meng{g|h|q|k} -> meng-{g|h|q|k} to stem mengkritik
|
||||||
|
"""
|
||||||
|
matches = re.match(r'^meng([g|h|q|k])(.*)$', word)
|
||||||
|
if matches:
|
||||||
|
return matches.group(1) + matches.group(2)
|
||||||
|
|
@ -0,0 +1,53 @@
|
||||||
|
import re
|
||||||
|
|
||||||
|
class DisambiguatorPrefixRule17a(object):
|
||||||
|
"""Disambiguate Prefix Rule 17a
|
||||||
|
Rule 17a : mengV -> meng-V
|
||||||
|
"""
|
||||||
|
|
||||||
|
def disambiguate(self, word):
|
||||||
|
"""Disambiguate Prefix Rule 17a
|
||||||
|
Rule 17a : mengV -> meng-V
|
||||||
|
"""
|
||||||
|
matches = re.match(r'^meng([aiueo])(.*)$', word)
|
||||||
|
if matches:
|
||||||
|
return matches.group(1) + matches.group(2)
|
||||||
|
|
||||||
|
class DisambiguatorPrefixRule17b(object):
|
||||||
|
"""Disambiguate Prefix Rule 17b
|
||||||
|
Rule 17b : mengV -> meng-kV
|
||||||
|
"""
|
||||||
|
|
||||||
|
def disambiguate(self, word):
|
||||||
|
"""Disambiguate Prefix Rule 17b
|
||||||
|
Rule 17b : mengV -> meng-kV
|
||||||
|
"""
|
||||||
|
matches = re.match(r'^meng([aiueo])(.*)$', word)
|
||||||
|
if matches:
|
||||||
|
return 'k' + matches.group(1) + matches.group(2)
|
||||||
|
|
||||||
|
class DisambiguatorPrefixRule17c(object):
|
||||||
|
"""Disambiguate Prefix Rule 17c
|
||||||
|
Rule 17c : mengV -> meng-V- where V = 'e'
|
||||||
|
"""
|
||||||
|
|
||||||
|
def disambiguate(self, word):
|
||||||
|
"""Disambiguate Prefix Rule 17c
|
||||||
|
Rule 17c : mengV -> meng-V- where V = 'e'
|
||||||
|
"""
|
||||||
|
matches = re.match(r'^menge(.*)$', word)
|
||||||
|
if matches:
|
||||||
|
return matches.group(1)
|
||||||
|
|
||||||
|
class DisambiguatorPrefixRule17d(object):
|
||||||
|
"""Disambiguate Prefix Rule 17d
|
||||||
|
Rule 17d : mengV -> me-ngV
|
||||||
|
"""
|
||||||
|
|
||||||
|
def disambiguate(self, word):
|
||||||
|
"""Disambiguate Prefix Rule 17d
|
||||||
|
Rule 17d : mengV -> me-ngV
|
||||||
|
"""
|
||||||
|
matches = re.match(r'^meng([aiueo])(.*)$', word)
|
||||||
|
if matches:
|
||||||
|
return 'ng' + matches.group(1) + matches.group(2)
|
||||||
|
|
@ -0,0 +1,29 @@
|
||||||
|
import re
|
||||||
|
|
||||||
|
class DisambiguatorPrefixRule18a(object):
|
||||||
|
"""Disambiguate Prefix Rule 18a
|
||||||
|
Rule 18a : menyV -> me-nyV to stem menyala -> nyala
|
||||||
|
"""
|
||||||
|
|
||||||
|
def disambiguate(self, word):
|
||||||
|
"""Disambiguate Prefix Rule 18a
|
||||||
|
Rule 18a : menyV -> me-nyV to stem menyala -> nyala
|
||||||
|
"""
|
||||||
|
matches = re.match(r'^meny([aiueo])(.*)$', word)
|
||||||
|
if matches:
|
||||||
|
return 'ny' + matches.group(1) + matches.group(2)
|
||||||
|
|
||||||
|
class DisambiguatorPrefixRule18b(object):
|
||||||
|
"""Disambiguate Prefix Rule 18a
|
||||||
|
Original Rule 18 : menyV -> meny-sV
|
||||||
|
Modified by CC (shifted into 18b, see also 18a)
|
||||||
|
"""
|
||||||
|
|
||||||
|
def disambiguate(self, word):
|
||||||
|
"""Disambiguate Prefix Rule 18a
|
||||||
|
Original Rule 18 : menyV -> meny-sV
|
||||||
|
Modified by CC (shifted into 18b, see also 18a)
|
||||||
|
"""
|
||||||
|
matches = re.match(r'^meny([aiueo])(.*)$', word)
|
||||||
|
if matches:
|
||||||
|
return 's' + matches.group(1) + matches.group(2)
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
import re
|
||||||
|
|
||||||
|
class DisambiguatorPrefixRule19(object):
|
||||||
|
"""Disambiguate Prefix Rule 19
|
||||||
|
Original Rule 19 : mempV -> mem-pV where V != 'e'
|
||||||
|
Modified Rule 19 by ECS : mempA -> mem-pA where A != 'e' in order to stem memproteksi
|
||||||
|
"""
|
||||||
|
|
||||||
|
def disambiguate(self, word):
|
||||||
|
"""Disambiguate Prefix Rule 19
|
||||||
|
Original Rule 19 : mempV -> mem-pV where V != 'e'
|
||||||
|
Modified Rule 19 by ECS : mempA -> mem-pA where A != 'e' in order to stem memproteksi
|
||||||
|
"""
|
||||||
|
matches = re.match(r'^memp([abcdfghijklmopqrstuvwxyz])(.*)$', word)
|
||||||
|
if matches:
|
||||||
|
return 'p' + matches.group(1) + matches.group(2)
|
||||||
|
|
@ -0,0 +1,17 @@
|
||||||
|
import re
|
||||||
|
|
||||||
|
class DisambiguatorPrefixRule2(object):
|
||||||
|
"""Disambiguate Prefix Rule 2
|
||||||
|
Rule 2 : berCAP -> ber-CAP where C != 'r' AND P != 'er'
|
||||||
|
"""
|
||||||
|
|
||||||
|
def disambiguate(self, word):
|
||||||
|
"""Disambiguate Prefix Rule 2
|
||||||
|
Rule 2 : berCAP -> ber-CAP where C != 'r' AND P != 'er'
|
||||||
|
"""
|
||||||
|
matches = re.match(r'^ber([bcdfghjklmnpqrstvwxyz])([a-z])(.*)', word)
|
||||||
|
if matches:
|
||||||
|
if re.match(r'^er(.*)$', matches.group(3)):
|
||||||
|
return
|
||||||
|
|
||||||
|
return matches.group(1) + matches.group(2) + matches.group(3)
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
import re
|
||||||
|
|
||||||
|
class DisambiguatorPrefixRule20(object):
|
||||||
|
"""Disambiguate Prefix Rule 20
|
||||||
|
Rule 20 : pe{w|y}V -> pe-{w|y}V
|
||||||
|
"""
|
||||||
|
|
||||||
|
def disambiguate(self, word):
|
||||||
|
"""Disambiguate Prefix Rule 20
|
||||||
|
Rule 20 : pe{w|y}V -> pe-{w|y}V
|
||||||
|
"""
|
||||||
|
matches = re.match(r'^pe([wy])([aiueo])(.*)$', word)
|
||||||
|
if matches:
|
||||||
|
return matches.group(1) + matches.group(2) + matches.group(3)
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
import re
|
||||||
|
|
||||||
|
class DisambiguatorPrefixRule21a(object):
|
||||||
|
"""Disambiguate Prefix Rule 21a
|
||||||
|
Rule 21a : perV -> per-V
|
||||||
|
"""
|
||||||
|
|
||||||
|
def disambiguate(self, word):
|
||||||
|
"""Disambiguate Prefix Rule 21a
|
||||||
|
Rule 21a : perV -> per-V
|
||||||
|
"""
|
||||||
|
matches = re.match(r'^per([aiueo])(.*)$', word)
|
||||||
|
if matches:
|
||||||
|
return matches.group(1) + matches.group(2)
|
||||||
|
|
||||||
|
class DisambiguatorPrefixRule21b(object):
|
||||||
|
"""Disambiguate Prefix Rule 21b
|
||||||
|
Rule 21b : perV -> pe-rV
|
||||||
|
"""
|
||||||
|
|
||||||
|
def disambiguate(self, word):
|
||||||
|
"""Disambiguate Prefix Rule 21b
|
||||||
|
Rule 21b : perV -> pe-rV
|
||||||
|
"""
|
||||||
|
matches = re.match(r'^pe(r[aiueo])(.*)$', word)
|
||||||
|
if matches:
|
||||||
|
return matches.group(1) + matches.group(2)
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
import re
|
||||||
|
|
||||||
|
class DisambiguatorPrefixRule23(object):
|
||||||
|
"""Disambiguate Prefix Rule 23
|
||||||
|
Rule 23 : perCAP -> per-CAP where C != 'r' AND P != 'er'
|
||||||
|
"""
|
||||||
|
|
||||||
|
def disambiguate(self, word):
|
||||||
|
"""Disambiguate Prefix Rule 23
|
||||||
|
Rule 23 : perCAP -> per-CAP where C != 'r' AND P != 'er'
|
||||||
|
"""
|
||||||
|
matches = re.match(r'^per([bcdfghjklmnpqrstvwxyz])([a-z])(.*)$', word)
|
||||||
|
if matches:
|
||||||
|
if re.match(r'^er(.*)$', matches.group(3)):
|
||||||
|
return
|
||||||
|
return matches.group(1) + matches.group(2) + matches.group(3)
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
import re
|
||||||
|
|
||||||
|
class DisambiguatorPrefixRule24(object):
|
||||||
|
"""Disambiguate Prefix Rule 24
|
||||||
|
Rule 24 : perCAerV -> per-CAerV where C != 'r'
|
||||||
|
"""
|
||||||
|
|
||||||
|
def disambiguate(self, word):
|
||||||
|
"""Disambiguate Prefix Rule 24
|
||||||
|
Rule 24 : perCAerV -> per-CAerV where C != 'r'
|
||||||
|
"""
|
||||||
|
matches = re.match(r'^per([bcdfghjklmnpqrstvwxyz])([a-z])er([aiueo])(.*)$', word)
|
||||||
|
if matches:
|
||||||
|
if matches.group(1) == 'r':
|
||||||
|
return
|
||||||
|
return matches.group(1) + matches.group(2) + 'er' + matches.group(3) + matches.group(4)
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
import re
|
||||||
|
|
||||||
|
class DisambiguatorPrefixRule25(object):
|
||||||
|
"""Disambiguate Prefix Rule 25
|
||||||
|
Rule 25 : pem{b|f|v} -> pem-{b|f|v}
|
||||||
|
"""
|
||||||
|
|
||||||
|
def disambiguate(self, word):
|
||||||
|
"""Disambiguate Prefix Rule 25
|
||||||
|
Rule 25 : pem{b|f|v} -> pem-{b|f|v}
|
||||||
|
"""
|
||||||
|
matches = re.match(r'^pem([bfv])(.*)$', word)
|
||||||
|
if matches:
|
||||||
|
return matches.group(1) + matches.group(2)
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
import re
|
||||||
|
|
||||||
|
class DisambiguatorPrefixRule26a(object):
|
||||||
|
"""Disambiguate Prefix Rule 26a
|
||||||
|
Rule 26a : pem{rV|V} -> pe-m{rV|V}
|
||||||
|
"""
|
||||||
|
|
||||||
|
def disambiguate(self, word):
|
||||||
|
"""Disambiguate Prefix Rule 26a
|
||||||
|
Rule 26a : pem{rV|V} -> pe-m{rV|V}
|
||||||
|
"""
|
||||||
|
matches = re.match(r'^pem([aiueo])(.*)$', word)
|
||||||
|
if matches:
|
||||||
|
return 'm' + matches.group(1) + matches.group(2)
|
||||||
|
|
||||||
|
class DisambiguatorPrefixRule26b(object):
|
||||||
|
"""Disambiguate Prefix Rule 26b
|
||||||
|
Rule 26b : pem{rV|V} -> pe-p{rV|V}
|
||||||
|
"""
|
||||||
|
|
||||||
|
def disambiguate(self, word):
|
||||||
|
"""Disambiguate Prefix Rule 26b
|
||||||
|
Rule 26b : pem{rV|V} -> pe-p{rV|V}
|
||||||
|
"""
|
||||||
|
matches = re.match(r'^pem([aiueo])(.*)$', word)
|
||||||
|
if matches:
|
||||||
|
return 'p' + matches.group(1) + matches.group(2)
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
import re
|
||||||
|
|
||||||
|
class DisambiguatorPrefixRule27(object):
|
||||||
|
"""Disambiguate Prefix Rule 27
|
||||||
|
Rule 27 : pen{c|d|j|z} -> pen-{c|d|j|z}
|
||||||
|
"""
|
||||||
|
|
||||||
|
def disambiguate(self, word):
|
||||||
|
"""Disambiguate Prefix Rule 27
|
||||||
|
Rule 27 : pen{c|d|j|z} -> pen-{c|d|j|z}
|
||||||
|
"""
|
||||||
|
matches = re.match(r'^pen([cdjz])(.*)$', word)
|
||||||
|
if matches:
|
||||||
|
return matches.group(1) + matches.group(2)
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
import re
|
||||||
|
|
||||||
|
class DisambiguatorPrefixRule28a(object):
|
||||||
|
"""Disambiguate Prefix Rule 28a
|
||||||
|
Rule 28a : pen{V} -> pe-n{V}
|
||||||
|
"""
|
||||||
|
|
||||||
|
def disambiguate(self, word):
|
||||||
|
"""Disambiguate Prefix Rule 28a
|
||||||
|
Rule 28a : pen{V} -> pe-n{V}
|
||||||
|
"""
|
||||||
|
matches = re.match(r'^pen([aiueo])(.*)$', word)
|
||||||
|
if matches:
|
||||||
|
return 'n' + matches.group(1) + matches.group(2)
|
||||||
|
|
||||||
|
class DisambiguatorPrefixRule28b(object):
|
||||||
|
"""Disambiguate Prefix Rule 28b
|
||||||
|
Rule 28b : pen{V} -> pe-t{V}
|
||||||
|
"""
|
||||||
|
|
||||||
|
def disambiguate(self, word):
|
||||||
|
"""Disambiguate Prefix Rule 28b
|
||||||
|
Rule 28b : pen{V} -> pe-t{V}
|
||||||
|
"""
|
||||||
|
matches = re.match(r'^pen([aiueo])(.*)$', word)
|
||||||
|
if matches:
|
||||||
|
return 't' + matches.group(1) + matches.group(2)
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
import re
|
||||||
|
|
||||||
|
class DisambiguatorPrefixRule29(object):
|
||||||
|
"""Disambiguate Prefix Rule 29
|
||||||
|
Original Rule 29 : peng{g|h|q} -> peng-{g|h|q}
|
||||||
|
Modified Rule 29 by ECS : pengC -> peng-C
|
||||||
|
"""
|
||||||
|
|
||||||
|
def disambiguate(self, word):
|
||||||
|
"""Disambiguate Prefix Rule 29
|
||||||
|
Original Rule 29 : peng{g|h|q} -> peng-{g|h|q}
|
||||||
|
Modified Rule 29 by ECS : pengC -> peng-C
|
||||||
|
"""
|
||||||
|
matches = re.match(r'^peng([bcdfghjklmnpqrstvwxyz])(.*)$', word)
|
||||||
|
if matches:
|
||||||
|
return matches.group(1) + matches.group(2)
|
||||||
|
|
@ -0,0 +1,17 @@
|
||||||
|
import re
|
||||||
|
|
||||||
|
class DisambiguatorPrefixRule3(object):
|
||||||
|
"""Disambiguate Prefix Rule 3
|
||||||
|
Rule 3 : berCAerV -> ber-CAerV where C != 'r'
|
||||||
|
"""
|
||||||
|
|
||||||
|
def disambiguate(self, word):
|
||||||
|
"""Disambiguate Prefix Rule 3
|
||||||
|
Rule 3 : berCAerV -> ber-CAerV where C != 'r'
|
||||||
|
"""
|
||||||
|
matches = re.match(r'ber([bcdfghjklmnpqrstvwxyz])([a-z])er([aiueo])(.*)', word)
|
||||||
|
if matches:
|
||||||
|
if matches.group(1) == 'r':
|
||||||
|
return
|
||||||
|
|
||||||
|
return matches.group(1) + matches.group(2) + 'er' + matches.group(3) + matches.group(4)
|
||||||
|
|
@ -0,0 +1,40 @@
|
||||||
|
import re
|
||||||
|
|
||||||
|
class DisambiguatorPrefixRule30a(object):
|
||||||
|
"""Disambiguate Prefix Rule 30a
|
||||||
|
Rule 30a : pengV -> peng-V
|
||||||
|
"""
|
||||||
|
|
||||||
|
def disambiguate(self, word):
|
||||||
|
"""Disambiguate Prefix Rule 30a
|
||||||
|
Rule 30a : pengV -> peng-V
|
||||||
|
"""
|
||||||
|
matches = re.match(r'^peng([aiueo])(.*)$', word)
|
||||||
|
if matches:
|
||||||
|
return matches.group(1) + matches.group(2)
|
||||||
|
|
||||||
|
class DisambiguatorPrefixRule30b(object):
|
||||||
|
"""Disambiguate Prefix Rule 30b
|
||||||
|
Rule 30a : pengV -> peng-kV
|
||||||
|
"""
|
||||||
|
|
||||||
|
def disambiguate(self, word):
|
||||||
|
"""Disambiguate Prefix Rule 30b
|
||||||
|
Rule 30a : pengV -> peng-kV
|
||||||
|
"""
|
||||||
|
matches = re.match(r'^peng([aiueo])(.*)$', word)
|
||||||
|
if matches:
|
||||||
|
return 'k' + matches.group(1) + matches.group(2)
|
||||||
|
|
||||||
|
class DisambiguatorPrefixRule30c(object):
|
||||||
|
"""Disambiguate Prefix Rule 30c
|
||||||
|
Rule 30a : pengV -> pengV- where V = 'e'
|
||||||
|
"""
|
||||||
|
|
||||||
|
def disambiguate(self, word):
|
||||||
|
"""Disambiguate Prefix Rule 30c
|
||||||
|
Rule 30a : pengV -> pengV- where V = 'e'
|
||||||
|
"""
|
||||||
|
matches = re.match(r'^penge(.*)$', word)
|
||||||
|
if matches:
|
||||||
|
return matches.group(1)
|
||||||
|
|
@ -0,0 +1,29 @@
|
||||||
|
import re
|
||||||
|
|
||||||
|
class DisambiguatorPrefixRule31a(object):
|
||||||
|
"""Disambiguate Prefix Rule 31a
|
||||||
|
Rule 31a : penyV -> pe-nyV
|
||||||
|
"""
|
||||||
|
|
||||||
|
def disambiguate(self, word):
|
||||||
|
"""Disambiguate Prefix Rule 31a
|
||||||
|
Rule 31a : penyV -> pe-nyV
|
||||||
|
"""
|
||||||
|
matches = re.match(r'^peny([aiueo])(.*)$', word)
|
||||||
|
if matches:
|
||||||
|
return 'ny' + matches.group(1) + matches.group(2)
|
||||||
|
|
||||||
|
class DisambiguatorPrefixRule31b(object):
|
||||||
|
"""Disambiguate Prefix Rule 31b
|
||||||
|
Original Rule 31 : penyV -> peny-sV
|
||||||
|
Modified by CC, shifted to 31b
|
||||||
|
"""
|
||||||
|
|
||||||
|
def disambiguate(self, word):
|
||||||
|
"""Disambiguate Prefix Rule 31b
|
||||||
|
Original Rule 31 : penyV -> peny-sV
|
||||||
|
Modified by CC, shifted to 31b
|
||||||
|
"""
|
||||||
|
matches = re.match(r'^peny([aiueo])(.*)$', word)
|
||||||
|
if matches:
|
||||||
|
return 's' + matches.group(1) + matches.group(2)
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
import re
|
||||||
|
|
||||||
|
class DisambiguatorPrefixRule32(object):
|
||||||
|
"""Disambiguate Prefix Rule 32
|
||||||
|
Rule 32 : pelV -> pe-lV except pelajar -> ajar
|
||||||
|
"""
|
||||||
|
|
||||||
|
def disambiguate(self, word):
|
||||||
|
"""Disambiguate Prefix Rule 32
|
||||||
|
Rule 32 : pelV -> pe-lV except pelajar -> ajar
|
||||||
|
"""
|
||||||
|
if word == 'pelajar':
|
||||||
|
return 'ajar'
|
||||||
|
matches = re.match(r'^pe(l[aiueo])(.*)$', word)
|
||||||
|
if matches:
|
||||||
|
return matches.group(1) + matches.group(2)
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
import re
|
||||||
|
|
||||||
|
class DisambiguatorPrefixRule34(object):
|
||||||
|
"""Disambiguate Prefix Rule 34
|
||||||
|
Rule 34 : peCP -> pe-CP where C != {r|w|y|l|m|n} and P != 'er'
|
||||||
|
"""
|
||||||
|
|
||||||
|
def disambiguate(self, word):
|
||||||
|
"""Disambiguate Prefix Rule 34
|
||||||
|
Rule 34 : peCP -> pe-CP where C != {r|w|y|l|m|n} and P != 'er'
|
||||||
|
"""
|
||||||
|
matches = re.match(r'^pe([bcdfghjklmnpqrstvwxyz])(.*)$', word)
|
||||||
|
if matches:
|
||||||
|
if re.match(r'^er(.*)$', matches.group(2)):
|
||||||
|
return
|
||||||
|
return matches.group(1) + matches.group(2)
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
import re
|
||||||
|
|
||||||
|
class DisambiguatorPrefixRule35(object):
|
||||||
|
"""Disambiguate Prefix Rule 35
|
||||||
|
Rule 35 : terC1erC2 -> ter-C1erC2 where C1 != {r}
|
||||||
|
"""
|
||||||
|
|
||||||
|
def disambiguate(self, word):
|
||||||
|
"""Disambiguate Prefix Rule 35
|
||||||
|
Rule 35 : terC1erC2 -> ter-C1erC2 where C1 != {r}
|
||||||
|
"""
|
||||||
|
matches = re.match(r'^ter([bcdfghjkpqstvxz])(er[bcdfghjklmnpqrstvwxyz])(.*)$', word)
|
||||||
|
if matches:
|
||||||
|
return matches.group(1) + matches.group(2) + matches.group(3)
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
import re
|
||||||
|
|
||||||
|
class DisambiguatorPrefixRule36(object):
|
||||||
|
"""Disambiguate Prefix Rule 36
|
||||||
|
Rule 36 : peC1erC2 -> pe-C1erC2 where C1 != {r|w|y|l|m|n}
|
||||||
|
"""
|
||||||
|
|
||||||
|
def disambiguate(self, word):
|
||||||
|
"""Disambiguate Prefix Rule 36
|
||||||
|
Rule 36 : peC1erC2 -> pe-C1erC2 where C1 != {r|w|y|l|m|n}
|
||||||
|
"""
|
||||||
|
matches = re.match(r'^pe([bcdfghjkpqstvxz])(er[bcdfghjklmnpqrstvwxyz])(.*)$', word)
|
||||||
|
if matches:
|
||||||
|
return matches.group(1) + matches.group(2) + matches.group(3)
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
import re
|
||||||
|
|
||||||
|
class DisambiguatorPrefixRule37a(object):
|
||||||
|
"""Disambiguate Prefix Rule 37a (CC infix rules)
|
||||||
|
Rule 37a : CerV -> CerV
|
||||||
|
"""
|
||||||
|
|
||||||
|
def disambiguate(self, word):
|
||||||
|
"""Disambiguate Prefix Rule 37a (CC infix rules)
|
||||||
|
Rule 37a : CerV -> CerV
|
||||||
|
"""
|
||||||
|
matches = re.match(r'^([bcdfghjklmnpqrstvwxyz])(er[aiueo])(.*)$', word)
|
||||||
|
if matches:
|
||||||
|
return matches.group(1) + matches.group(2) + matches.group(3)
|
||||||
|
|
||||||
|
class DisambiguatorPrefixRule37b(object):
|
||||||
|
"""Disambiguate Prefix Rule 37b (CC infix rules)
|
||||||
|
Rule 37b : CerV -> CV
|
||||||
|
"""
|
||||||
|
|
||||||
|
def disambiguate(self, word):
|
||||||
|
"""Disambiguate Prefix Rule 37b (CC infix rules)
|
||||||
|
Rule 37b : CerV -> CV
|
||||||
|
"""
|
||||||
|
matches = re.match(r'^([bcdfghjklmnpqrstvwxyz])er([aiueo])(.*)$', word)
|
||||||
|
if matches:
|
||||||
|
return matches.group(1) + matches.group(2) + matches.group(3)
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
import re
|
||||||
|
|
||||||
|
class DisambiguatorPrefixRule38a(object):
|
||||||
|
"""Disambiguate Prefix Rule 38a (CC infix rules)
|
||||||
|
Rule 38a : CelV -> CelV
|
||||||
|
"""
|
||||||
|
|
||||||
|
def disambiguate(self, word):
|
||||||
|
"""Disambiguate Prefix Rule 38a (CC infix rules)
|
||||||
|
Rule 38a : CelV -> CelV
|
||||||
|
"""
|
||||||
|
matches = re.match(r'^([bcdfghjklmnpqrstvwxyz])(el[aiueo])(.*)$', word)
|
||||||
|
if matches:
|
||||||
|
return matches.group(1) + matches.group(2) + matches.group(3)
|
||||||
|
|
||||||
|
class DisambiguatorPrefixRule38b(object):
|
||||||
|
"""Disambiguate Prefix Rule 38b (CC infix rules)
|
||||||
|
Rule 38b : CelV -> CV
|
||||||
|
"""
|
||||||
|
|
||||||
|
def disambiguate(self, word):
|
||||||
|
"""Disambiguate Prefix Rule 38b (CC infix rules)
|
||||||
|
Rule 38b : CelV -> CV
|
||||||
|
"""
|
||||||
|
matches = re.match(r'^([bcdfghjklmnpqrstvwxyz])el([aiueo])(.*)$', word)
|
||||||
|
if matches:
|
||||||
|
return matches.group(1) + matches.group(2) + matches.group(3)
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
import re
|
||||||
|
|
||||||
|
class DisambiguatorPrefixRule39a(object):
|
||||||
|
"""Disambiguate Prefix Rule 39a (CC infix rules)
|
||||||
|
Rule 39a : CemV -> CemV
|
||||||
|
"""
|
||||||
|
|
||||||
|
def disambiguate(self, word):
|
||||||
|
"""Disambiguate Prefix Rule 39a (CC infix rules)
|
||||||
|
Rule 39a : CemV -> CemV
|
||||||
|
"""
|
||||||
|
matches = re.match(r'^([bcdfghjklmnpqrstvwxyz])(em[aiueo])(.*)$', word)
|
||||||
|
if matches:
|
||||||
|
return matches.group(1) + matches.group(2) + matches.group(3)
|
||||||
|
|
||||||
|
class DisambiguatorPrefixRule39b(object):
|
||||||
|
"""Disambiguate Prefix Rule 39b (CC infix rules)
|
||||||
|
Rule 39b : CemV -> CV
|
||||||
|
"""
|
||||||
|
|
||||||
|
def disambiguate(self, word):
|
||||||
|
"""Disambiguate Prefix Rule 39b (CC infix rules)
|
||||||
|
Rule 39b : CemV -> CV
|
||||||
|
"""
|
||||||
|
matches = re.match(r'^([bcdfghjklmnpqrstvwxyz])em([aiueo])(.*)$', word)
|
||||||
|
if matches:
|
||||||
|
return matches.group(1) + matches.group(2) + matches.group(3)
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
class DisambiguatorPrefixRule4(object):
|
||||||
|
"""Disambiguate Prefix Rule 4
|
||||||
|
Rule 4 : belajar -> bel-ajar
|
||||||
|
"""
|
||||||
|
|
||||||
|
def disambiguate(self, word):
|
||||||
|
"""Disambiguate Prefix Rule 4
|
||||||
|
Rule 4 : belajar -> bel-ajar
|
||||||
|
"""
|
||||||
|
if word == 'belajar':
|
||||||
|
return 'ajar'
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
import re
|
||||||
|
|
||||||
|
class DisambiguatorPrefixRule40a(object):
|
||||||
|
"""Disambiguate Prefix Rule 40a (CC infix rules)
|
||||||
|
Rule 40a : CinV -> CinV
|
||||||
|
"""
|
||||||
|
|
||||||
|
def disambiguate(self, word):
|
||||||
|
"""Disambiguate Prefix Rule 40a (CC infix rules)
|
||||||
|
Rule 40a : CinV -> CinV
|
||||||
|
"""
|
||||||
|
matches = re.match(r'^([bcdfghjklmnpqrstvwxyz])(in[aiueo])(.*)$', word)
|
||||||
|
if matches:
|
||||||
|
return matches.group(1) + matches.group(2) + matches.group(3)
|
||||||
|
|
||||||
|
class DisambiguatorPrefixRule40b(object):
|
||||||
|
"""Disambiguate Prefix Rule 40b (CC infix rules)
|
||||||
|
Rule 40b : CinV -> CV
|
||||||
|
"""
|
||||||
|
|
||||||
|
def disambiguate(self, word):
|
||||||
|
"""Disambiguate Prefix Rule 40b (CC infix rules)
|
||||||
|
Rule 40b : CinV -> CV
|
||||||
|
"""
|
||||||
|
matches = re.match(r'^([bcdfghjklmnpqrstvwxyz])in([aiueo])(.*)$', word)
|
||||||
|
if matches:
|
||||||
|
return matches.group(1) + matches.group(2) + matches.group(3)
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
import re
|
||||||
|
|
||||||
|
class DisambiguatorPrefixRule41(object):
|
||||||
|
"""Disambiguate Prefix Rule 41
|
||||||
|
Rule 41 : kuA -> ku-A
|
||||||
|
"""
|
||||||
|
|
||||||
|
def disambiguate(self, word):
|
||||||
|
"""Disambiguate Prefix Rule 41
|
||||||
|
Rule 41 : kuA -> ku-A
|
||||||
|
"""
|
||||||
|
matches = re.match(r'^ku(.*)$', word)
|
||||||
|
if matches:
|
||||||
|
return matches.group(1)
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
import re
|
||||||
|
|
||||||
|
class DisambiguatorPrefixRule42(object):
|
||||||
|
"""Disambiguate Prefix Rule 42
|
||||||
|
Rule 42 : kauA -> kau-A
|
||||||
|
"""
|
||||||
|
|
||||||
|
def disambiguate(self, word):
|
||||||
|
"""Disambiguate Prefix Rule 42
|
||||||
|
Rule 42 : kauA -> kau-A
|
||||||
|
"""
|
||||||
|
matches = re.match(r'^kau(.*)$', word)
|
||||||
|
if matches:
|
||||||
|
return matches.group(1)
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
import re
|
||||||
|
|
||||||
|
class DisambiguatorPrefixRule5(object):
|
||||||
|
"""Disambiguate Prefix Rule 5
|
||||||
|
Rule 5 : beC1erC2 -> be-C1erC2 where C1 != 'r'
|
||||||
|
"""
|
||||||
|
|
||||||
|
def disambiguate(self, word):
|
||||||
|
"""Disambiguate Prefix Rule 5
|
||||||
|
Rule 5 : beC1erC2 -> be-C1erC2 where C1 != 'r'
|
||||||
|
"""
|
||||||
|
matches = re.match(r'be([bcdfghjklmnpqstvwxyz])(er[bcdfghjklmnpqrstvwxyz])(.*)$', word)
|
||||||
|
if matches:
|
||||||
|
return matches.group(1) + matches.group(2) + matches.group(3)
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
import re
|
||||||
|
|
||||||
|
class DisambiguatorPrefixRule6a(object):
|
||||||
|
"""Disambiguate Prefix Rule 6a
|
||||||
|
Rule 6a : terV -> ter-V
|
||||||
|
"""
|
||||||
|
|
||||||
|
def disambiguate(self, word):
|
||||||
|
"""Disambiguate Prefix Rule 6a
|
||||||
|
Rule 6a : terV -> ter-V
|
||||||
|
"""
|
||||||
|
matches = re.match(r'^ter([aiueo].*)$', word)
|
||||||
|
if matches:
|
||||||
|
return matches.group(1)
|
||||||
|
|
||||||
|
class DisambiguatorPrefixRule6b(object):
|
||||||
|
"""Disambiguate Prefix Rule 6b
|
||||||
|
Rule 6b : terV -> te-rV
|
||||||
|
"""
|
||||||
|
|
||||||
|
def disambiguate(self, word):
|
||||||
|
"""Disambiguate Prefix Rule 6b
|
||||||
|
Rule 6b : terV -> te-rV
|
||||||
|
"""
|
||||||
|
matches = re.match(r'^ter([aiueo].*)$', word)
|
||||||
|
if matches:
|
||||||
|
return 'r' + matches.group(1)
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
import re
|
||||||
|
|
||||||
|
class DisambiguatorPrefixRule7(object):
|
||||||
|
"""Disambiguate Prefix Rule 7
|
||||||
|
Rule 7 : terCerv -> ter-CerV where C != 'r'
|
||||||
|
"""
|
||||||
|
|
||||||
|
def disambiguate(self, word):
|
||||||
|
"""Disambiguate Prefix Rule 7
|
||||||
|
Rule 7 : terCerv -> ter-CerV where C != 'r'
|
||||||
|
"""
|
||||||
|
matches = re.match(r'^ter([bcdfghjklmnpqrstvwxyz])er([aiueo].*)$', word)
|
||||||
|
if matches:
|
||||||
|
if matches.group(1) == 'r':
|
||||||
|
return
|
||||||
|
return matches.group(1) + 'er' + matches.group(2)
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
import re
|
||||||
|
|
||||||
|
class DisambiguatorPrefixRule8(object):
|
||||||
|
"""Disambiguate Prefix Rule 8
|
||||||
|
Rule 8 : terCP -> ter-CP where C != 'r' and P != 'er'
|
||||||
|
"""
|
||||||
|
|
||||||
|
def disambiguate(self, word):
|
||||||
|
"""Disambiguate Prefix Rule 8
|
||||||
|
Rule 8 : terCP -> ter-CP where C != 'r' and P != 'er'
|
||||||
|
"""
|
||||||
|
matches = re.match(r'^ter([bcdfghjklmnpqrstvwxyz])(.*)$', word)
|
||||||
|
if matches:
|
||||||
|
if matches.group(1) == 'r' or re.match(r'^er(.*)$', matches.group(2)):
|
||||||
|
return
|
||||||
|
return matches.group(1) + matches.group(2)
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
import re
|
||||||
|
|
||||||
|
class DisambiguatorPrefixRule9(object):
|
||||||
|
"""Disambiguate Prefix Rule 9
|
||||||
|
Rule 9 : te-C1erC2 -> te-C1erC2 where C1 != 'r'
|
||||||
|
"""
|
||||||
|
|
||||||
|
def disambiguate(self, word):
|
||||||
|
"""Disambiguate Prefix Rule 9
|
||||||
|
Rule 9 : te-C1erC2 -> te-C1erC2 where C1 != 'r'
|
||||||
|
"""
|
||||||
|
matches = re.match(r'^te([bcdfghjklmnpqrstvwxyz])er([bcdfghjklmnpqrstvwxyz])(.*)$', word)
|
||||||
|
if matches:
|
||||||
|
if matches.group(1) == 'r':
|
||||||
|
return
|
||||||
|
return matches.group(1) + 'er' + matches.group(2) + matches.group(3)
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue