无需GPT-3!国外小哥徒手开发Text2Code,数据分析代码一键生成

简介: 近日,两个外国小哥Kartik Godawat 和 Deepak Rawat 开发了一个 Jupyter 插件Text2Code,可以将自然语言查询转换成相关的 Python 数据分析代码。

微信图片_20220109162243.png


如果能创建一个桌面软件,将自然语言直接转换成相关的 Python 数据分析代码,工作就方便了。


这不,有俩「好事」的程序员耐不住寂寞,把这个工具做出来。


微信图片_20220109162245.gif

                 

灵感来自GPT-3,自然语言直接转代码


2020年6月,OpenAI 推出了GPT-3,它不仅具有未来的 NLP 相关的诸多功能,而且还能够生成 React 代码和shell命令。 


俩人从中得到了灵感,他们意识到在做数据分析的时候,我们经常忘记不经常使用的 pandas 命令或者语法,需要去搜索,从 StackOverflow 复制代码然后需要相应地修改变量和列名。 最初他们试图把这个问题作为一个聊天机器人来解决,并试图使用Rasa,但因为缺乏合适的训练数据而夭折了。 


他们决定开发一个监督学习模型,该模型可以吃进自然语言和代码的对应语料,然后进行训练,完整的pipeline包含了下面几个步骤: 


生成训练数据 


为了模拟终端的用户想向系统查询的内容,我们开始尝试用英语描述一些命令的格式。 例如: display a line plot showing $colname on y-axis and $colname on x-axis from $varname 然后,我们通过使用一个非常简单的生成器来替换 $colname 和 $varname 来生成数据,以获得训练集中的变量。

     微信图片_20220109162247.png      

意图匹配 


在生成数据之后,需要为特定的意图映射到一个唯一的「意图id」,并使用通用语句编码器获取用户query的embedding,然后用我们预先定义好的意图query(生成的数据)来得到余弦距离。 


「通用句子编码器」-Universal Sentence Encoder类似于 word2vec,会生成相应的embedding,唯一的区别是这里的嵌入是用于句子而不是单词。

     微信图片_20220109162248.png      

命名实体识别 


相同的生成数据可以被用来训练一个自定义的实体识别模型,这个模型可以用来检测columns,varaibles,library的名字。 


为此,作者还研究了 HuggingFace 模型,但最终决定使用 Spacy 来训练模型,主要是因为 HuggingFace 模型是基于Transformer的模型,与 Spacy 相比有点过于复杂繁重。  

    微信图片_20220109162250.png      

填充模板 


一旦实体被正确识别并且意图被正确匹配,填充模板就变得非常容易。 例如,“ show 5 rows from df”这个查询将生成两个实体: 一个变量和一个数值。这个模板代码编写起来很简单。

        微信图片_20220109162251.png      

与Jupyter结合 


这是所有步骤里最复杂的一步,因为为 Jupyter 编写如此复杂的扩展有点棘手,而且几乎没有文档或示例参考。 


他们通过一些尝试并参考已经存在的扩展,最终将所有内容包装成一个单独的 Python 包,并且可以直接通过 pip 来安装。 单单一个Python包并不能直接使用,于是他们创建了一个前端以及一个服务器扩展,当 jupyter notebook启动时,就会被加载。前端向服务器发送查询以获取生成的模板代码,然后将其插入notebook的对应单元并执行它。 


QQ图片20220109162033.png点击查看原视频链接


Text2Code的演示


模型也会失效,但数据分析师真的省事了


就像许多机器学习模型一样,有时候意图匹配和命名实体识别效果会很差,即使这个意图对人来说非常简单。 有时也会识别不到意图,就无法生成正确的代码,作者还考虑使用下面的方法来进一步改进插件的效果。 


收集/生成高质量的英语训练数据,可以考虑从quroa,StackOverflow爬取更多的高赞回答,尝试用不同的方式来描述相同的内容,增强数据;收集真实世界的变量名和库名,而不是随机生成,使用基于Transformer的模型尝试命名实体识别。 如果这个模型训练的足够好,对数据分析师来,能省不少事了。


项目开源地址:https://github.com/deepklarity/jupyter-text2code


参考链接:


https://towardsdatascience.com/data-analysis-made-easy-text2code-for-jupyter-notebook-5380e89bb493

