File size: 1,087 Bytes
1c817fd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
from flask import jsonify
from main import *
import torch

def analyze_sentiment(text, output_path="output_sentiment.json"):
    if sentiment_model is None:
        return "Sentiment model not initialized."

    input_tokens = sentiment_model.tokenizer(text, return_tensors="pt", padding=True).to(device)
    with torch.no_grad():
        sentiment_logits = sentiment_model(input_tokens['input_ids'])
    predicted_class_id = torch.argmax(sentiment_logits, dim=-1).item()
    sentiment_label = sentiment_model.config.id2label[predicted_class_id]
    probability = torch.softmax(sentiment_logits, dim=-1)[0][predicted_class_id].item()

    return {"sentiment": sentiment_label, "probability": probability}

def sentiment_api():
    data = request.get_json()
    text = data.get('text')
    if not text:
        return jsonify({"error": "Text is required"}), 400
    output_file = analyze_sentiment(text)
    if output_file == "Sentiment model not initialized.":
        return jsonify({"error": "Sentiment analysis failed"}), 500
    return jsonify(output_file)