Spaces:
Sleeping
Sleeping
import requests | |
import os | |
from dotenv import load_dotenv | |
import time | |
load_dotenv() | |
API_KEY=os.getenv("API_KEY") | |
def get_sentiment(text): | |
API_URL = "https://api-inference.huggingface.co/models/distilbert-base-uncased-finetuned-sst-2-english" | |
HEADERS = {"Authorization": f"Bearer {API_KEY}"} | |
data = {"inputs": text} | |
response = requests.post(API_URL, headers=HEADERS, json=data) | |
try: | |
result = response.json() | |
if isinstance(result, list) and len(result) > 0 and isinstance(result[0], list): | |
best_label = max(result[0], key=lambda x: x["score"]) # Extract highest score | |
return best_label["label"] | |
else: | |
return "Error: Unexpected response format" | |
except requests.exceptions.JSONDecodeError: | |
return "Error: Empty or invalid JSON response" | |
def summarize_text(text, max_length=150, min_length=50): | |
API_URL = "https://api-inference.huggingface.co/models/facebook/bart-large-cnn" | |
HEADERS = {"Authorization": f"Bearer {API_KEY}"} | |
data = { | |
"inputs": text, | |
"parameters": {"max_length": max_length, "min_length": min_length, "do_sample": False} | |
} | |
response = requests.post(API_URL, headers=HEADERS, json=data) | |
try: | |
result = response.json() | |
if isinstance(result, list) and "summary_text" in result[0]: | |
return result[0]["summary_text"] # Extract summary text | |
else: | |
return "Error: Unexpected response format" | |
except requests.exceptions.JSONDecodeError: | |
return "Error: Empty or invalid JSON response" | |
def extract_keywords(text, top_n=5): | |
API_URL = "https://api-inference.huggingface.co/models/ml6team/keyphrase-extraction-kbir-inspec" | |
HEADERS = {"Authorization": f"Bearer {API_KEY}"} | |
data = {"inputs": text} | |
response = requests.post(API_URL, headers=HEADERS, json=data) | |
try: | |
result = response.json() | |
if isinstance(result, list) and len(result) > 0: | |
keywords = [item["word"] for item in result[:top_n]] | |
return keywords | |
else: | |
return "Error: Unexpected response format" | |
except requests.exceptions.JSONDecodeError: | |
return "Error: Empty or invalid JSON response" | |
def text_to_speech(text): | |
API_URL = 'https://api-inference.huggingface.co/models/facebook/mms-tts-hin' | |
headers = {'Authorization': f'Bearer {API_KEY}'} | |
payload = {'inputs': text} | |
response = requests.post(API_URL, headers=headers, json=payload) | |
if response.status_code == 200: | |
with open('output.wav', 'wb') as f: | |
f.write(response.content) | |
print('Audio content written to output.wav') | |
else: | |
print(f'Error: {response.status_code}, {response.text}') | |
HEADERS = {"Authorization": f"Bearer {API_KEY}"} | |
MODELS = { | |
"comparison": "https://api-inference.huggingface.co/models/sentence-transformers/all-MiniLM-L6-v2", | |
"sentiment": "https://api-inference.huggingface.co/models/distilbert-base-uncased-finetuned-sst-2-english" | |
} | |
def request_huggingface(api_url, payload, retries=3, delay=2): | |
for attempt in range(retries): | |
try: | |
response = requests.post(api_url, headers=HEADERS, json=payload) | |
if response.status_code == 200: | |
return response.json() | |
elif response.status_code in [429, 503]: # Rate limited or service unavailable | |
print(f"Rate limited. Retrying in {delay} seconds...") | |
time.sleep(delay) | |
else: | |
print(f"Error {response.status_code}: {response.text}") | |
return None | |
except requests.exceptions.RequestException as e: | |
print(f"Request failed: {e}") | |
print("Failed to get a valid response after retries.") | |
return None | |
def comparison_impact(text1, text2): | |
# Comparison Analysis | |
comparison_payload = {"inputs": {"source_sentence": text1, "sentences": [text2]}} | |
comparison_result = request_huggingface(MODELS["comparison"], comparison_payload) | |
# Sentiment Analysis for Impact | |
sentiment1 = request_huggingface(MODELS["sentiment"], {"inputs": text1}) | |
sentiment2 = request_huggingface(MODELS["sentiment"], {"inputs": text2}) | |
if sentiment1 and sentiment2: | |
sentiment1_label = max(sentiment1[0], key=lambda x: x["score"])["label"] | |
sentiment2_label = max(sentiment2[0], key=lambda x: x["score"])["label"] | |
impact_analysis = f"Sentiment Shift: '{sentiment1_label}' → '{sentiment2_label}'" | |
else: | |
impact_analysis = "Error in sentiment analysis." | |
return { | |
"Comparison Result": comparison_result, | |
"Impact Analysis": impact_analysis | |
} | |