Spaces:
Build error
Build error
import pandas as pd | |
import streamlit as st | |
from sentence_transformers import SentenceTransformer | |
import faiss | |
def load_objections(file_path): | |
"""Load objections from a CSV file into a dictionary.""" | |
try: | |
objections_df = pd.read_csv(file_path) | |
objections_dict = {} | |
for index, row in objections_df.iterrows(): | |
objections_dict[row['Customer Objection']] = row['Salesperson Response'] | |
return objections_dict | |
except Exception as e: | |
print(f"Error loading objections: {e}") | |
st.write(f"Error loading objections: {e}") | |
return {} | |
def check_objections(text, objections_dict): | |
"""Check for objections in the given text and return responses.""" | |
responses = [] | |
for objection, response in objections_dict.items(): | |
if objection.lower() in text.lower(): | |
responses.append(response) | |
return responses | |
class ObjectionHandler: | |
def __init__(self, objection_data_path): | |
self.data = pd.read_csv(objection_data_path,encoding='latin1') | |
self.model = SentenceTransformer('all-MiniLM-L6-v2') | |
self.embeddings = self.model.encode(self.data['Customer Objection'].tolist()) | |
self.index = faiss.IndexFlatL2(self.embeddings.shape[1]) | |
self.index.add(self.embeddings) | |
def handle_objection(self, query, top_n=1): | |
"""Handle objections using embeddings.""" | |
query_embedding = self.model.encode([query]) | |
distances, indices = self.index.search(query_embedding, top_n) | |
responses = [] | |
for i in indices[0]: | |
responses.append(self.data.iloc[i]['Salesperson Response']) | |
return responses |