相关文章
|
7月前
|
自然语言处理 数据挖掘 数据处理
告别低效代码:用对这10个Pandas方法让数据分析效率翻倍
本文将介绍 10 个在数据处理中至关重要的 Pandas 技术模式。这些模式能够显著减少调试时间,提升代码的可维护性,并构建更加清晰的数据处理流水线。
269 3
告别低效代码:用对这10个Pandas方法让数据分析效率翻倍
|
机器学习/深度学习 人工智能 自然语言处理
构建企业级数据分析助手:Data Agent 开发实践
本篇将介绍DMS的一款数据分析智能体(Data Agent for Analytics )产品的技术思考和实践。Data Agent for Analytics 定位为一款企业级数据分析智能体, 基于Agentic AI 技术,帮助用户查数据、做分析、生成报告、深入洞察。由于不同产品的演进路径,背景都不一样,所以只介绍最核心的部分,来深入剖析如何构建企业级数据分析助手:能力边界定义,技术内核,企业级能力。希望既能作为Data Agent for Analytics产品的技术核心介绍,也能作为读者的开发实践的参考。
1220 2
构建企业级数据分析助手:Data Agent 开发实践
|
11月前
|
SQL 人工智能 算法
TDengine 发布时序数据分析 AI 智能体 TDgpt,核心代码开源
2025 年 3 月 26 日,涛思数据通过线上直播形式正式发布了其新一代时序数据分析 AI 智能体——TDgpt,并同步开源其核心代码(GitHub 地址:https://github.com/taosdata/TDengine)。这一创新功能作为 TDengine 3.3.6.0 的重要组成部分,标志着时序数据库在原生集成 AI 能力方面迈出了关键一步。
707 0
|
6月前
|
机器学习/深度学习 算法 数据挖掘
【数据分析】基于matlab私家车充电模型(含私家车日行驶距离概率密度及累加函数,电动汽车出发时间(或者称开始充电的时间)概率)(Matlab代码实现)
【数据分析】基于matlab私家车充电模型(含私家车日行驶距离概率密度及累加函数,电动汽车出发时间(或者称开始充电的时间)概率)(Matlab代码实现)
153 0
|
12月前
|
人工智能 芯片
D1net阅闻|OpenAI员工疯狂暗示,内部已成功开发ASI?被曝训出GPT-5但雪藏
D1net阅闻|OpenAI员工疯狂暗示,内部已成功开发ASI?被曝训出GPT-5但雪藏
|
自然语言处理 搜索推荐 API
GPT-4o mini:探索最具成本效益的语言模型及其在开发中的应用
【8月更文第5天】随着自然语言处理技术的快速发展,语言模型正变得越来越强大且易于访问。OpenAI 最新发布的 GPT-4o mini 模型以其卓越的性能和极具竞争力的价格,迅速成为了业界关注的焦点。作为开发者,您是否已经开始探索这个“迄今为止最具成本效益的小模型”?本文旨在鼓励开发者分享使用 GPT-4o mini 及其他大型语言模型的经验,并探讨如何有效地利用这些工具来提升开发效率和创新能力。
586 0
|
人工智能 前端开发 测试技术
探索前端与 AI 的结合:如何用 GPT-4 助力开发效率
本文介绍了 GPT-4 如何成为前端开发者的“神队友”,让开发变得更加高效愉快。无论是需求到代码的自动生成、快速调试和性能优化,还是自动化测试和技术选型,GPT-4 都能提供极大的帮助。通过智能生成代码、捕捉 BUG、优化性能、自动化测试生成以及技术支持,GPT-4 成为开发者不可或缺的工具,帮助他们从繁重的手动任务中解脱出来,专注于创新和创意。GPT-4 正在彻底改变开发流程,让开发者从“辛苦码农”转变为“效率王者”。
523 0
探索前端与 AI 的结合:如何用 GPT-4 助力开发效率
|
供应链 数据可视化 数据挖掘
【2023年第十一届泰迪杯数据挖掘挑战赛】B题:产品订单的数据分析与需求预测 建模及python代码详解 问题一
本文详细介绍了第十一届泰迪杯数据挖掘挑战赛B题的解决方案,涵盖了对产品订单数据的深入分析、多种因素对需求量影响的探讨,并建立了数学模型进行未来需求量的预测,同时提供了Python代码实现和结果可视化的方法。
529 3
【2023年第十一届泰迪杯数据挖掘挑战赛】B题:产品订单的数据分析与需求预测 建模及python代码详解 问题一
|
人工智能 API Python
Openai python调用gpt测试代码
这篇文章提供了使用OpenAI的Python库调用GPT-4模型进行聊天的测试代码示例,包括如何设置API密钥、发送消息并接收AI回复。
|
数据采集 数据可视化 数据挖掘
使用Python进行数据分析的新手指南深入浅出操作系统:从理论到代码实践
【8月更文挑战第30天】在数据驱动的世界中,掌握数据分析技能变得越来越重要。本文将引导你通过Python这门强大的编程语言来探索数据分析的世界。我们将从安装必要的软件包开始,逐步学习如何导入和清洗数据,以及如何使用Pandas库进行数据操作。文章最后会介绍如何使用Matplotlib和Seaborn库来绘制数据图表,帮助你以视觉方式理解数据。无论你是编程新手还是有经验的开发者,这篇文章都将为你打开数据分析的大门。