模型:
microsoft/tapex-large-sql-execution
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 以了解更多详情。
@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} }