dheeraj / app.py
gouravkumar23's picture
Update app.py
f144ea8 verified
Raw
History Blame Contribute Delete
3.08 kB
import gradio as gr
from transformers import T5Tokenizer, T5ForConditionalGeneration
from transformers import GPT2Tokenizer, GPT2LMHeadModel
from sentence_transformers import SentenceTransformer
import joblib
import pandas as pd
from huggingface_hub import hf_hub_download
import joblib
# ----------------------------
# LOAD MODELS
# ----------------------------
schema_model_id = "gouravkumar23/schema-recommendation-model"
evolution_model_id = "gouravkumar23/schema-evolution-predictor"
doc_model_id = "gouravkumar23/schema-documentation-generator"
schema_tokenizer = T5Tokenizer.from_pretrained(schema_model_id)
schema_model = T5ForConditionalGeneration.from_pretrained(schema_model_id)
evo_tokenizer = GPT2Tokenizer.from_pretrained(evolution_model_id)
evo_model = GPT2LMHeadModel.from_pretrained(evolution_model_id)
doc_tokenizer = T5Tokenizer.from_pretrained(doc_model_id)
doc_model = T5ForConditionalGeneration.from_pretrained(doc_model_id)
semantic_model = SentenceTransformer("sentence-transformers/all-MiniLM-L6-v2")
model_path = hf_hub_download(
repo_id="gouravkumar23/column-type-inference",
filename="model.pkl"
)
type_model = joblib.load(model_path)
# ----------------------------
# FUNCTIONS
# ----------------------------
def recommend_schema(schema):
prompt = "schema history: " + schema
inputs = schema_tokenizer(prompt, return_tensors="pt")
outputs = schema_model.generate(**inputs, max_length=40)
return schema_tokenizer.decode(outputs[0], skip_special_tokens=True)
def predict_schema(schema):
prompt = schema + " ->"
inputs = evo_tokenizer(prompt, return_tensors="pt")
outputs = evo_model.generate(**inputs, max_length=40)
return evo_tokenizer.decode(outputs[0], skip_special_tokens=True)
def generate_doc(column):
prompt = "describe column: " + column
inputs = doc_tokenizer(prompt, return_tensors="pt")
outputs = doc_model.generate(**inputs, max_length=40)
return doc_tokenizer.decode(outputs[0], skip_special_tokens=True)
def infer_type(value):
value = str(value)
features = {
"length": len(value),
"is_digit": value.isdigit(),
"has_dash": "-" in value,
"has_decimal": "." in value,
"is_alpha": value.isalpha()
}
df = pd.DataFrame([features])
return type_model.predict(df)[0]
# ----------------------------
# GRADIO INTERFACE
# ----------------------------
schema_ui = gr.Interface(
fn=recommend_schema,
inputs="text",
outputs="text",
title="Schema Recommendation Engine"
)
evolution_ui = gr.Interface(
fn=predict_schema,
inputs="text",
outputs="text",
title="Schema Evolution Predictor"
)
doc_ui = gr.Interface(
fn=generate_doc,
inputs="text",
outputs="text",
title="Column Documentation Generator"
)
type_ui = gr.Interface(
fn=infer_type,
inputs="text",
outputs="text",
title="Column Type Inference"
)
app = gr.TabbedInterface(
[schema_ui, evolution_ui, doc_ui, type_ui],
["Recommend", "Predict", "Docs", "Type"]
)
app.launch()