模型:

microsoft/tapex-large-sql-execution

英文

TAPEX(大型模型)

TAPEX是由Qian Liu、Bei Chen、Jiaqi Guo、Morteza Ziyadi、Zeqi Lin、Weizhu Chen、Jian-Guang Lou于 TAPEX: Table Pre-training via Learning a Neural SQL Executor 年提出的。可以在 here 找到原始repo。

模型描述

TAPEX(Table Pre-training via Execution)是一种概念简单且经验上强大的预训练方法,可以赋予现有模型表格推理技能。TAPEX通过学习一个神经SQL执行器来实现表格预训练,该预训练是通过自动生成可执行的SQL查询来获得的。

TAPEX基于BART架构,即具有双向编码器(类似BERT)和自回归解码器(类似GPT)的transformer encoder-decoder(seq2seq)模型。

预期用途

您可以使用原始模型模拟神经SQL执行,即使用TAPEX在给定的表格上执行SQL查询。然而,该模型主要用于在受监督数据集上进行微调。目前,TAPEX可以进行微调,用于处理表格问答任务和表格事实验证任务。请参阅 model hub 以查找您感兴趣的任务的微调版本。

使用方法

以下是在transformers中使用此模型的方法:

from transformers import TapexTokenizer, BartForConditionalGeneration
import pandas as pd

tokenizer = TapexTokenizer.from_pretrained("microsoft/tapex-large-sql-execution")
model = BartForConditionalGeneration.from_pretrained("microsoft/tapex-large-sql-execution")

data = {
    "year": [1896, 1900, 1904, 2004, 2008, 2012],
    "city": ["athens", "paris", "st. louis", "athens", "beijing", "london"]
}
table = pd.DataFrame.from_dict(data)

# tapex accepts uncased input since it is pre-trained on the uncased corpus
query = "select year where city = beijing"
encoding = tokenizer(table=table, query=query, return_tensors="pt")

outputs = model.generate(**encoding)

print(tokenizer.batch_decode(outputs, skip_special_tokens=True))
# ['2008']

如何进行微调

⚠️此模型检查点仅用于模拟神经SQL执行(即使用TAPEX在给定的表格上执行SQL查询),不能将此模型用于下游任务的微调。可用于微调的模型在 here 处。

之所以将两种意图分开使用两个模型是因为BART large存在已知问题,建议读者参阅 this comment 以了解更多详情。

BibTeX条目和引文信息

@inproceedings{
    liu2022tapex,
    title={{TAPEX}: Table Pre-training via Learning a Neural {SQL} Executor},
    author={Qian Liu and Bei Chen and Jiaqi Guo and Morteza Ziyadi and Zeqi Lin and Weizhu Chen and Jian-Guang Lou},
    booktitle={International Conference on Learning Representations},
    year={2022},
    url={https://openreview.net/forum?id=O50443AsCP}
}