映画推薦システム — Movie-recommender

AI/ML

概要

Movie-recommenderは、映画のメタデータ(タイトル、概要、ジャンルなど)を用いたコンテンツベースの推薦システムです。特徴抽出にTF-IDFを、類似度計算にコサイン類似度を使用し、類似度に基づいてユーザーが選んだ映画に近い作品を提示します。Flaskで簡易なWebインターフェース/APIを提供し、SQLiteに前処理済みデータや結果を保持して応答を高速化しています。実装はPandasとScikit-Learn中心で、TMDB 5000データセットを利用しています。

GitHub

リポジトリの統計情報

  • スター数: 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 ファイル

まとめ

シンプルで理解しやすいコンテンツベース映画推薦の出発点。拡張余地が大きいです。

リポジトリ情報:

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…