CN109408049A - 一种从自然语言自动生成程序代码的方法和系统 - Google Patents
一种从自然语言自动生成程序代码的方法和系统 Download PDFInfo
- Publication number
- CN109408049A CN109408049A CN201811192694.8A CN201811192694A CN109408049A CN 109408049 A CN109408049 A CN 109408049A CN 201811192694 A CN201811192694 A CN 201811192694A CN 109408049 A CN109408049 A CN 109408049A
- Authority
- CN
- China
- Prior art keywords
- code
- description
- template
- generation
- real data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明提出一种从自然语言描述中自动生成程序代码的方法和系统。程序代码自动生成系统包括代码生成模块、输入装置以及处理器。代码生成模块具有描述模板。描述模板包括多个描述关键词组、实际数据指示符和生成表达式。代码生成模块为代码生成平台。输入装置用以接收输入数据。处理器耦接输入装置,并且用以执行代码生成模块。当处理器执行代码生成模块时,处理器读取代码生成模块当中的描述模板,并且将输入数据与描述模板对比配合,提取实际参数,以生成程序代码。
Description
技术领域
本发明是有关一种程序代码生成技术,且特别是有关一种程序代码的自动生成系统及自动生成方法。
背景技术
从自然语言生成计算机程序代码一直是计算机科学的一个重要研究方向。自然语言在沟通交流中应用领域非常广泛,很多时候自然语言并不用来描述逻辑或流程,而描述数理逻辑或流程操作的时候,使用的自然语言词汇、语法往往比口语、网络用语等正式和规范。针对自然语言描述的逻辑流程和功能操作,目前还必须由人工理解后写成计算机语言代码(如C、Java、麦语言等),在代码编写过程中,主观性较强,出错率高,往往需要反复沟通才能编写正确。特别是对于计算机语言的函数,在自然语言中由于功能描述各有不同,参数差异,更不容易识别。有鉴于此,以下将提出识别自然语言描述的功能操作,并转换成程序代码的解决方案。
发明内容
本发明提供一种根据自然语言描述的功能操作自动生成程序代码的代码自动生成系统以及自动生成方法。
本发明的一种程序代码自动生成系统(以下简称代码生成系统、生成系统)适用于自然语言描述的功能操作。代码生成系统包括程序代码自动生成模块(以下简称代码生成模块、生成模块)、描述输入装置以及处理器。代码生成模块具有可扩展的描述模板。描述模板包括描述关键词组、实际数据指示符和生成表达式。代码生成模块为代码生成平台。输入装置用以接收描述数据。处理器耦接输入装置。处理器用以执行代码生成模块。当处理器执行代码生成模块时,处理器读取代码生成模块当中的描述模板,并且将输入的描述数据与描述模板对比配合,从描述中提取实际数据数据,以产生程序代码。
本发明的一种程序代码自动生成方法(以下简称代码生成方法、生成方法)适用于自然语言描述的功能操作。代码生成方法包括以下步骤。执行代码生成模块,并且读取描述模板,其中描述模板包括描述关键词组、实际数据指示符和生成表达式,并且代码生成模块为代码自动生成平台。接收描述输入数据。将描述输入数据与描述模板对比配合,从描述中提取实际数据数据,以产生程序代码。
基于上述,本发明的代码生成系统以及代码生成方法利用在代码生成模块中设定有的描述模板,以使代码生成模块可直接将使用者输入的描述数据与描述模板对比配合,提取实际数据,以快速地产生程序代码。因此,本发明的代码生成系统以及代码生成方法可有效地减少编码的主观随意性,提升代码的客观统一性。
为让本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合所附附图作详细说明如下。
附图说明
图1图示本发明的一实施例的代码自动生成系统的示意图。
图2图示本发明的一实施例的代码自动生成模块的示意图。
图3图示本发明的一实施例的代码自动生成方法的流程图。
具体实施例
为了使本发明的内容可以被更容易理解,以下特举实施例做为本发明确实能够据以实施的示例。本实施例是以自然语言描述为输入,生成金融程序化交易程序代码,例如文华财经麦语言代码。金融领域程序化交易语言,是金融领域公司针对用户需要使用程序进行交易的需求,开发的类似于计算机通用的C、Java等编程语言、同时增加了金融领域专有的金融函数的程序化交易语言。使用者需要熟悉其中很多金融函数,来编写程序进行程序化交易。国内比较有代表性的有文华麦语言、开拓者、金字塔等程序化交易语言。
另外,凡可能的地方,在附图及实施方式中使用相同标号的元件/构件/步骤,是代表相同或类似部件。
图1图示本发明的一实施例的代码生成系统的示意图。在本实施例中,代码生成系统10包括电子装置100以及外部服务器200。代码生成系统10适用于自然语言描述的功能操作,并且具有代码生成的功能。电子装置100包括处理器110以及输入装置120,并且处理器110耦接输入装置120。外部服务器200包括生成模块210。在本实施例中,电子装置100可进一步包括有线通讯接口(interface)或无线通讯接口。电子装置100以有线或无线的方式通讯连接至外部服务器200,以读取并且执行代码自动生成模块210。代码自动生成模块210是一种开放式的代码自动生成平台。在本实施例中,处理器110可由输入装置120接收使用者提供的描述数据。代码自动生成模块210包括描述模板。处理器110可读取生成模块210当中的描述模板,并且将输入数据与描述模板对比对比配合,提取实际数据,以生成程序代码。
在本实施例中,电子装置100可例如是个人电脑(Personal Computer,PC)、台式电脑(Desktop PC)、 笔记本电脑(Notebook PC)、平板电脑(Tablet PC)等诸如此类的电脑装置,本发明并不限于此。电子装置100设置有无线或有线的通讯模块,以使电子装置100利用通讯模块与外部服务器200进行通讯。举例来说, 当使用者操作代码生成系统10时,使用者可操作电子装置100,以利用输入装置120输入功能操作描述,以使电子装置100可执行储存在外部服务器200当中的代码生成模块210,以进行生成代码工作。
在本实施例中,处理器110例如是中央处理单元(Central Processing Unit,CPU)、系统单芯片(System on Chip,SOC)或是其他可编程的一般用途或特殊用途的微处理器(Microprocessor)、数字信号处理器(Digital Signal Processor,DSP)、可编程控制器、特定用途集成电路(Application Specific Integrated Circuits,ASIC)、可编程逻辑装置(Programmable Logic Device,PLD)、其他类似处理装置或这些装置的组合。
在本实施例中,输入装置120可用以接收使用者输入的自然语言功能操作。输入装置120例如是键盘(Keyboard)、 语音接收器(Voice receiver)、麦克风(Microphone)或这些装置的组合等。
输入装置120可用以接收使用者提供的语音信息或文字描述等,本发明并不加以限制。在本实施例中,输入装置120可依据上述各种形式的输入方式来提供功能操作数据至处理器110。
在本实施例中,外部服务器200为云端系统。外部服务器200用以提供代码生成模块。在本实施例中,电子装置100可读取外部服务器200的生成模块210,并且直接在外部服务器200上执行生成模块210。在一个实施例中,电子装置100也可先将生成模块210下载至电子装置100的存储器中,再执行生成模块210,本发明并不加以限制。
图2图示本发明的一实施例的生成模块的示意图。参考图1以及图2,生成模块210包括描述模板211,并且这些描述模板可以用于表示同样功能操作的不同形式,例如以下举例所述的多个模板都是用于表示同样功能操作的多个不同形式,但本发明并不限于此。描述模板211包括一个或多个关键词组211_1、实际数据指示符211_2和生成表达式211_3。然而,在一个描述模板211中的关键词组211_1、实际数据指示符211_2和生成表达式211_3的数量本发明并不加以限制。在本实施例中,输入装置120提供描述输入220,以使生成模块210将描述输入220与描述模板211对比配合,提取实际数据,以生成程序代码230。
在本实施例中,描述输入220可包括多个功能操作所需的实际数据数据。在本实施例中,当处理器110将描述输入220对比配合描述模板211,提取实际数据,以产生程序代码230时,处理器110先将一个描述模板211的关键词组211_1与描述输入220对比,当所有关键词组对比符合后,再根据实际数据指示符211_2的指示,在描述输入220中找出实际数据数据,代入生成表达式211_3,生成程序代码。
举例来说,描述模板211例如有如下模板。
模板一:[在比]reg_price上涨reg_alldigits% : reg_price*(1+reg_alldigits/100)
模板二:总(资金|权益):设置下单的资金比例的:为(\d{1,3}% : reg_alldigits*100%([开建]仓|下单):)
模板一中,“[在比]reg_price上涨reg_alldigits%”是本模板的关键词组,“[在比]”、“上涨”和“%”是关键词,“reg_price”和“reg_alldigits”是实际数据指示符,“reg_price*(1+reg_alldigits/100)”是生成表达式。关键词组与生成表达式用分隔符(如“:”)隔开。一个模板中,关键词组与生成表达式可以有多对,如模板二。
模板二中,“总(资金|权益):设置下单的资金比例”为第一个关键词组与生成表达式对,“总(资金|权益)”是关键词组,“设置下单的资金比例”是生成表达式,“:”是分隔符。“的:为(”是第二对关键词组与生成表达式对,“的”是关键词,“为(”是生成表达式,“:”是分隔符。“\d{1,3}%:reg_alldigits*100%”为第三对,“\d{1,3}”是实际数据指示符,依据正则表达式语法规则,“reg_alldigits*100%”是生成表达式。最后一对:“([开建]仓|下单):)”,“ ([开建]仓|下单)”是关键词,“)”是生成表达式。
据此,使用者无需编写任何代码即可依据本发明的代码自动生成系统10来产生代码。并且,使用者可依据不同需求来决定描述输入220的功能操作内容和数量,而不限于上述范例。
代码生成模块执行时,先将描述输入220对比各模板的关键词组211_1,若能匹配上一个模板的所有关键词组,则按照对应的实际数据指示符找出对应的实际数据,最后将这些实际数据代入生成表达式,生成程序代码。例如,描述输入是“比收盘价上涨10%”,生成模块匹配“比”、“上涨”、“10%”与模式一符合,依据实际数据指示符“reg_price”和“reg_alldigits”找到“收盘价”、“10”,代入生成表达式,生成代码:“CLOSE*(1+10/100)”。再如,描述输入是:“使用总资金的50%开仓”,生成模块匹配句子中的“总资金”、“的”、“50%”、“开仓”全部与模式二匹配,依据实际数据指示符“\d{1,3}”找到“50”,生成的表达式是“设置下单的资金比例为(50*100%)”,其中“设置下单的资金比例”是金融程序化交易语言的函数,通过简单的方式例如查映射表可以转换成“SETDEALPERCENT”,参数是比例数值,本例中是50。最后生成的代码是“SETDEALPERCENT(50*100%)”。
图3图示本发明的一实施例的代码生成方法的流程图。 参考图1至图3, 本实施例的代码生成方法可至少适用于图1以及图2的代码自动生成系统10。在步骤S310中,电子装置100执行生成模块210,并且读取生成模块210当中的描述模板211,其中描述模板211包括多个关键词组211_1、实际数据指示符211_2和生成表达式211_3,并且生成模块210为代码生成平台。在步骤S320中,电子装置100经由输入装置120接收描述输入220。生成模块210将描述输入220与描述模板211对比配合,以产生程序代码230。也就是说,本实施例的代码生成方法可直接将使用者输入的描述输入220与描述模板211对比配合,以快速地且便利地生成程序代码230。因此,本实施例的代码生成方法可有效节省编码的工作量、提升效率。
此外,关于本实施例的代码自动生成系统10的相关装置特征以及技术内容可依据上述图1以及图2实施例的内容而取得足够的教导、建议以及实施说明,因此不再赘述。
综上所述,本发明的代码自动生成系统以及代码生成方法可预先在外部服务器的平台上的生成模块中预先设置的描述模板。因此,当使用者通过电子装置与外部服务器进行通讯时,电子装置可直接将使用者输入的描述输入与描述模板对比配合,以快速地产生程序代码。此外,由于本发明的生成模块以及描述模板设置在云端系统中,因此云端维护人员也可以直接更新或输入新的描述模板到生成模块。也就是说,本发明的代码自动生成系统以及代码生成方法可有效节省编码的工作量,并且具有维护方便以及可即时更新的特性。
虽然本发明已以实施例公开如上,然而其并非用以限定本发明,任何本领域普通技术人员,在不脱离本发明的精神和范围内,当可作些许的改动与润饰,因此本发明的保护范围当应当以所附的权利要求保护范围为准。
【符号说明】
10: 代码自动生成系统
100: 电子装置
110: 处理器
120: 输入装置
200: 外部服务器
210: 生成模块
211: 描述模板
211_1: 关键词组
211_2: 实际数据指示符
211_3: 生成表达式
220: 描述输入
230: 程序代码
S310、 S320、 S330: 步骤
Claims (10)
1.一种程序代码自动生成系统(以下简称代码自动生成系统),适用于自然语言,包括:
程序代码自动生成模块(以下简称代码自动生成模块),具有描述模板,所述描述模板包括多个关键词组、实际数据指示符和生成表达式,其中所述代码自动生成模块为程序代码自动生成平台;
输入装置,用以接收描述数据;以及
处理器,耦接所述输入装置,并且用以执行所述代码自动生成模块,
其中当所述处理器执行所述代码自动生成模块时,所述处理器读取所述代码自动生成模块当中的所述描述模板,并且将所述描述数据与所述描述模板对比配合,提取实际数据,以生成程序代码。
2.如权利要求1所述的代码自动生成系统,其中所述描述模板包括关键词组、实际数据指示符和生成表达式。
3.如权利要求1所述的代码自动生成系统,其中所述关键词组包括多个标识本模板的关键词,并且所述实际数据指示符包括多个指示数据的正则表达式,所述生成表达式包括多个生成代码的表达式,
其中当所述处理器将所述描述数据与所述描述模板对比配合,以提取实际数据时,所述处理器将所述关键词组逐一在输入的描述数据中对比查找,所有关键词组都查找到后为匹配模板成功,再依据实际数据指示符从描述中找出实际数据,填入生成表达式,生成程序代码。
4.如权利要求1所述的代码自动生成系统,还包括外部服务器,其中所述代码自动生成模块设置在所述外部服务器中,并且所述处理器通讯连接至所述外部服务器,以读取并执行所述程序代码自动生成模块。
5.一种程序代码自动生成方法,适用于自然语言,包括:
执行代码自动生成模块,并且读取所述代码自动生成模块当中的描述模板,其中所述描述模板包括多个关键词组、实际数据指示符和生成表达式,并且所述代码生成模块是代码自动生成平台;
接收描述数据;以及
将所述描述数据与所述描述模板对比配合,提取实际数据,以生成程序代码。
6.如权利要求5所述的代码自动生成方法,还包括:
执行代码生成操作,并且所述代码生成操作包括:
接收描述数据;
利用所述模板数据来比对所述描述数据,提取实际数据,以生成程序代码。
7.如权利要求5所述的代码自动生成方法,其中所述描述模板关键词组、实际数据指示符和生成表达式。
8.如权利要求5所述的代码自动生成方法,其中所述关键词组包括动多个标识本模板的关键词,并且所述实际数据指示符包括多个指示数据的正则表达式,所述生成表达式包括多个生成代码的表达式。
9.如权利要求5所述的代码自动生成方法,其中所述描述数据包括描述一次功能操作的逻辑、函数调用的自然语言,并且所述函数调用的描述数据包括多个调用时的实际数据,其中将所述描述数据与所述描述模板对比配合,以生成代码的步骤包括:
将所述描述模板的关键词组逐一在描述数据中查找,若全部找到则匹配本模板,
根据所述模板的实际数据指示符的指示,从描述数据中找出实际数据,
把实际数据带入生成表达式,生成程序代码。
10.如权利要求8所述的代码自动生成方法,其中所述代码生成模块设置在外部服务器中, 并且执行所述代码自动生成模块的步骤包括:
通讯连接至所述外部服务器,以读取并执行所述代码自动生成模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811192694.8A CN109408049A (zh) | 2018-10-13 | 2018-10-13 | 一种从自然语言自动生成程序代码的方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811192694.8A CN109408049A (zh) | 2018-10-13 | 2018-10-13 | 一种从自然语言自动生成程序代码的方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109408049A true CN109408049A (zh) | 2019-03-01 |
Family
ID=65467097
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811192694.8A Pending CN109408049A (zh) | 2018-10-13 | 2018-10-13 | 一种从自然语言自动生成程序代码的方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109408049A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112394926A (zh) * | 2020-12-03 | 2021-02-23 | 钟月珠 | 一种基于自然语言模型的码床系统 |
CN112987653A (zh) * | 2019-12-17 | 2021-06-18 | 深圳市恒控科技有限公司 | 一种将中文程序转化为g代码的方法和装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030200535A1 (en) * | 2000-06-09 | 2003-10-23 | Mcnamara Benedict Bede | System for program source code conversion |
CN102289375A (zh) * | 2011-09-02 | 2011-12-21 | 中兴通讯股份有限公司 | 代码生成方法及系统 |
CN102707948A (zh) * | 2012-04-26 | 2012-10-03 | 华亚微电子(上海)有限公司 | 一种源代码生成方法 |
-
2018
- 2018-10-13 CN CN201811192694.8A patent/CN109408049A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030200535A1 (en) * | 2000-06-09 | 2003-10-23 | Mcnamara Benedict Bede | System for program source code conversion |
CN102289375A (zh) * | 2011-09-02 | 2011-12-21 | 中兴通讯股份有限公司 | 代码生成方法及系统 |
CN102707948A (zh) * | 2012-04-26 | 2012-10-03 | 华亚微电子(上海)有限公司 | 一种源代码生成方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112987653A (zh) * | 2019-12-17 | 2021-06-18 | 深圳市恒控科技有限公司 | 一种将中文程序转化为g代码的方法和装置 |
CN112987653B (zh) * | 2019-12-17 | 2022-04-15 | 深圳市恒控科技有限公司 | 一种将中文程序转化为g代码的方法和装置 |
CN112394926A (zh) * | 2020-12-03 | 2021-02-23 | 钟月珠 | 一种基于自然语言模型的码床系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107291783B (zh) | 一种语义匹配方法及智能设备 | |
CN112001188B (zh) | 基于向量化语义规则快速实现nl2sql的方法和装置 | |
CN112328761B (zh) | 一种意图标签设置方法、装置、计算机设备及存储介质 | |
WO2021082427A1 (zh) | 韵律控制的诗词生成方法、装置、设备及存储介质 | |
CN111527459B (zh) | 设备、方法和计算机可读记录介质 | |
CN107807968A (zh) | 基于贝叶斯网络的问答装置、方法及存储介质 | |
CN112002323A (zh) | 语音数据处理方法、装置、计算机设备及存储介质 | |
CN109408049A (zh) | 一种从自然语言自动生成程序代码的方法和系统 | |
CN110276080A (zh) | 一种语义处理方法和系统 | |
CN112084752A (zh) | 基于自然语言的语句标注方法、装置、设备及存储介质 | |
JP6485537B1 (ja) | 装置、方法、およびプログラム | |
CN112699213A (zh) | 语音意图识别方法、装置、计算机设备及存储介质 | |
CN113220828B (zh) | 意图识别模型处理方法、装置、计算机设备及存储介质 | |
CN112818096A (zh) | 对话生成方法及其装置 | |
CN112289305A (zh) | 韵律预测方法、装置、设备以及存储介质 | |
CN112799658B (zh) | 模型训练方法、模型训练平台、电子设备和存储介质 | |
CN111258566A (zh) | 一种从自然语言中提取逻辑流程生成代码的方法和系统 | |
Sunitha et al. | Digital notice board using Smart Phones-speech recognition voice command | |
CN114020888A (zh) | 文本生成的方法、装置、设备以及存储介质 | |
JP2018163586A (ja) | 学習プログラム、学習方法および学習装置 | |
CN114661751B (zh) | 基于sql知识库的数据生产方法、装置、系统、设备及介质 | |
CN108228191B (zh) | 语法编译系统以及语法编译方法 | |
CN113360346B (zh) | 用于训练模型的方法和装置 | |
CN114547085B (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
CN116564314A (zh) | 中粤混合语音识别方法、装置、计算机设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20190301 |
|
WD01 | Invention patent application deemed withdrawn after publication |