🚀 TableLLM: 実際のオフィス利用シナリオにおける大規模言語モデルによる表データ操作の実現
TableLLMは、表形式のデータ操作タスクを効率的に処理するために設計された強力な大規模言語モデルです。スプレッドシートや文書に埋め込まれた表データに対応し、実際のオフィスシナリオのニーズを満たします。TableLLMシリーズには、TableLLM - 7B と TableLLM - 13B の2つの異なる規模が含まれており、それぞれ CodeLlama - 7b - Instruct - hf と CodeLlama - 13b - Instruct - hf をベースに微調整されています。
| 論文 | 学習セット | Github | ホームページ |
🚀 クイックスタート
TableLLMは、異なるシナリオに基づいて、表データ操作タスクを処理するためのコードソリューションまたは直接のテキスト回答を生成します。コード生成は、スプレッドシートに埋め込まれた表データの処理に使用され、通常は表の挿入、削除、更新、クエリ、マージ、およびプロット操作が含まれます。テキスト生成は、文書に埋め込まれた表データの処理に使用され、通常は短い表のクエリ操作が含まれます。
✨ 主な機能
- 表データの操作タスクを効率的に処理する能力を持つ。
- スプレッドシートと文書に埋め込まれた表データに対応する。
- 異なるシナリオに応じてコードソリューションまたはテキスト回答を生成する。
📚 ドキュメント
評価結果
TableLLMのコードソリューション生成能力を、3つのベンチマーク(WikiSQL、Spider、自作の表操作ベンチマーク)で評価しました。テキスト回答生成能力は、4つのベンチマーク(WikiTableQuestion (WikiTQ)、TAT - QA、FeTaQA、OTTQA)でテストしました。評価結果は以下の通りです。
モデル |
WikiTQ |
TAT - QA |
FeTaQA |
OTTQA |
WikiSQL |
Spider |
自作ベンチマーク |
平均 |
TaPEX |
38.5 |
– |
– |
– |
83.9 |
15.0 |
/ |
45.8 |
TaPas |
31.5 |
– |
– |
– |
74.2 |
23.1 |
/ |
42.92 |
TableLlama |
24.0 |
22.2 |
20.5 |
6.4 |
43.7 |
9.0 |
/ |
20.7 |
GPT3.5 |
58.5 |
72.1 |
71.2 |
60.8 |
81.7 |
67.4 |
77.1 |
69.8 |
GPT4 |
74.1 |
77.1 |
78.4 |
69.5 |
84.0 |
69.5 |
77.8 |
75.8 |
Llama2 - Chat (13B) |
48.8 |
49.6 |
67.7 |
61.5 |
– |
– |
– |
56.9 |
CodeLlama (13B) |
43.4 |
47.2 |
57.2 |
49.7 |
38.3 |
21.9 |
47.6 |
43.6 |
Deepseek - Coder (33B) |
6.5 |
11.0 |
7.1 |
7.4 |
72.5 |
58.4 |
73.9 |
33.8 |
StructGPT (GPT3.5) |
52.5 |
27.5 |
11.8 |
14.0 |
67.8 |
84.8 |
/ |
48.9 |
Binder (GPT3.5) |
61.6 |
12.8 |
6.8 |
5.1 |
78.6 |
52.6 |
/ |
42.5 |
DATER (GPT3.5) |
53.4 |
28.4 |
18.3 |
13.0 |
58.2 |
26.5 |
/ |
37.0 |
TableLLM - 7B (Ours) |
58.8 |
66.9 |
72.6 |
63.1 |
86.6 |
82.6 |
78.8 |
72.8 |
TableLLM - 13B (Ours) |
62.4 |
68.2 |
74.5 |
62.5 |
90.7 |
83.4 |
80.8 |
74.7 |
プロンプトテンプレート
コードソリューションとテキスト回答の生成に使用したプロンプトを以下に紹介します。
コードソリューション
単一の表に対する挿入、削除、更新、クエリ、およびプロット操作のプロンプトテンプレート。
[INST]以下はCSVファイルの最初の数行です。提供された質問を解決するPythonプログラムを作成する必要があります。
CSVファイルのヘッダーと最初の数行:
{csv_data}
質問: {question}[/INST]
2つの表に対するマージ操作のプロンプトテンプレート。
[INST]以下は2つのCSVファイルの最初の数行です。提供された質問を解決するPythonプログラムを作成する必要があります。
CSVファイル1のヘッダーと最初の数行:
{csv_data1}
CSVファイル2のヘッダーと最初の数行:
{csv_data2}
質問: {question}[/INST]
csv_dataフィールドには、提供された表ファイルの最初の数行が入力されます。以下は例です。
Sex,Length,Diameter,Height,Whole weight,Shucked weight,Viscera weight,Shell weight,Rings
M,0.455,0.365,0.095,0.514,0.2245,0.101,0.15,15
M,0.35,0.265,0.09,0.2255,0.0995,0.0485,0.07,7
F,0.53,0.42,0.135,0.677,0.2565,0.1415,0.21,9
M,0.44,0.365,0.125,0.516,0.2155,0.114,0.155,10
I,0.33,0.255,0.08,0.205,0.0895,0.0395,0.055,7
テキスト回答
短い表に対する直接のテキスト回答生成のプロンプトテンプレート。
[INST] [Question]で概説された質問に直接対応する、徹底的で正確な解決策を提供してください。
### [表の説明]
{table_descriptions}
### [表]
{table_in_csv}
### [質問]
{question}
### [解決策][INST/]
TableLLMの使用方法の詳細については、GitHubページを参照してください。https://github.com/TableLLM/TableLLM
📄 ライセンス
本プロジェクトはLlama2ライセンスの下で提供されています。
データセット
- RUCKBReasoning/TableLLM - SFT