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

本文涉及的产品
NLP自然语言处理_基础版,每接口每天50万次
NLP 自学习平台,3个模型定制额度 1个月
NLP自然语言处理_高级版,每接口累计50万次
简介: 近日,两个外国小哥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

相关文章
|
3月前
|
自然语言处理 搜索推荐 API
GPT-4o mini:探索最具成本效益的语言模型及其在开发中的应用
【8月更文第5天】随着自然语言处理技术的快速发展,语言模型正变得越来越强大且易于访问。OpenAI 最新发布的 GPT-4o mini 模型以其卓越的性能和极具竞争力的价格,迅速成为了业界关注的焦点。作为开发者,您是否已经开始探索这个“迄今为止最具成本效益的小模型”?本文旨在鼓励开发者分享使用 GPT-4o mini 及其他大型语言模型的经验,并探讨如何有效地利用这些工具来提升开发效率和创新能力。
151 0
|
25天前
|
人工智能 前端开发 测试技术
探索前端与 AI 的结合:如何用 GPT-4 助力开发效率
本文介绍了 GPT-4 如何成为前端开发者的“神队友”,让开发变得更加高效愉快。无论是需求到代码的自动生成、快速调试和性能优化,还是自动化测试和技术选型,GPT-4 都能提供极大的帮助。通过智能生成代码、捕捉 BUG、优化性能、自动化测试生成以及技术支持,GPT-4 成为开发者不可或缺的工具,帮助他们从繁重的手动任务中解脱出来,专注于创新和创意。GPT-4 正在彻底改变开发流程,让开发者从“辛苦码农”转变为“效率王者”。
29 0
探索前端与 AI 的结合:如何用 GPT-4 助力开发效率
|
3月前
|
供应链 数据可视化 数据挖掘
【2023年第十一届泰迪杯数据挖掘挑战赛】B题:产品订单的数据分析与需求预测 建模及python代码详解 问题一
本文详细介绍了第十一届泰迪杯数据挖掘挑战赛B题的解决方案,涵盖了对产品订单数据的深入分析、多种因素对需求量影响的探讨,并建立了数学模型进行未来需求量的预测,同时提供了Python代码实现和结果可视化的方法。
123 3
【2023年第十一届泰迪杯数据挖掘挑战赛】B题:产品订单的数据分析与需求预测 建模及python代码详解 问题一
|
3月前
|
人工智能 API Python
Openai python调用gpt测试代码
这篇文章提供了使用OpenAI的Python库调用GPT-4模型进行聊天的测试代码示例,包括如何设置API密钥、发送消息并接收AI回复。
|
3月前
|
人工智能 自然语言处理 算法
【人工智能】探索GPT-4o mini:解锁成本效益新纪元,赋能开发创新与效率
在人工智能领域的浩瀚星空中,OpenAI再次以其创新之光照亮了前行的道路,推出了备受瞩目的GPT-4o mini模型。这款被誉为“迄今为止最具成本效益的小模型”不仅继承了GPT系列强大的自然语言处理能力,更在成本控制上实现了重大突破,为开发者们开启了一扇通往高效与创新的大门。
65 1
|
3月前
|
数据采集 存储 监控
数据驱动开发:如何将数据分析融入开发流程
【8月更文挑战第14天】数据驱动开发是一种高效、智能的软件开发方法论,它通过将数据分析深度融入开发流程中,实现了精准决策、提升效率和持续改进的目标。为了成功实施数据驱动开发,团队需要明确数据需求、设计合理的数据架构、集成数据收集工具、实施CI/CD流程、进行数据分析与决策支持以及建立反馈循环机制。同时,还需要应对数据质量、技术和组织与文化等挑战。通过不断努力和实践,团队可以逐步建立起完善的数据驱动开发体系,推动产品不断迭代升级和业务持续增长。
|
3月前
|
机器学习/深度学习 数据采集 数据挖掘
【2023年第十一届泰迪杯数据挖掘挑战赛】B题:产品订单的数据分析与需求预测 建模及python代码详解 问题二
本文提供了第十一届泰迪杯数据挖掘挑战赛B题问题二的详细解题步骤,包括时间序列预测模型的建立、多元输入时间预测问题的分析、时间序列预测的建模步骤、改进模型的方法,以及使用Python进行SARIMA模型拟合和预测的具体实现过程。
68 1
|
3月前
|
供应链 算法 数据挖掘
【2023年第十一届泰迪杯数据挖掘挑战赛】B题:产品订单的数据分析与需求预测 23页论文及实现代码
本文介绍了2023年第十一届泰迪杯数据挖掘挑战赛B题的解决方案,深入分析了产品订单数据,并使用Arimax和Var模型进行了需求预测,旨在为企业供应链管理提供科学依据,论文共23页并包含实现代码。
94 0
【2023年第十一届泰迪杯数据挖掘挑战赛】B题:产品订单的数据分析与需求预测 23页论文及实现代码
|
3月前
|
数据采集 数据可视化 数据挖掘
使用Python进行数据分析的新手指南深入浅出操作系统:从理论到代码实践
【8月更文挑战第30天】在数据驱动的世界中,掌握数据分析技能变得越来越重要。本文将引导你通过Python这门强大的编程语言来探索数据分析的世界。我们将从安装必要的软件包开始,逐步学习如何导入和清洗数据,以及如何使用Pandas库进行数据操作。文章最后会介绍如何使用Matplotlib和Seaborn库来绘制数据图表,帮助你以视觉方式理解数据。无论你是编程新手还是有经验的开发者,这篇文章都将为你打开数据分析的大门。
|
5月前
|
存储 弹性计算 DataWorks
云端开发与数据分析的强强联合
通过这次方案的搭建和使用,我更加确信阿里云产品组合是企业数字化转型的强大助力。我鼓励大家积极探索和尝试这些服务,以发掘它们在实际业务中的潜力和价值。我深刻体会到了阿里云产品组合的强大能力和灵活性。它们不仅帮助我们解决了实际问题,还为未来的发展提供了坚实的基础。我强烈推荐其他企业和开发者尝试这样的产品组合,以提升开发效率和数据处理能力。
132 35

热门文章

最新文章