|
import gradio as gr |
|
from sentence_transformers import SentenceTransformer, util |
|
import pandas as pd |
|
|
|
|
|
|
|
model = SentenceTransformer("JJTsao/fine-tuned_movie_retriever-bge-base-en-v1.5") |
|
|
|
|
|
movies = pd.read_csv("movies.csv") |
|
|
|
movie_embeddings = model.encode(movies["title"].tolist(), convert_to_tensor=True) |
|
|
|
def recommend(favorite_movie: str): |
|
""" |
|
Krijg vijf aanbevolen titels op basis van de opgegeven film of omschrijving. |
|
""" |
|
|
|
query_embedding = model.encode(favorite_movie, convert_to_tensor=True) |
|
|
|
cos_scores = util.cos_sim(query_embedding, movie_embeddings)[0] |
|
|
|
top_indices = cos_scores.topk(k=5).indices.tolist() |
|
|
|
recommendations = [movies["title"].iloc[i] for i in top_indices] |
|
return recommendations |
|
|
|
|
|
iface = gr.Interface( |
|
fn=recommend, |
|
inputs=gr.Textbox(lines=1, placeholder="Typ hier een filmtitel of omschrijving...", label="Jouw favoriete film"), |
|
outputs=gr.Textbox(label="Aanbevolen titels"), |
|
title="StreamVibe Recommender", |
|
description="Geef je favoriete film of omschrijving, en krijg 5 vergelijkbare titels uit je eigen lijst." |
|
) |
|
|
|
if __name__ == "__main__": |
|
iface.launch() |