Danielchris145/TruthCheck-AI
0
1# utils/similarity.py2from sentence_transformers import SentenceTransformer3import numpy as np4from sklearn.metrics.pairwise import cosine_similarity5 6class SimilarityCalculator:7 def __init__(self): # Corrected __init__8 """Initialize sentence transformer model"""9 try:10 self.model = SentenceTransformer('all-MiniLM-L6-v2')11 except Exception as e:12 print(f"Error loading similarity model: {e}")13 self.model = None14 15 def calculate_similarity(self, text1, text2):16 """Calculate semantic similarity between two texts"""17 if not self.model:18 print("Similarity model not loaded. Returning fallback similarity.")19 return 0.5 # Fallback similarity20 21 try:22 # Encode texts to embeddings23 embeddings = self.model.encode([text1, text2])24 25 # Calculate cosine similarity26 similarity = cosine_similarity(27 embeddings[0].reshape(1, -1),28 embeddings[1].reshape(1, -1)29 )[0][0]30 31 return float(similarity)32 33 except Exception as e:34 print(f"Similarity calculation error: {e}")35 return 0.536 37# Global similarity calculator instance38_similarity_calculator = SimilarityCalculator()39 40def calculate_similarity(text1, text2):41 """Global function to calculate similarity"""42 return _similarity_calculator.calculate_similarity(text1, text2)43 44 