映画推薦システム — Movie-recommender
概要
Movie-recommenderは、映画のメタデータ(タイトル、概要、ジャンルなど)を用いたコンテンツベースの推薦システムです。特徴抽出にTF-IDFを、類似度計算にコサイン類似度を使用し、類似度に基づいてユーザーが選んだ映画に近い作品を提示します。Flaskで簡易なWebインターフェース/APIを提供し、SQLiteに前処理済みデータや結果を保持して応答を高速化しています。実装はPandasとScikit-Learn中心で、TMDB 5000データセットを利用しています。
リポジトリの統計情報
- スター数: 2
- フォーク数: 0
- ウォッチャー数: 2
- コミット数: 3
- ファイル数: 12
- メインの言語: Python
主な特徴
- コンテンツベースフィルタリング:TF-IDFとコサイン類似度で類似映画を推薦
- FlaskによるWeb/APIインターフェースを提供
- SQLiteで前処理データや推薦結果を保存して高速検索
- TMDB 5000データセットを利用し、実データで評価可能
技術的なポイント
このプロジェクトは典型的なコンテンツベース推薦のワークフローを踏んでいます。まずPandasでTMDBのメタデータを読み込み、タイトルや概要、ジャンルなどのテキスト属性を整形して1つのテキスト特徴量に統合します。次にScikit-LearnのTfidfVectorizerで語彙をベクトル化し、各映画を高次元の疎ベクトルとして表現します。コサイン類似度を計算して映画同士の類似度行列を得ることで、与えられた映画に対して類似スコアの高い作品を上位推薦します。
実装面では、計算コストを抑えるためにTF-IDF行列や類似度計算の結果をSQLiteにキャッシュする設計になっており、FlaskのエンドポイントからはこのDBを参照して迅速に推薦結果を返せるようになっています。コード構成はapp.py(Flaskアプリ)とmodels.py(推薦ロジックやDB操作)を中心に分離されており、テキスト前処理、ベクトル化、類似度計算の責務が明確です。
ただし現状はTF-IDF+コサイン類似度に依存するため、語彙の変化や文脈情報を捉えにくい点、ユーザー嗜好や人気度を考慮しない点などの制約があります。将来的な改善案としては、文脈を捉える埋め込み(BERT系やSentenceTransformers)の導入、ハイブリッド方式(協調フィルタリングとの併用)、推薦品質評価(精度・多様性の指標)、およびスケーラブルな類似検索(Faiss等)の採用が考えられます。
プロジェクトの構成
主要なファイルとディレクトリ:
- .gitignore: file
- LICENSE: file
- README.md: file
- app.py: file
- models.py: file
…他 7 ファイル
まとめ
シンプルで理解しやすいコンテンツベース映画推薦の出発点。拡張余地が大きいです。
リポジトリ情報:
- 名前: Movie-recommender
- 説明: Movie recommendation engine utilizing TF-IDF and Cosine Similarity for content-based filtering. Powered by Flask & SQLite.
- スター数: 2
- 言語: Python
- URL: https://github.com/sepehrrr4/Movie-recommender
- オーナー: sepehrrr4
- アバター: https://avatars.githubusercontent.com/u/134446788?v=4
READMEの抜粋:
Movie Recommendation System 🎬
A content-based movie recommendation system built with Flask, Pandas, and Scikit-Learn. This application suggests movies based on similarity logic using metadata from the TMDB 5000 dataset.
Note: This project is currently in active development.
🚀 Features
- Content-Based Filtering: Recommends movies similar to a selected movie using TF-IDF vectorization and Cosine Similarity.
- Database Integration: Uses SQLite to store processed…