Spaces:
Sleeping
Sleeping
File size: 1,387 Bytes
eef6783 bdbbcf1 |
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 |
from sentence_transformers.cross_encoder import CrossEncoder
import torch
class SimilarityModelHandler:
# HOLDING THE MODEL INSTANCE TO PREVENT RELOADING
SIMILARITY_MODEL_INSTANCE = None
def __init__(self):
# CONSTRUCTOR: LOADING THE MODEL IF IT DOESN'T EXIST
if not SimilarityModelHandler.SIMILARITY_MODEL_INSTANCE:
print("INITIALIZING AND LOADING THE MODEL...")
# CHECKING FOR GPU, FALLBACK TO CPU
device = 'cuda' if torch.cuda.is_available() else 'cpu'
print(f"SERVICE IS RUNNING ON DEVICE: {device}")
# LOADING THE PRE-TRAINED CROSS-ENCODER MODEL
model_Name = 'cross-encoder/stsb-roberta-base'
#cross-encoder/stsb-roberta-large'
SimilarityModelHandler.SIMILARITY_MODEL_INSTANCE = CrossEncoder(model_Name, device=device)
print("MODEL LOADED SUCCESSFULLY.")
def calculate_Similarity(self, text_One: str, text_Two: str) -> float:
"""
CALCULATES THE SIMILARITY SCORE BETWEEN TWO TEXTS.
"""
# GETTING THE SCORE FROM THE MODEL( 0-1 )
finalScore = self.SIMILARITY_MODEL_INSTANCE.predict([(text_One, text_Two)])
# CONVERTING FROM NUMPY ARRAY TO A SIMPLE FLOAT
return finalScore.item()
# CREATING A SINGLE INSTANCE TO BE USED BY THE API
MODEL_HANDLER = SimilarityModelHandler() |