import gradio as gr from sentence_transformers import SentenceTransformer, util import pandas as pd # Stap 1: laadt het fine-tuned movie-recommender-model # Model ID: JJTsao/fine-tuned_movie_retriever-bge-base-en-v1.5 model = SentenceTransformer("JJTsao/fine-tuned_movie_retriever-bge-base-en-v1.5") # Stap 2: laad 'movies.csv' (zorg dat dit bestand al bestaat) movies = pd.read_csv("movies.csv") # Bereken embeddings voor elke filmtitel (eenmalig bij opstart) 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. """ # Encode de user-input query_embedding = model.encode(favorite_movie, convert_to_tensor=True) # Bereken cosine similarity met alle films in 'movies.csv' cos_scores = util.cos_sim(query_embedding, movie_embeddings)[0] # Pak de top-5 indices (hoogste scores) top_indices = cos_scores.topk(k=5).indices.tolist() # Geef de corresponderende titels terug recommendations = [movies["title"].iloc[i] for i in top_indices] return recommendations # Gradio-interface definieren: 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()