|
import os |
|
import requests |
|
import streamlit as st |
|
import torch |
|
|
|
|
|
class SentenceSimiliarity(): |
|
|
|
def __init__(self, model_name, sentence1, sentence2): |
|
self.KEY = os.getenv("HF_KEY") |
|
self.headers = {"Authorization": f"Bearer {self.KEY}"} |
|
self.sentence1 = sentence1 |
|
self.sentence2 = sentence2 |
|
self.api_url = f"https://api-inference.huggingface.co/models/{model_name}" |
|
|
|
|
|
|
|
|
|
def model_selection(self): |
|
available_models = [ |
|
|
|
|
|
"sentence-transformers/all-MiniLM-L6-v2", |
|
"sentence-transformers/all-mpnet-base-v2", |
|
"sentence-transformers/distiluse-base-multilingual-cased-v2", |
|
"intfloat/e5-small", |
|
"intfloat/e5-base", |
|
"intfloat/e5-large-v2", |
|
"intfloat/multilingual-e5-base", |
|
|
|
|
|
|
|
] |
|
self.model_name = st.sidebar.selectbox( |
|
label="Select Your Models", |
|
options=available_models, |
|
) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def query(self, payload): |
|
response = requests.post(self.api_url, headers=self.headers, json=payload) |
|
return response.json() |
|
|
|
def results(self): |
|
scores = self.query({ |
|
"inputs": { |
|
"source_sentence": self.sentence1, |
|
"sentences": [ |
|
self.sentence2, |
|
] |
|
}, |
|
}) |
|
|
|
statement = f"The sentence has {scores[0] * 100:.2f}% similarity" |
|
|
|
return statement |
|
|
|
|
|
class UI(): |
|
|
|
def __init__(self): |
|
st.title("Sentence Similiarity Checker") |
|
st.caption("You can use this for checking similarity between resume and job description") |
|
|
|
def get(self): |
|
available_models = [ |
|
|
|
|
|
"sentence-transformers/all-MiniLM-L6-v2", |
|
"sentence-transformers/all-mpnet-base-v2", |
|
"sentence-transformers/distiluse-base-multilingual-cased-v2", |
|
"intfloat/e5-small", |
|
"intfloat/e5-base", |
|
"intfloat/e5-large-v2", |
|
"intfloat/multilingual-e5-base", |
|
|
|
|
|
|
|
] |
|
self.model_name = st.sidebar.selectbox( |
|
label="Select Your Models", |
|
options=available_models, |
|
) |
|
|
|
self.sentence1 = st.text_area( |
|
label="Sentence 1", |
|
help="This is a parent text the next text will be compared with this text" |
|
) |
|
self.sentence2 = st.text_area( |
|
label="Sentence 2", |
|
help="This is a child text" |
|
) |
|
self.button = st.button( |
|
label="Check", |
|
help='Check Sentence Similarity' |
|
) |
|
|
|
def result(self): |
|
self.get() |
|
ss = SentenceSimiliarity(self.model_name, self.sentence1, self.sentence2) |
|
|
|
if self.button: |
|
st.text(ss.results()) |
|
|
|
|
|
ui = UI() |
|
ui.result() |
|
|