Spaces:
Sleeping
Sleeping
import gradio as gr | |
import requests | |
import numpy as np | |
import os | |
# إعدادات الموديل | |
API_URL = "https://api-inference.huggingface.co/models/sentence-transformers/paraphrase-mpnet-base-v2" | |
HEADERS = {"Authorization": f"Bearer {os.getenv('HUGGINGFACE_API_TOKEN')}"} | |
def get_embedding(text): | |
response = requests.post(API_URL, headers=HEADERS, json={"inputs": text}) | |
if response.status_code == 200: | |
return np.array(response.json()[0]) | |
else: | |
return None | |
def cosine_similarity(vec1, vec2): | |
if vec1 is None or vec2 is None: | |
return "❌ Error fetching embeddings" | |
dot = np.dot(vec1, vec2) | |
norm_a = np.linalg.norm(vec1) | |
norm_b = np.linalg.norm(vec2) | |
if norm_a == 0 or norm_b == 0: | |
return 0.0 | |
return float(dot / (norm_a * norm_b)) | |
def compare_sentences(sentence1, sentence2): | |
embedding1 = get_embedding(sentence1) | |
embedding2 = get_embedding(sentence2) | |
similarity = cosine_similarity(embedding1, embedding2) | |
return { | |
"Sentence 1": sentence1, | |
"Sentence 2": sentence2, | |
"Cosine Similarity": round(similarity, 4) if isinstance(similarity, float) else similarity | |
} | |
# واجهة Gradio | |
iface = gr.Interface( | |
fn=compare_sentences, | |
inputs=[ | |
gr.Textbox(label="Sentence 1", placeholder="Enter the first sentence..."), | |
gr.Textbox(label="Sentence 2", placeholder="Enter the second sentence...") | |
], | |
outputs="json", | |
title="Sentence Similarity using HuggingFace API", | |
description="Compares two sentences using the `paraphrase-mpnet-base-v2` model and returns the cosine similarity." | |
) | |
iface.launch(share=True) | |