Spaces:
Sleeping
Sleeping
import google.generativeai as genai | |
import gradio as gr | |
from deep_translator import (GoogleTranslator) | |
from transformers import pipeline | |
from langdetect import detect | |
api_key = "AIzaSyCmmus8HFPLXskU170_FR4j2CQeWZBKGMY" | |
spam_detector = pipeline("text-classification", model="madhurjindal/autonlp-Gibberish-Detector-492513457") | |
model = genai.GenerativeModel('gemini-pro') | |
genai.configure(api_key = api_key) | |
def sentiment(feedback): | |
try: | |
#response = model.generate_content(f"State whether given response is positive, negative or neutral in one word: {feedback}") | |
score = model.generate_content(f"Give me the polarity score between -1 to 1 for: {feedback}") | |
return score.text | |
except Exception as e: | |
return "-1" | |
def translate(input_text): | |
source_lang = detect(input_text) | |
translated = GoogleTranslator(source=source_lang, target='en').translate(text=input_text) | |
return translated | |
def spam_detection(input_text): | |
return spam_detector(input_text)[0]['label'] == 'clean' | |
def negative_zero_shot(input_text): | |
try: | |
return model.generate_content(f'Issues should be from ["Misconduct" , "Negligence" , "Discrimination" , "Corruption" , "Violation of Rights" , "Inefficiency" , "Unprofessional Conduct", "Response Time" , "Use of Firearms" , "Property Damage"] only. Give me the issue faced by the feedback giver in less than four words: {input_text}').text | |
except Exception as e: | |
return "Offensive" | |
def positive_zero_shot(input_text): | |
try: | |
return model.generate_content(f'Issues should be from ["Miscellaneous", "Tech-Savvy Staff" , "Co-operative Staff" , "Well-Maintained Premises" , "Responsive Staff"] only. Give me the issue faced by the feedback giver in less than four words: {input_text}').text | |
except Exception as e: | |
return "Offensive" | |
def pipeline(input_text): | |
input_text = translate(input_text) | |
if spam_detection(input_text): | |
sent = float(sentiment(input_text)) | |
if sent > 0: | |
return str(sent), positive_zero_shot(input_text) | |
elif sent < 0: | |
return str(sent), negative_zero_shot(input_text) | |
else: | |
return "0", "No issue" | |
else: | |
return "42", "Spam" | |
iface = gr.Interface( | |
fn = pipeline, | |
inputs = ["text"], | |
outputs = ["text", "text"] | |
) | |
iface.launch(share=True) |