Skip to content

Latest commit

 

History

31 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

Review Assignment Due Date

Deskripsi

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.

Fitur

  • 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

Tech Stack

Backend

  • Python 3.x
  • Flask - Web framework
  • NumPy - Operasi matriks
  • Pillow (PIL) - Pemrosesan gambar
  • NLTK - Natural Language Processing

Frontend

  • React 18 - UI Library
  • Vite - Build tool
  • CSS3 - Styling

Struktur Proyek

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

Instalasi dan Menjalankan

Prasyarat

  • Python 3.8 atau lebih baru
  • Node.js 16 atau lebih baru
  • npm atau yarn

Backend

  1. Masuk ke direktori backend:
cd src/backend
  1. Install dependencies Python:
pip install flask flask-cors numpy pillow nltk
  1. Jalankan server:
python app.py

Server 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.

Frontend

  1. Masuk ke direktori frontend:
cd src/frontend
  1. Install dependencies:
npm install
  1. Jalankan development server:
npm run dev

Aplikasi akan berjalan di http://localhost:5173

API Endpoints

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)

Algoritma

PCA untuk Pencarian Gambar

  1. Gambar dikonversi ke grayscale dan vektor
  2. Data dinormalisasi dengan mengurangi mean
  3. SVD dihitung menggunakan Power Iteration
  4. Gambar diproyeksikan ke ruang eigen
  5. Kemiripan dihitung dengan jarak Euclidean

LSA untuk Rekomendasi Teks

  1. Teks ditokenisasi dan di-stem
  2. Matriks term-document dibangun
  3. TF-IDF diterapkan untuk pembobotan
  4. SVD dilakukan untuk reduksi dimensi
  5. Kemiripan dihitung dengan cosine similarity

Tim Pengembang

Kelompok 41 - afafufuf

NIM Nama
13524007 Muhammad Ashkar
13524009 Mikhael Benrael Tampubolon
13524011 Muhammad Iqbal Raihan

Referensi

  1. Anton, H. (2010). Elementary Linear Algebra (10th ed.). John Wiley & Sons.
  2. 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

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages