Spaces:
Runtime error
Runtime error
import streamlit as st | |
import pandas as pd | |
from sklearn.feature_extraction.text import TfidfVectorizer | |
from sklearn.metrics.pairwise import cosine_similarity | |
import numpy as np | |
# Function to load and preprocess the data | |
def load_data(file): | |
df = pd.read_csv(file, delimiter=";") | |
return df | |
# Function to process the input and get the most similar question | |
def get_most_similar_question(new_sentence, questions, answers, vectorizer, tfidf_matrix): | |
new_tfidf = vectorizer.transform([new_sentence]) | |
similarities = cosine_similarity(new_tfidf, tfidf_matrix) | |
most_similar_index = np.argmax(similarities) | |
similarity_percentage = similarities[0, most_similar_index] * 100 | |
return answers[most_similar_index], similarity_percentage | |
# Function to generate response | |
def answer_the_question(new_sentence, questions, answers, vectorizer, tfidf_matrix): | |
most_similar_answer, similarity_percentage = get_most_similar_question(new_sentence, questions, answers, vectorizer, tfidf_matrix) | |
if similarity_percentage > 70: | |
response = { | |
'answer': most_similar_answer | |
} | |
else: | |
response = { | |
'answer': 'Sorry, I am not aware of this information :(' | |
} | |
return response | |
# Streamlit app | |
def main(): | |
st.title("Q&A Chatbot") | |
st.write("Upload a CSV file with questions and answers.") | |
# Upload CSV file | |
uploaded_file = st.file_uploader("Choose a CSV file", type=["csv"]) | |
if uploaded_file is not None: | |
df = load_data(uploaded_file) | |
questions = df['question'].tolist() | |
answers = df['answer'].tolist() | |
vectorizer = TfidfVectorizer() | |
tfidf_matrix = vectorizer.fit_transform(questions) | |
# Ask question | |
user_question = st.text_input("Ask your question here:") | |
if st.button("Ask"): | |
if user_question: | |
response = answer_the_question(user_question, questions, answers, vectorizer, tfidf_matrix) | |
st.write("Answer:", response['answer']) | |
if __name__ == "__main__": | |
main() | |