Chat2VIS:通过使用ChatGPT, Codex和GPT-3大型语言模型的自然语言生成数据可视化
梅西大学数学与计算科学学院,新西兰奥克兰
IEEE Access
1 Abstract
数据可视化领域一直致力于设计直接从自然语言文本生成可视化的解决方案。自然语言接口 (NLI) 的研究为这些技术的发展做出了贡献。然而,由于自然语言固有的模糊性,以及不明确和编写不良的用户查询,使得现有语言模型在识别用户意图方面存在问题,因此实现可行的 NLI 一直具有挑战性。
本研究并没有遵循开发语言模型新迭代的常规路径,而是独特地提出利用预训练大型语言模型(LLM)的进步,如 ChatGPT 和 GPT-3,将自由形式的自然语言直接转换为代码,以实现适当的可视化。本文提出了一个新的系统,Chat2VIS,它利用了 LLM 的能力,并展示了如何通过有效的快速工程,更有效地解决复杂的语言理解问题,从而产生比以前的方法更简单、更准确的端到端解决方案。Chat2VIS表明,LLM 和提示 (Prompt) 结合提供了一种可靠的方法来呈现自然语言查询的可视化,即使查询是高度错误指定和指定不足的。本研究还介绍了LLM提示如何以一种保留数据安全和隐私的方式构建,同时可推广到不同的数据集。本工作通过几个案例研究比较了GPT-3、Codex和ChatGPT的性能,并将性能与先前的研究进行了对比。
2 Introduction
基于自然语言(NL)文本生成可视化的能力一直是数据可视化领域的理想目标。对用于可视化的自然语言接口 (NLI) 的研究已经成为最近引领该领域进步的主要领域。这些接口允许用户根据自然语言查询或提示生成可视化,而不需要编程和技术结构,从而提供了一种灵活直观的与数据交互的方式。最终目标是设计出能够让用户表达诸如"Show me the sales trend ? ",通过自动识别正确的图表类型来正确理解和描绘。
将自然语言输入转换为可视化(NL2VIS)的过程涉及几个重要的任务。通常,首先对输入查询进行解析和建模,然后识别所需的数据属性,并识别查询中表示的低级分析任务。这些低级别的任务,比如过滤、关联和趋势分析,必须被转换成代码来执行。最后,分析输入查询并将其与最合适的可视化相匹配,然后调用代码来呈现数据。
NL2VIS的实现是一项特别具有挑战性的任务,因为NL的固有特征,如提示中的歧义和需求不规范,以及不可避免的排版错误。自然语言的这些特点使得现有的技术和方法很难准确地解释用户的意图并产生适当的可视化。尽管存在这些挑战,受数据分析需求和对灵活直观的数据交互方式日益增长的需求的驱动,nli在数据可视化方面的受欢迎程度仍在继续增长。
LLMs 彻底改变了自然语言的理解和生成领域。这些模型基于transformer架构,该架构在情感分析、问答和语言生成等任务中取得了显著的成功,这既是由于该架构的有效性,也是由于它们在大量数据上进行了训练。
本研究提出了以下研究问题:
- (RQ1) 当前的 LLM 是否支持从 NL 准确地端到端生成可视化?
- (RQ2) 如何有效地利用 LLMs 来生成正确且适当渲染的图表?
- (RQ3) 哪些 LLM 倾向于对 NL 提示执行更稳健?它们与其他最先进的方法相比表现如何?
- (RQ4) 在 NL2VIS 中使用 LLM 的局限性是什么?未来的研究方向是什么?
3 Method
如图描述了开发的 Chat2VIS 系统的概述。用户通过 Streamlit NLI 应用程序输入一个NL查询,这是一个基于 web 的开源 Python 框架。该查询与提示脚本相结合,该脚本为选定的数据集设计合适的提示。提示被转发到选定的 LLM, LLM 返回一个 Python 脚本,该脚本随后在 Streamlit NLI 中呈现。
本研究中使用的Chat2VIS软件工件的界面如图3所示。该界面使用户能够选择一个数据集并输入描述其数据可视化意图的自由格式文本。侧边工具栏提供了导入其他CSV文件和SQLite数据库的功能,并提供了选择所需llm的选项。
访问模型需要OpenAI Access Key,必须在查询之前输入。提供了一个输入框,用于输入NL自由格式文本。为每个选定的模型呈现可视化,并向用户显示实际的数据集。
从 LLM 获得所需输出的最有效方法是使用"show-and-tell"技术,即在提示中提供示例和说明。本系统生成由两部分组成的 LLM 提示: (1) 由 Python 文档字符串构建的描述提示,并在定义的开头和结尾使用三重双引号""声明,(2) 由 Python 代码语句组成的代码提示,该代码语句为脚本提供指导和起点。
粗体类型突出显示了替换值,这些替换值是可变的,依赖于所选的数据集。这些文件向LLM提供了DataFrame(一个表格数据对象)的概述,列出了列名、它们的数据类型和分类值,这有助于LLM理解上下文,提示的每个组成部分描述如下:
- 描述提示符由Python文档字符串启动图(a)
- 在图4(b)中,LLM被明确告知使用名称为df的DataFrame,这使得可以通过特定名称对该DataFrame进行引用,从而避免了LLM为DataFrame分配不同名称时可能出现的任何混淆。
- 图4©中的描述提示符由每列一个条目组成,表明其数据类型。如果具有对象数据类型的列具有少于20个不同的值,则将其视为分类类型,并在提示符中枚举其值。
4)在图4(d)中,要求LLM决定x轴和y轴的适当命名以及绘图标题。
一旦制定,这两个提示元素将合并在一起,结果字符串通过文本完成端点API提交给llm
4 Results
5 Discussion
- RQ1:本文六个案例研究的实验结果证实了在设计良好的提示符支持下,LLM 可以有效地支持端到端从 NL 生成可视化。
- RQ2:LLM 可以有效地启动所提出的提示,并且提示工程有助于在伴随 NL 请求时引出正确的图表选择和适当呈现的图表。LLMs 自主选择正确绘图类型的论证超出了以往研究的能力。
- RQ3:在性能方面,初步结果表明,ChatGPT、GPT-3 和 Codex LLMs 之间的性能倾向于不表现出大的偏差。可以说,ChatGPT展示了一些增强的性能。很大程度上的可比性可能归因于这三个 LLM 是在相似的数据集上训练的。
- RQ4:虽然结果显示了 LLM 用于NL2VIS的潜力,但该技术仍然存在一些挑战,这些挑战大多是次要的,主要围绕图形的美学特征和可视化结果的变化。
6 Future Work
未来的工作将探索将 nvBench 基准数据集整合到 Chat2VIS 功能的改进中,并利用该数据集在更广泛的查询中对其功能进行更全面的定量分析,从而能够与先前的研究结果进行更稳健的比较。此外,一个有价值的未来研究方向是研究该领域 LLM 提示中扰动的影响,量化输出质量变化的敏感性。比较更广泛的 LLM (包括YoloPandas) 解决 NL2VIS 问题的能力也是一项有价值的工作;然而,支持自动比较的方法和基准数据集需要在这一领域进一步发展,以促进进展。