Elevi7 commited on
Commit
7eceb3b
·
verified ·
1 Parent(s): ecff6c3

Upload 3 files

Browse files
Files changed (4) hide show
  1. .gitattributes +1 -0
  2. app.py +41 -0
  3. movies_dataset.csv +3 -0
  4. requirements.txt +4 -0
.gitattributes CHANGED
@@ -33,3 +33,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ movies_dataset.csv filter=lfs diff=lfs merge=lfs -text
app.py ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ import torch
3
+ import gradio as gr
4
+ import pandas as pd
5
+ from sentence_transformers import SentenceTransformer, util
6
+
7
+ df = pd.read_csv("movies_dataset.csv")
8
+ df['full_text'] = (
9
+ df['title'].fillna('') + " | " +
10
+ df['genres'].fillna('') + " | " +
11
+ df['overview'].fillna('') + " | " +
12
+ df['tagline'].fillna('')
13
+ )
14
+ df = df.sort_values(by="popularity", ascending=False).head(5000).reset_index(drop=True)
15
+ model = SentenceTransformer('all-MiniLM-L6-v2')
16
+ df['full_text'] = df['full_text'].fillna('').astype(str)
17
+ embeddings = model.encode(df['full_text'].tolist(), show_progress_bar=False)
18
+ df['embeddings'] = embeddings.tolist()
19
+ embedding_tensor = torch.tensor(embeddings)
20
+
21
+ def recommend_movies(user_input, top_k=5):
22
+ if not user_input.strip():
23
+ return "❗Please enter a movie description or genre."
24
+ user_embedding = model.encode(user_input, convert_to_tensor=True)
25
+ similarities = util.cos_sim(user_embedding, embedding_tensor)[0]
26
+ top_indices = similarities.argsort(descending=True)[:top_k]
27
+ results = []
28
+ for idx in top_indices:
29
+ row = df.iloc[idx.item()]
30
+ results.append(f"🎬 **{row['title']}**\n{row['overview'][:300]}...")
31
+ return "\n\n".join(results)
32
+
33
+ demo = gr.Interface(
34
+ fn=recommend_movies,
35
+ inputs=gr.Textbox(lines=2, placeholder="Describe a movie, mood, or genre..."),
36
+ outputs=gr.Markdown(),
37
+ title="🎬 Movie Recommender",
38
+ description="Type in a description, vibe, or genre and get movie suggestions!"
39
+ )
40
+
41
+ demo.launch()
movies_dataset.csv ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:bab7686097b796fd9a5272e6712bf47c8ac6c99d58818a29e87e02bff551a5ce
3
+ size 49724492
requirements.txt ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ gradio
2
+ torch
3
+ pandas
4
+ sentence-transformers