File size: 1,610 Bytes
a616221
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import pandas as pd
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}")
        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)
        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