enstazao
used the wtq dataset fine tuned model
60adfff
raw
history blame contribute delete
No virus
1.56 kB
import gradio as gr
import pandas as pd
from io import BytesIO
from transformers import AutoTokenizer, AutoModelForTableQuestionAnswering, TableQuestionAnsweringPipeline
# Load the tokenizer and model with "google/tapas-large-finetuned-wtq"
tokenizer = AutoTokenizer.from_pretrained("google/tapas-large-finetuned-wtq")
model = AutoModelForTableQuestionAnswering.from_pretrained("google/tapas-large-finetuned-wtq")
# Initialize the TableQuestionAnsweringPipeline manually
pipe = TableQuestionAnsweringPipeline(model=model, tokenizer=tokenizer)
def answer_question(uploaded_file, question):
# Convert the binary stream to a file-like object
file_like = BytesIO(uploaded_file)
# Read the uploaded file directly into a DataFrame
df = pd.read_csv(file_like)
# Convert all DataFrame elements to string, as TAPAS expects string inputs
df = df.astype(str)
# Use the pipeline to answer the question based on the table
result = pipe({"table": df, "query": question})
# Format the answer before returning it
answer = result['answer']
return answer
logo_url = "https://i.ibb.co/Brr7bPP/xflow.png"
# Define the Gradio app interface
iface = gr.Interface(
fn=answer_question,
inputs=[gr.File(label="Upload CSV File", type="binary"), gr.Textbox(lines=2, placeholder="Ask a question...")],
outputs=gr.Text(),
title="Table-based Question Answering",
description=f"![Logo]({logo_url})\n\nUpload a CSV file and ask a question related to the data in the file."
)
# Run the app
iface.launch()