Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🤖 FAQ Chatbot Sederhana

Chatbot FAQ berbasis TF-IDF + Cosine Similarity untuk mencocokkan pertanyaan user dengan database FAQ. Tersedia dalam dua versi: CLI dan Web (Flask) dengan tampilan bergaya terminal.

✨ Fitur

  • Pencocokan pertanyaan menggunakan NLP klasik (TF-IDF + cosine similarity), tanpa perlu API/LLM eksternal
  • Threshold confidence score — kalau pertanyaan tidak cukup mirip dengan FAQ manapun, bot akan bilang tidak tahu (bukan asal jawab)
  • Database FAQ dalam format JSON, gampang ditambah/diedit
  • Versi CLI untuk quick testing
  • Versi web dengan UI bertema terminal (Flask + vanilla JS, tanpa framework frontend)

📂 Struktur Project

faq-chatbot/
├── faq_data.json      # Database pertanyaan & jawaban
├── matcher.py          # Engine TF-IDF matching
├── faq_bot.py          # Entry point versi CLI
├── app.py              # Entry point versi web (Flask)
├── templates/
│   └── index.html      # UI chat bertema terminal
└── requirements.txt

🚀 Cara Menjalankan

  1. Clone repo dan masuk ke folder project:

    git clone https://github.com/Kanzacky/ChatBotFAQSimple.git
    cd ChatBotFAQSimple
  2. Buat virtual environment (disarankan, terutama di Arch Linux):

    python3 -m venv venv
    source venv/bin/activate
  3. Install dependencies:

    pip install -r requirements.txt
  4. Jalankan versi CLI:

    python faq_bot.py

    Atau versi web:

    python app.py

    Lalu buka http://127.0.0.1:5000 di browser.

🧠 Cara Kerja

  1. Semua pertanyaan di faq_data.json diubah jadi vektor TF-IDF saat aplikasi start.
  2. Pertanyaan user dibersihkan (lowercase, hapus tanda baca) lalu diubah jadi vektor dengan vectorizer yang sama.
  3. Dihitung cosine similarity antara vektor pertanyaan user dengan semua vektor FAQ.
  4. FAQ dengan skor similarity tertinggi dipilih sebagai jawaban — asalkan skornya di atas threshold (default 0.3). Kalau di bawah threshold, bot akan menampilkan pesan fallback.

➕ Menambah FAQ Baru

Tinggal tambahkan entry baru di faq_data.json:

{
  "question": "Pertanyaan baru di sini?",
  "answer": "Jawaban untuk pertanyaan tersebut."
}

Tidak perlu training ulang model — TF-IDF akan otomatis fit ulang setiap aplikasi dijalankan.

🔧 Kemungkinan Pengembangan

  • Ganti TF-IDF dengan sentence embeddings (misal sentence-transformers) untuk pencocokan semantik yang lebih akurat
  • Tambah fitur logging pertanyaan yang tidak terjawab, untuk mengetahui FAQ apa yang perlu ditambahkan
  • Deploy versi web ke Render/Railway biar bisa diakses publik
  • Tambah dukungan multi-turn conversation (bukan cuma single-turn Q&A)

🛠️ Tech Stack

  • Python 3
  • scikit-learn (TF-IDF Vectorizer, cosine similarity)
  • Flask (web server)
  • Vanilla HTML/CSS/JS (tanpa framework frontend)

Feel free to fork & modify.

About

Simple FAQ chatbot using TF-IDF + cosine similarity, with CLI and Flask web versions

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages