allyyy commited on
Commit
703fb27
·
verified ·
1 Parent(s): 961f78f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +33 -5
app.py CHANGED
@@ -40,18 +40,46 @@ def load_and_preprocess_text(filename):
40
 
41
  segments = load_and_preprocess_text(filename)
42
 
43
- def find_relevant_segment(user_query, segments):
 
 
 
 
 
 
 
 
 
44
  try:
45
- lower_query = user_query.lower()
46
- query_embedding = retrieval_model.encode(lower_query)
47
  segment_embeddings = retrieval_model.encode(segments)
48
  similarities = util.pytorch_cos_sim(query_embedding, segment_embeddings)[0]
49
  best_idx = similarities.argmax()
50
- return segments[best_idx]
 
 
 
51
  except Exception as e:
52
- print(f"Error in finding relevant segment: {e}")
53
  return ""
54
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
55
  def generate_response_with_context(user_query, relevant_segment):
56
  """
57
  Generate a response based on a user query and a relevant segment.
 
40
 
41
  segments = load_and_preprocess_text(filename)
42
 
43
+ def find_relevant_segment(user_query, segments, similarity_threshold=0.5):
44
+ """
45
+ Find the most relevant text segment based on a user query.
46
+ Parameters:
47
+ - user_query (str): The user's query.
48
+ - segments (list[str]): List of text segments to search within.
49
+ - similarity_threshold (float): Minimum similarity required to consider a segment relevant.
50
+ Returns:
51
+ - str: The most relevant text segment.
52
+ """
53
  try:
54
+ query_embedding = retrieval_model.encode(user_query)
 
55
  segment_embeddings = retrieval_model.encode(segments)
56
  similarities = util.pytorch_cos_sim(query_embedding, segment_embeddings)[0]
57
  best_idx = similarities.argmax()
58
+ if similarities[best_idx].item() >= similarity_threshold:
59
+ return segments[best_idx]
60
+ else:
61
+ return "Sorry, I couldn't find a specific match. Here are some general tips to help you:"
62
  except Exception as e:
63
+ print(f"Error finding relevant segment: {e}")
64
  return ""
65
 
66
+ def clean_up_response(response, segment):
67
+ """
68
+ Clean up the generated response to ensure it is tidy and presentable.
69
+ Parameters:
70
+ - response (str): The initial response generated by the model.
71
+ - segment (str): The segment used to generate the response.
72
+ Returns:
73
+ - str: A cleaned and formatted response.
74
+ """
75
+ sentences = response.split('.')
76
+ cleaned_sentences = [sentence.strip() for sentence in sentences if sentence.strip() and sentence.strip().lower() not in segment.lower()]
77
+ cleaned_response = '. '.join(cleaned_sentences).strip()
78
+ if cleaned_response and not cleaned_response.endswith((".", "!", "?")):
79
+ cleaned_response += "."
80
+ return cleaned_response
81
+
82
+
83
  def generate_response_with_context(user_query, relevant_segment):
84
  """
85
  Generate a response based on a user query and a relevant segment.