Spaces:
Sleeping
Sleeping
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() | |