Datathon / app.py
scifuentes's picture
Update app.py
d328400
import gradio as gr
import shap
from transformers import pipeline
from transformers import DistilBertTokenizer, DistilBertForSequenceClassification
import streamlit as st
import sys
import os
import pandas as pd
import json
from confluent_kafka import Consumer
from ast import literal_eval
consumer = Consumer(
{'bootstrap.servers': 'pkc-41973.westus2.azure.confluent.cloud:9092',
"group.id": "group_data_h",
'security.protocol':'SASL_SSL',
'sasl.mechanisms':'PLAIN',
'sasl.username':'AIZHFU6TZHAQC5E3',
'sasl.password':os.environ.get("confluent_ingreso"),
'auto.offset.reset': 'earliest',
'enable.auto.commit': True })
consumer.subscribe(['factored_datathon_amazon_review_1'])
i=0
received=[]
df = {}
model_name = "sohan-ai/sentiment-analysis-model-amazon-reviews"
tokenizer = DistilBertTokenizer.from_pretrained("distilbert-base-uncased")
model = DistilBertForSequenceClassification.from_pretrained(model_name)
input_text="Awaiting Reviews"
def interpretation_function(text):
inputs = tokenizer(text, return_tensors="pt")
outputs = model(**inputs)
predicted_label = "positive" if outputs.logits.argmax().item() == 1 else "negative"
return {"Review": text, "interpretation": predicted_label}
with gr.Blocks() as demo:
with gr.Row():
with gr.Column():
input_text = gr.Textbox(label="Sentiment Analysis", value=input_text)
with gr.Row():
interpret = gr.Button("Interpret Review")
with gr.Column():
interpretation = gr.components.Interpretation(input_text)
demo.load(interpretation_function, input_text, interpretation,every=60)
interpret.click(interpretation_function, input_text, interpretation)
demo.queue(api_open=False)
try:
while True:
msg = consumer.poll(1.0)
if msg is None:
continue
user = msg.value()
if user is not None:
nus=literal_eval(user.decode('utf8'))
dato=json.loads(json.dumps(nus, indent=4))
df[i] = dato
df_t=pd.DataFrame.from_dict(df, orient='index')
input_text = df_t.iloc[[i],[2]]
i += 1
except SystemExit:
print('closing the consumer')
consumer.close()
if __name__ == "__main__":
demo.launch()