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()