test2 / app.py
IS361Group4's picture
Update app.py
5838c29 verified
raw
history blame
3.82 kB
import gradio as gr
import joblib
import re
import pandas as pd
from transformers import pipeline, AutoTokenizer, AutoModelForSequenceClassification
from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate
from langchain_openai import ChatOpenAI
from langchain_core.output_parsers import StrOutputParser
# 1. Translator
translator = pipeline("translation", model="Helsinki-NLP/opus-mt-en-fr")
def translate_text(text):
return translator(text)[0]['translation_text']
# 2. Sentiment Analysis
sentiment = pipeline("sentiment-analysis")
def analyze_sentiment(text):
return sentiment(text)[0]
# 3. Financial Analyst (LangChain with OpenAI, requires API key)
def financial_analysis(text, api_key):
chat = ChatOpenAI(api_key=api_key)
template = "Analyze the financial context of this text:\n\n{text}"
prompt = PromptTemplate.from_template(template)
chain = LLMChain(llm=chat, prompt=prompt, output_parser=StrOutputParser())
return chain.run({"text": text})
# 4. Personal Info Detection
def detect_pii(text):
pii_patterns = {
"email": r"[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+",
"phone": r"\+?\d[\d\-\s]{8,}\d",
"credit_card": r"\b(?:\d[ -]*?){13,16}\b"
}
found = {}
for label, pattern in pii_patterns.items():
matches = re.findall(pattern, text)
if matches:
found[label] = matches
return found or "No personal information found."
# 5. Telco Customer Churn Prediction
model = joblib.load("model.joblib")
def churn_prediction(gender, SeniorCitizen, Partner, tenure, MonthlyCharges):
input_df = pd.DataFrame([[gender, SeniorCitizen, Partner, tenure, MonthlyCharges]],
columns=["gender", "SeniorCitizen", "Partner", "tenure", "MonthlyCharges"])
prediction = model.predict(input_df)[0]
return "Churn" if prediction == 1 else "Not Churn"
# Gradio UI setup
with gr.Blocks() as demo:
with gr.Tab("Translator"):
input_text = gr.Textbox(label="Input Text")
output_text = gr.Textbox(label="Translated Text")
translate_button = gr.Button("Translate")
translate_button.click(fn=translate_text, inputs=input_text, outputs=output_text)
with gr.Tab("Sentiment Analysis"):
sentiment_input = gr.Textbox(label="Text")
sentiment_output = gr.Textbox(label="Sentiment")
sentiment_button = gr.Button("Analyze")
sentiment_button.click(fn=analyze_sentiment, inputs=sentiment_input, outputs=sentiment_output)
with gr.Tab("Financial Analyst"):
finance_input = gr.Textbox(label="Financial Text")
api_key_input = gr.Textbox(label="OpenAI API Key", type="password")
finance_output = gr.Textbox(label="Analysis")
finance_button = gr.Button("Analyze")
finance_button.click(fn=financial_analysis, inputs=[finance_input, api_key_input], outputs=finance_output)
with gr.Tab("PII Detector"):
pii_input = gr.Textbox(label="Text")
pii_output = gr.JSON(label="Detected PII")
pii_button = gr.Button("Detect")
pii_button.click(fn=detect_pii, inputs=pii_input, outputs=pii_output)
with gr.Tab("Telco Churn Predictor"):
gender = gr.Dropdown(choices=["Male", "Female"], label="Gender")
senior = gr.Dropdown(choices=[0, 1], label="Senior Citizen")
partner = gr.Dropdown(choices=["Yes", "No"], label="Partner")
tenure = gr.Number(label="Tenure (months)")
charges = gr.Number(label="Monthly Charges")
churn_output = gr.Textbox(label="Prediction")
churn_button = gr.Button("Predict")
churn_button.click(fn=churn_prediction,
inputs=[gender, senior, partner, tenure, charges],
outputs=churn_output)
demo.launch()