https://github.com/vickshan001/imdb-search-engine-project
NLP-powered IMDb search engine with Flask backend using BM25 and TF-IDF for smart movie retrieval and ranking.
https://github.com/vickshan001/imdb-search-engine-project
bm25 flask imdb information-retrieval movie-search nlp python react search-engine tf-idf
Last synced: 2 months ago
JSON representation
NLP-powered IMDb search engine with Flask backend using BM25 and TF-IDF for smart movie retrieval and ranking.
- Host: GitHub
- URL: https://github.com/vickshan001/imdb-search-engine-project
- Owner: vickshan001
- Created: 2025-03-29T23:22:26.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-03-29T23:28:55.000Z (over 1 year ago)
- Last Synced: 2025-03-30T00:22:25.103Z (over 1 year ago)
- Topics: bm25, flask, imdb, information-retrieval, movie-search, nlp, python, react, search-engine, tf-idf
- Language: HTML
- Homepage:
- Size: 0 Bytes
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# ๐ฌ IMDb Smart Search Engine
An intelligent NLP-powered search engine that allows users to query and explore IMDb's top 1000 movies using natural language. Built as part of a **group project for the "Information Retrieval" module (2024)**.
---
## ๐ฅ Group Contribution
This project was developed collaboratively as part of our university coursework.
**The backend** (Flask API, data preprocessing, ranking models) was designed and implemented by **Vickshan Vicknakumaran** and a teammate.
The **frontend** (React-based UI) was handled by other team members.
---
## ๐ Project Overview
**IMDb Smart Search Engine** helps users find relevant movies using natural queries like:
> โAction film with Leonardo DiCaprio from the 2000sโ
Instead of relying on exact title matches, the system ranks results using semantic similarity via **BM25** and **TF-IDF**.
---
## ๐ฑ Features
- ๐ Search by title, genre, director, actors, or keywords
- ๐ง Ranking with **BM25** and **TF-IDF cosine similarity**
- ๐งน Preprocessing with NLTK (tokenization, stopwords, stemming)
- โก RESTful API using Flask
- ๐ CORS enabled for React frontend integration
- ๐ Based on IMDb Top 1000 dataset (CSV)
---
## ๐ Technologies Used
- **Backend**:
- Python, Flask, NLTK
- BM25Okapi (`rank_bm25`)
- Scikit-learn (TF-IDF, cosine similarity)
- Pandas
- Flask-CORS
- **Frontend**:
- React (handled by front-end team members)
## ๐ก How It Works
- User submits a search query via the React frontend
- Flask backend receives the query, preprocesses it with NLTK
- Two models (BM25 & TF-IDF) rank the top matching movies
- Combined and deduplicated results are returned as JSON
- Frontend displays results with movie posters and metadata
---
## ๐ผ๏ธ Screenshots
---
## ๐ฎ Future Improvements
- Use Transformer models (e.g. BERT) for context-aware ranking
- Add user preferences/history for personalized results
- Integrate movie streaming service availability
- Build chatbot-style interface
---
## ๐ Example API Call
Returns:
```json
{
"search_results": [
{
"Series_Title": "The Dark Knight",
"Genre": "Action, Crime, Drama",
"Director": "Christopher Nolan",
"Stars": ["Christian Bale", "Heath Ledger", "Aaron Eckhart", "Michael Caine"],
"IMDB_Rating": 9.0,
...
}
]
}
##๐ Module Information
-๐ Module: CI6416 โ Information Retrieval
-๐ Year: 2024
-๐ซ University: Queen Mary, University of London