Spaces:
Running
Running
File size: 3,066 Bytes
c815fb1 54c2f4d c815fb1 54c2f4d c815fb1 54c2f4d c815fb1 54c2f4d 7eeb23e 54c2f4d 7eeb23e 54c2f4d 7eeb23e 54c2f4d c815fb1 54c2f4d c815fb1 |
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 |
import gradio as gr
import pandas as pd
from transformers import (
AutoModelForSeq2SeqLM,
AutoModelForTableQuestionAnswering,
AutoTokenizer,
pipeline,
)
model_tapex = "microsoft/tapex-large-finetuned-wtq"
tokenizer_tapex = AutoTokenizer.from_pretrained(model_tapex)
model_tapex = AutoModelForSeq2SeqLM.from_pretrained(model_tapex)
pipe_tapex = pipeline(
"table-question-answering", model=model_tapex, tokenizer=tokenizer_tapex
)
model_tapas = "google/tapas-large-finetuned-wtq"
tokenizer_tapas = AutoTokenizer.from_pretrained(model_tapas)
model_tapas = AutoModelForTableQuestionAnswering.from_pretrained(model_tapas)
pipe_tapas = pipeline(
"table-question-answering", model=model_tapas, tokenizer=tokenizer_tapas
)
def process(query, file, rows=20):
table = pd.read_csv(file.name, header=0).astype(str)
table = table[:rows]
result_tapex = pipe_tapex(table=table, query=query)
result_tapas = pipe_tapas(table=table, query=query)
return result_tapex["answer"], result_tapas["answer"]
# Inputs
query_text = gr.Text(label="Enter a question")
input_file = gr.File(label="Upload a CSV file", type="filepath")
rows_slider = gr.Slider(label="Number of rows")
# Output
answer_text_tapex = gr.Text(label="TAPEX answer")
answer_text_tapas = gr.Text(label="TAPAS answer")
description = (
"This Space lets you ask questions on CSV documents with Microsoft "
"[TAPEX-Large](https://huggingface.co./microsoft/tapex-large-finetuned-wtq) "
"and Google "
"[TAPAS-Large](https://huggingface.co./google/tapas-large-finetuned-wtq). "
"Both have been fine-tuned on the "
"[WikiTableQuestions](https://huggingface.co./datasets/wikitablequestions) "
"dataset. \n\n"
"A sample file with football statistics is available in the "
"repository: \n\n"
"* Which team has the most wins? Answer: Manchester City FC\n"
"* Which team has the most wins: Chelsea, Liverpool or Everton? Answer: "
"Liverpool\n"
"* Which teams have scored less than 40 goals? Answer: Cardiff City FC, "
"Fulham FC, Brighton & Hove Albion FC, Huddersfield Town FC\n"
"* What is the average number of wins? Answer: 16 (rounded)\n\n"
"You can also upload your own CSV file. Please note that maximum sequence "
"length for both models is 1024 tokens, so you may need to limit the "
"number of rows in your CSV file. Chunking is not implemented yet."
)
iface = gr.Interface(
description=description,
fn=process,
inputs=[query_text, input_file, rows_slider],
outputs=[answer_text_tapex, answer_text_tapas],
examples=[
["Which team has the most wins?", "default_file.csv", 20],
[
"Which team has the most wins: Chelsea, Liverpool or Everton?",
"default_file.csv",
20,
],
[
"Which teams have scored less than 40 goals?",
"default_file.csv",
20
],
["What is the average number of wins?", "default_file.csv", 20],
],
allow_flagging="never",
)
iface.launch()
|