Sistem Perpustakaan Digital dengan Rekomendasi Semantik dan Pencarian Visual Berbasis SVD
EigenPustaka adalah aplikasi web perpustakaan digital yang memanfaatkan konsep aljabar linear untuk memberikan pengalaman pencarian dan rekomendasi buku yang cerdas. Aplikasi ini mengimplementasikan:
- Pencarian Gambar berbasis PCA (Principal Component Analysis): Mencari buku berdasarkan kemiripan sampul menggunakan eigen-decomposition
- Rekomendasi Buku berbasis LSA (Latent Semantic Analysis): Memberikan rekomendasi buku serupa berdasarkan analisis konten teks
Seluruh algoritma aljabar linear, termasuk Singular Value Decomposition (SVD), diimplementasikan dari awal tanpa menggunakan library eksternal untuk perhitungan eigen.
- Koleksi Buku: Menampilkan 523 buku digital dengan paginasi
- Pencarian Judul: Filter buku berdasarkan judul
- Pencarian via Sampul: Upload gambar sampul untuk mencari buku serupa menggunakan PCA
- Baca Buku: Membaca konten teks buku secara langsung
- Rekomendasi Cerdas: Mendapatkan rekomendasi buku terkait menggunakan LSA dengan skor kemiripan
- Python 3.x
- Flask - Web framework
- NumPy - Operasi matriks
- Pillow (PIL) - Pemrosesan gambar
- NLTK - Natural Language Processing
- React 18 - UI Library
- Vite - Build tool
- CSS3 - Styling
algeo2-afafufuf/
├── data/
│ ├── covers/ # 523 gambar sampul buku (.jpg)
│ ├── txt/ # 523 file konten buku (.txt)
│ └── mapper.json # Mapping ID ke metadata buku
├── docs/
│ └── main.tex # Laporan dalam format LaTeX
├── src/
│ ├── backend/
│ │ ├── uploads/ # Folder upload gambar kueri
│ │ ├── app.py # Flask server & API endpoints
│ │ ├── Eigen.py # Implementasi SVD & Power Iteration
│ │ ├── Preprocess.py # Preprocessing gambar & PCA
│ │ ├── ImageSearch.py # Pencarian gambar
│ │ ├── TextPreprocess.py # Preprocessing teks
│ │ ├── LSA.py # Implementasi LSA
│ │ └── TextSearch.py # Pencarian & rekomendasi teks
│ └── frontend/
│ ├── public/ # Asset statis
│ ├── src/
│ │ ├── api/ # Konfigurasi API
│ │ ├── components/ # Komponen React
│ │ ├── views/ # Halaman utama
│ │ ├── App.jsx # Komponen root
│ │ └── index.css # Global styles
│ ├── index.html
│ ├── package.json
│ └── vite.config.js
├── test/
├── README.md
└── LICENSE
- Python 3.8 atau lebih baru
- Node.js 16 atau lebih baru
- npm atau yarn
- Masuk ke direktori backend:
cd src/backend- Install dependencies Python:
pip install flask flask-cors numpy pillow nltk- Jalankan server:
python app.pyServer akan berjalan di http://127.0.0.1:5000
Catatan: Saat pertama kali dijalankan, backend akan melakukan training model LSA yang memakan waktu beberapa menit. Hasil training akan di-cache sehingga startup selanjutnya lebih cepat.
- Masuk ke direktori frontend:
cd src/frontend- Install dependencies:
npm install- Jalankan development server:
npm run devAplikasi akan berjalan di http://localhost:5173
| Method | Endpoint | Deskripsi |
|---|---|---|
| GET | /api/books |
Mengambil daftar semua buku |
| POST | /api/search-image |
Pencarian buku via gambar sampul |
| GET | /api/recommend/<book_id> |
Mendapatkan rekomendasi buku |
| GET | /data/<path> |
Mengakses file statis (sampul/teks) |
- Gambar dikonversi ke grayscale dan vektor
- Data dinormalisasi dengan mengurangi mean
- SVD dihitung menggunakan Power Iteration
- Gambar diproyeksikan ke ruang eigen
- Kemiripan dihitung dengan jarak Euclidean
- Teks ditokenisasi dan di-stem
- Matriks term-document dibangun
- TF-IDF diterapkan untuk pembobotan
- SVD dilakukan untuk reduksi dimensi
- Kemiripan dihitung dengan cosine similarity
Kelompok 41 - afafufuf
| NIM | Nama |
|---|---|
| 13524007 | Muhammad Ashkar |
| 13524009 | Mikhael Benrael Tampubolon |
| 13524011 | Muhammad Iqbal Raihan |
- Anton, H. (2010). Elementary Linear Algebra (10th ed.). John Wiley & Sons.
- Golub, G. H., & Van Loan, C. F. (2013). Matrix Computations (4th ed.). Johns Hopkins University Press.
IF2123 Aljabar Linier dan Geometri
Semester I Tahun 2024/2025
Institut Teknologi Bandung