File size: 2,442 Bytes
823da93
 
2169a6e
 
c902d7a
2169a6e
823da93
 
 
2169a6e
 
823da93
 
 
c902d7a
823da93
 
 
c902d7a
823da93
c902d7a
823da93
2169a6e
 
 
 
 
 
 
 
c902d7a
 
 
 
 
 
 
 
 
 
 
2169a6e
 
 
 
 
c902d7a
 
 
 
 
 
 
 
 
 
2169a6e
c902d7a
 
 
2169a6e
c902d7a
2169a6e
823da93
2169a6e
823da93
 
 
2169a6e
823da93
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
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)