Spaces:
Sleeping
Sleeping
File size: 3,816 Bytes
ce55ba8 6993212 5838c29 6993212 5838c29 f9a5f05 5838c29 b68a3c9 5838c29 b68a3c9 5838c29 b68a3c9 5838c29 |
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 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
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()
|