Netflix-data / app.py
mfraz's picture
Update app.py
9c3c0a3 verified
raw
history blame
2.85 kB
import streamlit as st
import pandas as pd
from transformers import AutoTokenizer, AutoModelForCausalLM
import speech_recognition as sr
from pydub import AudioSegment
# Load the Netflix dataset from CSV
@st.cache_data
def load_data():
return pd.read_csv("netflix_titles.csv")
# Load DialoGPT model and tokenizer
@st.cache_resource
def load_model():
tokenizer = AutoTokenizer.from_pretrained("microsoft/DialoGPT-medium")
model = AutoModelForCausalLM.from_pretrained("microsoft/DialoGPT-medium")
return tokenizer, model
# Function to search the dataset for movie details
def search_movie_details(query, data):
query = query.lower()
results = data[
data["title"].str.lower().str.contains(query) |
data["cast"].str.lower().str.contains(query) |
data["director"].str.lower().str.contains(query)
]
return results
# Function to convert voice to text
def voice_to_text():
recognizer = sr.Recognizer()
with sr.Microphone() as source:
st.write("Speak now...")
audio = recognizer.listen(source)
try:
text = recognizer.recognize_google(audio)
return text
except sr.UnknownValueError:
return "Sorry, I could not understand the audio."
except sr.RequestError:
return "Sorry, the speech service is down."
# Streamlit App
st.title("Netflix Movie Details Chatbot 🎬")
# Load dataset and model
data = load_data()
tokenizer, model = load_model()
# Input options: Text or Voice
input_option = st.radio("Choose input method:", ("Text", "Voice"))
user_input = ""
if input_option == "Text":
user_input = st.text_input("Enter the movie name, director, or cast:")
elif input_option == "Voice":
if st.button("Start Recording"):
user_input = voice_to_text()
st.write(f"You said: {user_input}")
# Generate response
if user_input:
# Search for movie details
movie_results = search_movie_details(user_input, data)
if not movie_results.empty:
st.write("Here are the matching results:")
for _, row in movie_results.iterrows():
st.write(f"**Title:** {row['title']}")
st.write(f"**Type:** {row['type']}")
st.write(f"**Director:** {row['director']}")
st.write(f"**Cast:** {row['cast']}")
st.write(f"**Release Year:** {row['release_year']}")
st.write(f"**Rating:** {row['rating']}")
st.write(f"**Description:** {row['description']}")
st.write("---")
else:
# Use DialoGPT for general conversation
inputs = tokenizer.encode(user_input, return_tensors="pt")
outputs = model.generate(inputs, max_length=100, num_return_sequences=1)
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
st.write(f"Chatbot: {response}")