from flask import Flask, request, jsonify from transformers import pipeline app = Flask(__name__) # Initialize the sentiment analysis pipeline sentiment_classifier = pipeline("sentiment-analysis") def analyze_priority(text): # Get sentiment analysis sentiment_result = sentiment_classifier(text)[0] sentiment_score = sentiment_result['score'] sentiment_label = sentiment_result['label'] # Convert text to lowercase for keyword checking text = text.lower() # Define urgency indicators urgent_indicators = ['urgent', 'emergency', 'asap', 'immediately', 'critical'] high_indicators = ['important', 'priority', 'soon', 'significant'] # Check for urgent keywords has_urgent = any(word in text for word in urgent_indicators) has_high = any(word in text for word in high_indicators) # Determine priority based on both sentiment and keywords if has_urgent or (sentiment_label == 'NEGATIVE' and sentiment_score > 0.8): return "urgent" elif has_high or (sentiment_label == 'NEGATIVE' and sentiment_score > 0.6): return "high" elif sentiment_label == 'NEGATIVE': return "normal" else: return "low" @app.route('/analyze-priority', methods=['GET']) def get_priority(): text = request.args.get('text', '') if not text: return jsonify({ 'error': 'No text provided', 'status': 400 }), 400 try: priority = analyze_priority(text) sentiment_result = sentiment_classifier(text)[0] return jsonify({ 'text': text, 'priority': priority, 'status': 200, 'details': { 'sentiment': sentiment_result } }) except Exception as e: return jsonify({ 'error': f'Analysis failed: {str(e)}', 'status': 500 }), 500 if __name__ == '__main__': app.run(debug=False, host="0.0.0.0", port=7860) # Required for Hugging Face