Skip to content

Latest commit

 

History

66 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

EigenPustaka: Sistem Perpustakaan Digital dengan Rekomendasi Semantik dan Pencarian Visual Berbasis SVD

Tugas Besar 2 IF2123 Aljabar Linier dan Geometri

Program Studi Teknik Informatika - Institut Teknologi Bandung
Semester I Tahun 2025/2026

👥 Anggota Kelompok: Pak Rila Tolong Kami

NIM Nama
13524012 Tengku Naufal Saqib
13523070 A. Fawwaz Azam Wicaksono
13523076 Fayyaz Akmal Lauda

📖 Deskripsi Singkat

EigenPustaka (Vectoria Library) adalah aplikasi perpustakaan digital modern yang menerapkan konsep Aljabar Linier untuk fitur pencarian dan rekomendasi cerdas. Aplikasi ini dibangun untuk membantu pengguna menemukan buku tidak hanya berdasarkan judul, tetapi juga berdasarkan kemiripan visual sampul dan relevansi topik konten.

Fitur utama yang diimplementasikan menggunakan algoritma matematis tanpa bantuan pustaka tingkat tinggi:

  1. Pencarian Visual (Image Search): Menggunakan Principal Component Analysis (PCA) untuk mereduksi dimensi gambar sampul dan Euclidean Distance untuk mencari kemiripan visual.
  2. Pencarian Semantik (Document Search): Menggunakan Latent Semantic Analysis (LSA) dengan teknik Fold-in untuk memproyeksikan dokumen kueri ke ruang laten dan mencari kesamaan topik.
  3. Sistem Rekomendasi: Memberikan rekomendasi buku terkait menggunakan Cosine Similarity pada vektor dokumen yang dihasilkan oleh SVD.

🚀 Fitur Utama

  1. Katalog Buku: Menampilkan daftar buku dengan paginasi yang efisien.
  2. Pencarian Judul: Pencarian berbasis teks (substring matching) untuk judul buku.
  3. Pencarian Gambar (PCA): Unggah gambar sampul untuk menemukan buku dengan desain sampul yang mirip. Menampilkan nilai Euclidean Distance (Jarak) sebagai indikator kemiripan.
  4. Pencarian Dokumen (LSA): Unggah file teks (.txt) untuk menemukan buku dengan topik/isi yang relevan. Menampilkan nilai Cosine Similarity (0-1) sebagai indikator relevansi.
  5. Detail Buku & Baca Cepat: Halaman detail yang menampilkan isi buku secara lengkap dengan antarmuka baca yang nyaman.
  6. Rekomendasi Cerdas: Pada halaman detail, sistem secara otomatis merekomendasikan 8 buku lain yang memiliki kemiripan topik tertinggi.
  7. Responsive UI/UX: Antarmuka modern yang responsif (Mobile & Desktop) dengan dukungan mode Carousel interaktif.

🛠️ Teknologi yang Digunakan

Frontend:

  • React + Vite (TypeScript)
  • Tailwind CSS (Styling)
  • Framer Motion (Animasi)
  • Lucide React (Ikon)

Backend:

  • Python (FastAPI)
  • NumPy (Komputasi Matriks & Vektor)
  • NLTK (Preprocessing Teks: Stemming & Stopwords)
  • Pillow (Pemrosesan Citra)

Algoritma Inti (Implementasi Manual):

  • Singular Value Decomposition (SVD)
  • Principal Component Analysis (PCA)
  • TF-IDF Weighting
  • Cosine Similarity & Euclidean Distance

📂 Struktur Direktori

.
├── data/ # Dataset (covers, txt, mapper.json) akan didownload ke sini
├── src/
│ ├── backend/
│ │ ├── api/ # Definisi Routes (search, books, recommend)
│ │ ├── artifacts/ # Model tersimpan (LSA: Uk, S, Vk | PCA: Mean, Eigenfaces)
│ │ ├── core/ # Implementasi Algoritma (SVD, LSA, PCA, Loader, Downloader)
│ │ │ ├── download_data.py
│ │ │ ├── pipeline.py
│ │ │ ├── lsa.py
│ │ │ └── pca.py
│ │ ├── main.py # Entry point FastAPI
│ │
│ └── frontend/
│ ├── src/
│ │ ├── components/ # Reusable UI (Navbar, BookGrid, Carousel)
│ │ ├── pages/ # Halaman Utama (Home, Upload, Detail)
│ │ └── App.tsx # Routing & State Management

├── requirements.txt # Dependensi Backend
└── README.md

🏃‍♂️ Cara Menjalankan Program

Pastikan Anda telah menginstal Python 3.10+, Node.js, dan NPM.

1. Inisialisasi Lingkungan

Lakukan langkah ini di root directory proyek (algeo2-pak-rila-tolong-kami).

# 1. Buat virtual environment (Disarankan)
python -m venv .venv

# 2. Aktifkan virtual environment
# Windows:
.venv\Scripts\activate
# Mac/Linux:
source .venv/bin/activate

# 3. Instal dependensi backend
pip install -r requirements.txt

2. Persiapan Data & Model (PENTING!)

Anda wajib menjalankan skrip ini secara berurutan agar data tersedia sebelum server dijalankan.

Langkah A: Download Dataset
Skrip ini akan mengunduh dataset buku (teks & gambar sampul) dari Kaggle/Sumber eksternal ke dalam folder data/.
python src/backend/core/download_data.py

Langkah B: Training Model & Pipeline
Skrip ini akan memproses data mentah, menghitung matriks SVD & PCA, lalu menyimpan hasilnya sebagai file .npy di folder src/backend/artifacts/.
py -m src.backend.core.pipeline

Tunggu hingga proses selesai. Pastikan folder src/backend/artifacts terisi file .npy (seperti IDF.npy, Uk.npy, D_norm.npy) sebelum melanjutkan.

3. Menjalankan Backend (Server)

# Pastikan venv masih aktif
# Jalankan server FastAPI
python main.py

Server akan berjalan di http://localhost:8000. Tunggu hingga muncul pesan di terminal:
Startup: Artifacts berhasil dimuat.

4. Menjalankan Frontend (Klien)

Buka terminal baru (jangan matikan terminal backend).

# Masuk ke folder frontend
cd src/frontend

# Instal dependensi Node (hanya pertama kali)
npm install

# Jalankan mode pengembangan
npm run dev

Aplikasi akan berjalan di http://localhost:5173. Buka alamat tersebut di browser Anda untuk mulai menggunakan aplikasi.

📝 Catatan Tambahan

  • Format File: Sistem hanya menerima file .txt (UTF-8) untuk pencarian dokumen dan file gambar (.jpg, .png) untuk pencarian cover.
  • Performa: Kecepatan pencarian bergantung pada spesifikasi mesin dan ukuran dataset. Untuk dataset 500+ buku, pencarian biasanya membutuhkan waktu < 1 detik setelah artifacts dimuat.
  • Threshold: Slider ambang batas di halaman pencarian bersifat dinamis:
    • PCA (Jarak): Semakin KECIL nilainya, semakin mirip.
    • LSA (Similaritas): Semakin BESAR nilainya (mendekati 1.0), semakin mirip.

Dibuat dengan 💻 dan ☕ oleh Kelompok "Pak Rila Tolong Kami"

About

algeo25-algeo2-tb2-template created by GitHub Classroom

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages