CN115437620A - 一种自然语言编程方法、装置、设备及存储介质 - Google Patents
一种自然语言编程方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN115437620A CN115437620A CN202211395609.4A CN202211395609A CN115437620A CN 115437620 A CN115437620 A CN 115437620A CN 202211395609 A CN202211395609 A CN 202211395609A CN 115437620 A CN115437620 A CN 115437620A
- Authority
- CN
- China
- Prior art keywords
- service logic
- component
- natural language
- similarity
- association table
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 47
- 230000006870 function Effects 0.000 claims abstract description 58
- 230000000712 assembly Effects 0.000 claims description 36
- 238000000429 assembly Methods 0.000 claims description 36
- 238000004590 computer program Methods 0.000 claims description 22
- 238000012545 processing Methods 0.000 claims description 8
- 238000000354 decomposition reaction Methods 0.000 claims description 6
- 230000011218 segmentation Effects 0.000 claims description 5
- 230000008569 process Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 7
- 230000006872 improvement Effects 0.000 description 6
- 230000009471 action Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 4
- 241001122767 Theaceae Species 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 238000009835 boiling Methods 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000010348 incorporation Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/31—Indexing; Data structures therefor; Storage structures
- G06F16/316—Indexing structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/3331—Query processing
- G06F16/334—Query execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/80—Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
- G06F16/83—Querying
- G06F16/835—Query processing
- G06F16/8373—Query execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/205—Parsing
- G06F40/226—Validation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/279—Recognition of textual entities
- G06F40/284—Lexical analysis, e.g. tokenisation or collocates
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- General Health & Medical Sciences (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了一种自然语言编程方法、装置、设备及存储介质,方法包括:获取待编程的自然语言文本;计算自然语言文本分别与预先构建的业务逻辑ID关联表中的每一业务逻辑功能描述文本的第一相似度;当最高的第一相似度大于预设的相似度阈值时,获取第一相似度最高的业务逻辑功能描述文本对应的业务逻辑ID;从预先构建的业务逻辑库中,查找与对应的业务逻辑ID对应的xml文件,并返回xml文件,以利用xml文件对自然语言文本进行编程;其中,业务逻辑库中包括若干与业务逻辑ID对应的xml文件,xml文件包括业务逻辑的数据结构。采用本发明实施例能够实现自然语言的编程,算力要求低,同时适用各种不同的场景。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种自然语言编程方法、装置、设备及存储介质。
背景技术
为了驱动计算机运行,需要编程语言。在目前流行的编程工具中,大部分是可编译为机器语言的高级语言,而非人们使用的自然语言,如C#、JavaScript、VB、C、C++、PASCAL、JAVA等语言,其语法是从“机器语言”、“汇编语言”、“高级语言”这样逐步发展起来的,然而这些编程语言需要用户学习和理解才能够使用,因此通过自然语言例如中文进行编程,成为了目前研究的重点。
发明内容
本发明实施例的目的是提供一种自然语言编程方法、装置、设备及存储介质,通过利用生成的业务逻辑进行自然语言的编程,算力要求低,能够适用各种不同的场景。
为实现上述目的,本发明实施例提供了一种自然语言编程方法,包括:
获取待编程的自然语言文本;
计算所述自然语言文本分别与预先构建的业务逻辑ID关联表中的每一业务逻辑功能描述文本的第一相似度;其中,所述业务逻辑ID关联表中包括若干业务逻辑ID,及与所述业务逻辑ID对应的业务逻辑功能描述文本;
当最高的所述第一相似度大于预设的相似度阈值时,获取第一相似度最高的所述业务逻辑功能描述文本对应的业务逻辑ID;
从预先构建的业务逻辑库中,查找与所述对应的业务逻辑ID对应的xml文件,并返回所述xml文件,以利用所述xml文件对所述自然语言文本进行编程;其中,所述业务逻辑库中包括若干与所述业务逻辑ID对应的xml文件,所述xml文件包括业务逻辑的数据结构。
作为上述方案的改进,通过以下步骤构建所述业务逻辑ID关联表:
获取设计好的组件;其中,所述组件的结构包括:组件ID、组件名称、组件类别、组件内容、组件入参、组件出参及组件描述文本;
利用所述组件,构建业务逻辑;其中,所述业务逻辑的结构包括:业务逻辑ID、业务逻辑名称、业务逻辑类别、业务逻辑内容、业务逻辑入参、业务逻辑出参及业务逻辑功能描述文本;
利用所述业务逻辑ID及所述业务逻辑功能描述文本,得到业务逻辑ID关联表。
作为上述方案的改进,所述自然语言编程方法还包括:
当最高的所述第一相似度小于或等于所述相似度阈值时,获取所述自然语言文本的若干关键词;
利用预先训练好的组件索引模型,获取每一所述关键词对应的组件ID;
对于每一所述组件ID,利用预先训练好的ID关联模型,获取含有所述组件ID的所有业务逻辑ID,统计所有所述业务逻辑ID的总数量;
计算所述自然语言文本分别与含有每一所述组件ID的每一所述业务逻辑ID的业务逻辑功能描述文本的第二相似度;
根据所述总数量和所述第二相似度,计算得到含有每一所述组件ID的每一所述业务逻辑ID的分值;
当仅存在一个最高所述分值,且最高所述分值大于或等于预设的分值阈值时,返回分值最高的业务逻辑ID对应的xml文件。
作为上述方案的改进,通过以下步骤得到训练好的组件索引模型:
将预先构建的组件ID关联表作为数据源,采用FST数据结构,得到训练好的组件索引模型;其中,所述组件ID关联表中包括若干组件ID,及与所述组件ID对应的关键词。
作为上述方案的改进,通过以下步骤构建组件ID关联表:
对所述组件描述文本进行拆词处理,得到所述组件的关键词;
利用所述组件ID及所述组件的关键词,得到组件ID关联表。
作为上述方案的改进,通过以下步骤得到训练好的ID关联模型:
将预先构建的ID关联表作为数据源,采用键值对数据结构,得到训练好的ID关联模型;其中,所述ID关联表中包括若干组件ID,及与所述组件ID对应的业务逻辑ID。
作为上述方案的改进,所述自然语言编程方法还包括:
当存在两个或两个以上最高所述分值,或最高所述分值小于所述分值阈值时,选取所述分值最高的前m个业务逻辑进行分解,得到若干组件;其中,m>1;
将所述组件中数量最多的组件作为终点组件,根据其余所述组件出现在所述终点组件的前一位的频次,确定所述终点组件的前一位组件,将所述前一位组件更新为所述终点组件,继续确定所述终点组件的前一位组件,直至所述终点组件不存在前一位组件,得到位于数量最多的组件之前的所有组件;
将所述组件中数量最多的组件作为起点组件,根据其余所述组件出现在所述起点组件的后一位的频次,确定所述起点组件的后一位组件,将所述后一位组件更新为起点组件,继续确定所述起点组件的后一位组件,直至所述起点组件不存在后一位组件,得到位于数量最多的组件之后的所有组件;
利用数量最多的组件之前的所有组件、数量最多的组件和数量最多的组件之后的所有组件,构成新的业务逻辑;
对新的业务逻辑进行验证,返回验证正确的业务逻辑的xml文件。
为实现上述目的,本发明实施例还提供了一种自然语言编程装置,包括控制器,所述控制器被配置为:
获取待编程的自然语言文本;
计算所述自然语言文本分别与预先构建的业务逻辑ID关联表中的每一业务逻辑功能描述文本的第一相似度;其中,所述业务逻辑ID关联表中包括若干业务逻辑ID,及与所述业务逻辑ID对应的业务逻辑功能描述文本;
当最高的所述第一相似度大于预设的相似度阈值时,获取第一相似度最高的所述业务逻辑功能描述文本对应的业务逻辑ID;
从预先构建的业务逻辑库中,查找与所述对应的业务逻辑ID对应的xml文件,并返回所述xml文件,以利用所述xml文件对所述自然语言文本进行编程;其中,所述业务逻辑库中包括若干与所述业务逻辑ID对应的xml文件,所述xml文件包括业务逻辑的数据结构。
为实现上述目的,本发明实施例还提供了一种电子设备,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器在执行所述计算机程序时实现如上述所述的自然语言编程方法。
为实现上述目的,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序;其中,所述计算机程序在运行时控制所述计算机可读存储介质所在的设备执行如上述所述的自然语言编程方法。
与现有技术相比,本发明实施例提供的一种自然语言编程方法、装置、设备及存储介质,通过获取待编程的自然语言文本;计算所述自然语言文本分别与预先构建的业务逻辑ID关联表中的每一业务逻辑功能描述文本的第一相似度;其中,所述业务逻辑ID关联表中包括若干业务逻辑ID,及与所述业务逻辑ID对应的业务逻辑功能描述文本;当最高的所述第一相似度大于预设的相似度阈值时,获取所述第一相似度最高的所述业务逻辑功能描述文本对应的业务逻辑ID;从预先构建的业务逻辑库中,查找并返回与所述对应的业务逻辑ID对应的xml文件,以利用所述xml文件对所述自然语言文本进行编程,本发明实施例算力要求低,能够适用各种不同的场景。
附图说明
图1是本发明实施例提供的一种自然语言编程方法的流程图;
图2是本发明施例提供的一种FST结构图;
图3是本发明施例提供的又一种FST结构图;
图4是本发明施例提供的分值最高的前3个业务逻辑组成图;
图5是本发明施例提供的新的业务逻辑组成图;
图6是本发明实施例提供的一种电子设备的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1,图1是本发明实施例提供的一种自然语言编程方法的流程图,所述自然语言编程方法包括:
S1、获取待编程的自然语言文本;
可以理解的是,通过输入的文字或语音,获取待编程的自然语言文本。
S2、计算所述自然语言文本分别与预先构建的业务逻辑ID关联表中的每一业务逻辑功能描述文本的第一相似度;其中,所述业务逻辑ID关联表中包括若干业务逻辑ID,及与所述业务逻辑ID对应的业务逻辑功能描述文本;
示例性地,通过以下步骤构建所述业务逻辑ID关联表:
获取设计好的组件;其中,所述组件的结构包括:组件ID、组件名称、组件类别、组件内容、组件入参、组件出参及组件描述文本;
利用所述组件,构建业务逻辑;其中,所述业务逻辑的结构包括:业务逻辑ID、业务逻辑名称、业务逻辑类别、业务逻辑内容、业务逻辑入参、业务逻辑出参及业务逻辑功能描述文本;
利用所述业务逻辑ID及所述业务逻辑功能描述文本,得到业务逻辑ID关联表。
其中,所述组件的结构如表1所示:
表1 组件的结构
属性 | 标识 | 说明 |
组件ID | id | 组件的唯一码 |
组件名称 | name | 组件的名称 |
组件类别 | cate | 区分组件由什么语系实现,例如java、python等;执行过程中会根据类别选择不同的解释引擎 |
组件内容 | content | 实现的代码或者相关的类库方法体 |
组件入参 | inParams | 组件的输入参数,参数结构为类型、长度、描述元素组成 |
组件出参 | outParams | 组件的输出参数,参数结构为类型、长度、描述元素组成 |
组件描述文本 | remark | 组件的功能说明和关键字说明,也是组件主要数据训练的源数据之一 |
其中,组件的数据结构以xml的方式存在,例如:
<func>
<id>1</id>
<name>组件1</name>
……
</func>
最终生成多个xml文件组成的组件库,为了方便查询,使用组件ID作为文件名进行存储,以作为业务逻辑的最小元素;
所述业务逻辑的内容由数个组件组成,所述业务逻辑的结构如表2所示:
表2 业务逻辑的结构
其中,业务逻辑的数据结构以xml的方式存在,例如:
<action>
<id>1</id>
<name>逻辑1</name>
……
</action>
其中的逻辑体结构如下
<logic id="o1" name="组件A">
<param-list-in>
<param code="p1" name="p1" type="string" />
</param-list-in>
<param-list-out>
<param code="p1" name="p1" type="string" />
</param-list-out>
<func-content><![CDATA[]]></func-content>
<func-desc><![CDATA[]]></func-desc>
</logic>
<transition id="o1_o2" name="" to="o2" ></transition>
<logic id="o1" name="组件B">
…
</logic>
最终生成多个xml文件组成的业务逻辑库,为了方便查询,使用业务逻辑ID作为文件名进行存储,也是功能的应用单元;
在一具体实施例中,构建业务逻辑ID关联表,例如“查询A表所有的数据@@业务逻辑A”、“我想执行一个泡茶的过程@@业务逻辑B”,业务逻辑功能描述文本和业务逻辑ID之间用@@进行分隔,保存到actions.txt库中;在业务逻辑ID关联表中业务逻辑功能描述文本和业务逻辑ID具有对应的关系。
根据下式将所述自然语言文本分别与所述业务逻辑ID关联表中的每一个业务逻辑功能描述文本进行比较,计算第一相似度:
其中,A i 表示自然语言文本的第i个字,B i 表示业务逻辑功能描述文本的第i个字,n表示总字数。
S3、当最高的所述第一相似度大于预设的相似度阈值时,获取第一相似度最高的所述业务逻辑功能描述文本对应的业务逻辑ID;
值得说明的是,自然语言文本分别与业务逻辑ID关联表中的每一个业务逻辑功能描述文本相比较,大部分情况下仅存在一个与自然语言文本相似度最高的业务逻辑功能描述文本,该相似度可以精确到小数点后三位,如果最高的第一相似度大于一个,不排除做原始数据的时候建立了两个非常相近的句子(业务逻辑功能描述文本),但这种情况功应该是非常接近的,选取任意一个都可以。可选地,所述相似度阈值为85%。
S4、从预先构建的业务逻辑库中,查找与所述对应的业务逻辑ID对应的xml文件,并返回所述xml文件,以利用所述xml文件对所述自然语言文本进行编程;其中,所述业务逻辑库中包括若干与所述业务逻辑ID对应的xml文件,所述xml文件包括业务逻辑的数据结构。
可以理解的是,在得到xml文件后,利用xml解释器对xml文件进行格式解读,以实现对所述自然语言文本的编程。
在本发明实施例中,利用余弦相似度算法,从actions.txt库中找出与待编程的自然语言文本相似度最高的业务逻辑功能描述文本,并把该业务逻辑功能描述文本对应的业务逻辑ID找出来,利用业务逻辑ID在业务逻辑库中找到对应的xml文件,并将其返回。本发明实施例生成业务逻辑的数据结构,能够实现对自然语言的编程,算力要求低,并且能够适用各种不同的场景。
在一可选实施例中,所述自然语言编程方法还包括:
当最高的所述第一相似度小于或等于所述相似度阈值时,获取所述自然语言文本的若干关键词;
具体地,对自然语言文本进行拆分处理和去除处理,例如,句子“我想执行一个泡茶的过程”拆分之后就是“我”、“想”、“执行”、“一个”、“泡茶”、“的”、“过程”等单字和词组;其中还包括后续处理不需要用的字或词,例如“我”、“的”,这种字或词对后面步骤的分析并没有帮助,将其去除。
利用预先训练好的组件索引模型,获取每一所述关键词对应的组件ID;
对于每一所述组件ID,利用预先训练好的ID关联模型,获取含有所述组件ID的所有业务逻辑ID,统计所有所述业务逻辑ID的总数量;
计算所述自然语言文本分别与含有每一所述组件ID的每一所述业务逻辑ID的业务逻辑功能描述文本的第二相似度;
根据所述总数量和所述第二相似度,计算得到含有每一所述组件ID的每一所述业务逻辑ID的分值;
当仅存在一个最高所述分值,且最高所述分值大于或等于预设的分值阈值时,返回分值最高的业务逻辑ID对应的xml文件。
示例性地,将所述总数量*0.5与所述第二相似度*0.5,计算得到含有每一所述组件ID的每一所述业务逻辑ID的分值;
为了更好理解分值的计算,进行以下说明:
对于组件A,利用ID关联模型,得到业务逻辑A和业务逻辑B,则表示业务逻辑A和业务逻辑B均含有组件A,此时,统计含有组件A的所有业务逻辑ID的总数量为2,则含有组件A的任一业务逻辑的分值为2*0.5+该业务逻辑与自然语言文本的第二相似度*0.5;可以理解的是,该第二相似度是计算自然语言文本分别与含有组件A的每一个业务逻辑的功能描述文本的相似度,与第一相似度的计算过程类似,在此不再进行赘述;
对于组件B,利用ID关联模型,得到业务逻辑A,则表示业务逻辑A含有组件B,此时,统计含有组件B的所有业务逻辑ID的总数量为1,则含有组件B的任一业务逻辑的分值为1*0.5+该业务逻辑与自然语言文本的第二相似度*0.5;可以理解的是,该第二相似度是计算自然语言文本分别与含有组件B的每一个业务逻辑的功能描述文本的相似度,与第一相似度的计算过程类似,在此不再进行赘述。
在又一可选实施例中,通过以下步骤得到训练好的组件索引模型:
将预先构建的组件ID关联表作为数据源,采用FST数据结构,得到训练好的组件索引模型;其中,所述组件ID关联表中包括若干组件ID,及与所述组件ID对应的关键词。
在一具体实施例中,将组件ID关联表作为数据源,采用FST数据结构,使用索引工具lucene,得到训练好的组件索引模型,能够加快索引速度,例如,以abaa caab vbabf三个字符串,生成FST结构如图2所示,以abab zabb ccbbf这三个字符串,生成FST结构如图3所示。
在又一可选实施例中,通过以下步骤构建组件ID关联表:
对所述组件描述文本进行拆词处理,得到所述组件的关键词;
利用所述组件ID及所述组件的关键词,得到组件ID关联表。
在一具体实施例中,首先对组件描述文本进行拆词处理,去掉没有价值的词,得到组件的关键词;接着利用该关键词构建组件ID关联表,例如“处理查询@@组件A”、“烧水@@组件B”,关键词和组件ID之间用@@进行分隔,保存到funcs.txt中,其中,在组件ID关联表中关键词和组件ID具有对应的关系。
在又一可选实施例中,通过以下步骤得到训练好的ID关联模型:
将预先构建的ID关联表作为数据源,采用键值对数据结构,得到训练好的ID关联模型;其中,所述ID关联表中包括若干组件ID,及与所述组件ID对应的业务逻辑ID。
在一具体实施例中,为了加快索引速度,利用组件和业务逻辑,构建ID关联表,例如“组件A 业务逻辑A”、“组件B 业务逻辑A”,保存到relevance.txt中;其中,“组件A 业务逻辑A”表示业务逻辑A包含组件A,“组件B 业务逻辑A”表示业务逻辑B包含组件B;在所述ID关联表中,所述组件ID与所述业务逻辑ID具有对应关系,表示业务逻辑ID的业务逻辑包含对应的组件ID的组件;
接着,将ID关联表作为数据源,采用键值对(KEY/VALUE)数据结构,使用工具BDB(Berkeley DB),得到训练好的ID关联模型。
在又一可选实施例中,所述自然语言编程方法还包括:
当存在两个或两个以上最高所述分值,或最高所述分值小于所述分值阈值时,选取所述分值最高的前m个业务逻辑进行分解,得到若干组件;其中,m>1;
将所述组件中数量最多的组件作为终点组件,根据其余所述组件出现在所述终点组件的前一位的频次,确定所述终点组件的前一位组件,将所述前一位组件更新为所述终点组件,继续确定所述终点组件的前一位组件,直至所述终点组件不存在前一位组件,得到位于数量最多的组件之前的所有组件;
将所述组件中数量最多的组件作为起点组件,根据其余所述组件出现在所述起点组件的后一位的频次,确定所述起点组件的后一位组件,将所述后一位组件更新为起点组件,继续确定所述起点组件的后一位组件,直至所述起点组件不存在后一位组件,得到位于数量最多的组件之后的所有组件;
利用数量最多的组件之前的所有组件、数量最多的组件和数量最多的组件之后的所有组件,构成新的业务逻辑;
对新的业务逻辑进行验证,返回验证正确的业务逻辑的xml文件。
在一具体实施例中,m=3,如图4所示,选取所述分值最高的前3个业务逻辑进行分解,得到若干组件;其中,组件B和组件C是基于组件索引模型得到的组件;然后随机选取分解后得到的组件中数量最多的组件B或组件C作为终点组件/起点组件,本实施例选取组件B作为终点组件/起点组件:
将组件B作为终点组件,出现在组件B的前一位的组件有组件A和组件E,组件A出现了两次,组件E出现了一次,因此,确定组件B的前一位组件为组件A,由于组件A的前一位没有组件,因此,结束以组件B为准向前推理的过程;
将组件B作为起点组件,出现在组件B的后一位的组件有组件C和组件D,组件C出现了两次,组件D出现了一次,因此,确定组件B的后一位组件为组件C,将组件C作为起点组件,出现在组件C的后一位组件有组件D和组件F,组件D出现了一次,组件F出现了两次,因此,确定组件C的后一位组件为组件F,由于组件F的后一位没有组件,因此,结束以组件B为准向后推理的过程;
构成新的业务逻辑如图5所示;
通过判断新的业务逻辑的输入输出参数个数和类似是否匹配,对新的业务逻辑进行验证,若验证正确,返回该业务逻辑的xml文件。
相较于现有技术的通过一个句子与代码进行神经网络训练以得到自然语言编程的直推结果,本发明实施例通过推理得到新的业务逻辑,能够得到创建数据源本身不存在的业务逻辑,更加灵活,而且相较于现有技术的句子越长,入参越大,算力要求越高,本发明实施例算力要求低。
本发明实施例所提供的一种自然语言编程方法,通过获取待编程的自然语言文本;计算所述自然语言文本分别与预先构建的业务逻辑ID关联表中的每一业务逻辑功能描述文本的第一相似度;其中,所述业务逻辑ID关联表中包括若干业务逻辑ID,及与所述业务逻辑ID对应的业务逻辑功能描述文本;当最高的所述第一相似度大于预设的相似度阈值时,获取所述第一相似度最高的所述业务逻辑功能描述文本对应的业务逻辑ID;从预先构建的业务逻辑库中,查找并返回与所述对应的业务逻辑ID对应的xml文件,以利用所述xml文件对所述自然语言文本进行编程,本发明实施例算力要求低,能够适用各种不同的场景。
本发明实施例提供一种自然语言编程装置,包括控制器,所述控制器被配置为:
获取待编程的自然语言文本;
计算所述自然语言文本分别与预先构建的业务逻辑ID关联表中的每一业务逻辑功能描述文本的第一相似度;其中,所述业务逻辑ID关联表中包括若干业务逻辑ID,及与所述业务逻辑ID对应的业务逻辑功能描述文本;
当最高的所述第一相似度大于预设的相似度阈值时,获取第一相似度最高的所述业务逻辑功能描述文本对应的业务逻辑ID;
从预先构建的业务逻辑库中,查找与所述对应的业务逻辑ID对应的xml文件,并返回所述xml文件,以利用所述xml文件对所述自然语言文本进行编程;其中,所述业务逻辑库中包括若干与所述业务逻辑ID对应的xml文件,所述xml文件包括业务逻辑的数据结构。
优选地,所述控制器还被配置为:
获取设计好的组件;其中,所述组件的结构包括:组件ID、组件名称、组件类别、组件内容、组件入参、组件出参及组件描述文本;
利用所述组件,构建业务逻辑;其中,所述业务逻辑的结构包括:业务逻辑ID、业务逻辑名称、业务逻辑类别、业务逻辑内容、业务逻辑入参、业务逻辑出参及业务逻辑功能描述文本;
利用所述业务逻辑ID及所述业务逻辑功能描述文本,得到业务逻辑ID关联表。
优选地,所述控制器还被配置为:
当最高的所述第一相似度小于或等于所述相似度阈值时,获取所述自然语言文本的若干关键词;
利用预先训练好的组件索引模型,获取每一所述关键词对应的组件ID;
对于每一所述组件ID,利用预先训练好的ID关联模型,获取含有所述组件ID的所有业务逻辑ID,统计所有所述业务逻辑ID的总数量;
计算所述自然语言文本分别与含有每一所述组件ID的每一所述业务逻辑ID的业务逻辑功能描述文本的第二相似度;
根据所述总数量和所述第二相似度,计算得到含有每一所述组件ID的每一所述业务逻辑ID的分值;
当仅存在一个最高所述分值,且最高所述分值大于或等于预设的分值阈值时,返回分值最高的业务逻辑ID对应的xml文件。
优选地,所述控制器还被配置为:
将预先构建的组件ID关联表作为数据源,采用FST数据结构,得到训练好的组件索引模型;其中,所述组件ID关联表中包括若干组件ID,及与所述组件ID对应的关键词。
优选地,所述控制器还被配置为:
对所述组件描述文本进行拆词处理,得到所述组件的关键词;
利用所述组件ID及所述组件的关键词,得到组件ID关联表。
优选地,所述控制器还被配置为:
将预先构建的ID关联表作为数据源,采用键值对数据结构,得到训练好的ID关联模型;其中,所述ID关联表中包括若干组件ID,及与所述组件ID对应的业务逻辑ID。
优选地,所述控制器还被配置为:
当存在两个或两个以上最高所述分值,或最高所述分值小于所述分值阈值时,选取所述分值最高的前m个业务逻辑进行分解,得到若干组件;其中,m>1;
将所述组件中数量最多的组件作为终点组件,根据其余所述组件出现在所述终点组件的前一位的频次,确定所述终点组件的前一位组件,将所述前一位组件更新为所述终点组件,继续确定所述终点组件的前一位组件,直至所述终点组件不存在前一位组件,得到位于数量最多的组件之前的所有组件;
将所述组件中数量最多的组件作为起点组件,根据其余所述组件出现在所述起点组件的后一位的频次,确定所述起点组件的后一位组件,将所述后一位组件更新为起点组件,继续确定所述起点组件的后一位组件,直至所述起点组件不存在后一位组件,得到位于数量最多的组件之后的所有组件;
利用数量最多的组件之前的所有组件、数量最多的组件和数量最多的组件之后的所有组件,构成新的业务逻辑;
对新的业务逻辑进行验证,返回验证正确的业务逻辑的xml文件。
本发明实施例所提供的一种自然语言编程装置10,通过获取待编程的自然语言文本;计算所述自然语言文本分别与预先构建的业务逻辑ID关联表中的每一业务逻辑功能描述文本的第一相似度;其中,所述业务逻辑ID关联表中包括若干业务逻辑ID,及与所述业务逻辑ID对应的业务逻辑功能描述文本;当最高的所述第一相似度大于预设的相似度阈值时,获取所述第一相似度最高的所述业务逻辑功能描述文本对应的业务逻辑ID;从预先构建的业务逻辑库中,查找并返回与所述对应的业务逻辑ID对应的xml文件,以利用所述xml文件对所述自然语言文本进行编程,本发明实施例算力要求低,能够适用各种不同的场景。
本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序;其中,所述计算机程序在运行时控制所述计算机可读存储介质所在的设备执行如上述实施例所述的自然语言编程方法。
参见图6,图6是本发明实施例提供的一种电子设备20的结构框图,所述电子设备20包括:处理器21、存储器22以及存储在所述存储器22中并可在所述处理器21上运行的计算机程序。所述处理器21执行所述计算机程序时实现上述自然语言编程方法实施例中的步骤。或者,所述处理器21执行所述计算机程序时实现上述各装置实施例中各模块/单元的功能。
示例性的,所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器22中,并由所述处理器21执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述电子设备20中的执行过程。
所述电子设备20可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述电子设备20可包括,但不仅限于,处理器21、存储器22。本领域技术人员可以理解,所述示意图仅仅是电子设备20的示例,并不构成对电子设备20的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述电子设备20还可以包括输入输出设备、网络接入设备、总线等。
所称处理器21可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器 (Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列 (Field-Programmable Gate Array,FPGA) 或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器21是所述电子设备20的控制中心,利用各种接口和线路连接整个电子设备20的各个部分。
所述存储器22可用于存储所述计算机程序和/或模块,所述处理器21通过运行或执行存储在所述存储器22内的计算机程序和/或模块,以及调用存储在存储器22内的数据,实现所述电子设备20的各种功能。所述存储器22可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器22可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card, SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
其中,所述电子设备20集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器21执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。
需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。
Claims (10)
1.一种自然语言编程方法,其特征在于,包括:
获取待编程的自然语言文本;
计算所述自然语言文本分别与预先构建的业务逻辑ID关联表中的每一业务逻辑功能描述文本的第一相似度;其中,所述业务逻辑ID关联表中包括若干业务逻辑ID,及与所述业务逻辑ID对应的业务逻辑功能描述文本;
当最高的所述第一相似度大于预设的相似度阈值时,获取第一相似度最高的所述业务逻辑功能描述文本对应的业务逻辑ID;
从预先构建的业务逻辑库中,查找与所述对应的业务逻辑ID对应的xml文件,并返回所述xml文件,以利用所述xml文件对所述自然语言文本进行编程;其中,所述业务逻辑库中包括若干与所述业务逻辑ID对应的xml文件,所述xml文件包括业务逻辑的数据结构。
2.如权利要求1所述的自然语言编程方法,其特征在于,通过以下步骤构建所述业务逻辑ID关联表:
获取设计好的组件;其中,所述组件的结构包括:组件ID、组件名称、组件类别、组件内容、组件入参、组件出参及组件描述文本;
利用所述组件,构建业务逻辑;其中,所述业务逻辑的结构包括:业务逻辑ID、业务逻辑名称、业务逻辑类别、业务逻辑内容、业务逻辑入参、业务逻辑出参及业务逻辑功能描述文本;
利用所述业务逻辑ID及所述业务逻辑功能描述文本,得到业务逻辑ID关联表。
3.如权利要求2所述的自然语言编程方法,其特征在于,所述自然语言编程方法还包括:
当最高的所述第一相似度小于或等于所述相似度阈值时,获取所述自然语言文本的若干关键词;
利用预先训练好的组件索引模型,获取每一所述关键词对应的组件ID;
对于每一所述组件ID,利用预先训练好的ID关联模型,获取含有所述组件ID的所有业务逻辑ID,统计所有所述业务逻辑ID的总数量;
计算所述自然语言文本分别与含有每一所述组件ID的每一所述业务逻辑ID的业务逻辑功能描述文本的第二相似度;
根据所述总数量和所述第二相似度,计算得到含有每一所述组件ID的每一所述业务逻辑ID的分值;
当仅存在一个最高所述分值,且最高所述分值大于或等于预设的分值阈值时,返回分值最高的业务逻辑ID对应的xml文件。
4.如权利要求3所述的自然语言编程方法,其特征在于,通过以下步骤得到训练好的组件索引模型:
将预先构建的组件ID关联表作为数据源,采用FST数据结构,得到训练好的组件索引模型;其中,所述组件ID关联表中包括若干组件ID,及与所述组件ID对应的关键词。
5.如权利要求4所述的自然语言编程方法,其特征在于,通过以下步骤构建组件ID关联表:
对所述组件描述文本进行拆词处理,得到所述组件的关键词;
利用所述组件ID及所述组件的关键词,得到组件ID关联表。
6.如权利要求3所述的自然语言编程方法,其特征在于,通过以下步骤得到训练好的ID关联模型:
将预先构建的ID关联表作为数据源,采用键值对数据结构,得到训练好的ID关联模型;其中,所述ID关联表中包括若干组件ID,及与所述组件ID对应的业务逻辑ID。
7.如权利要求3所述的自然语言编程方法,其特征在于,所述自然语言编程方法还包括:
当存在两个或两个以上最高所述分值,或最高所述分值小于所述分值阈值时,选取所述分值最高的前m个业务逻辑进行分解,得到若干组件;其中,m>1;
将所述组件中数量最多的组件作为终点组件,根据其余所述组件出现在所述终点组件的前一位的频次,确定所述终点组件的前一位组件,将所述前一位组件更新为所述终点组件,继续确定所述终点组件的前一位组件,直至所述终点组件不存在前一位组件,得到位于数量最多的组件之前的所有组件;
将所述组件中数量最多的组件作为起点组件,根据其余所述组件出现在所述起点组件的后一位的频次,确定所述起点组件的后一位组件,将所述后一位组件更新为起点组件,继续确定所述起点组件的后一位组件,直至所述起点组件不存在后一位组件,得到位于数量最多的组件之后的所有组件;
利用数量最多的组件之前的所有组件、数量最多的组件和数量最多的组件之后的所有组件,构成新的业务逻辑;
对新的业务逻辑进行验证,返回验证正确的业务逻辑的xml文件。
8.一种自然语言编程装置,其特征在于,包括控制器,所述控制器被配置为:
获取待编程的自然语言文本;
计算所述自然语言文本分别与预先构建的业务逻辑ID关联表中的每一业务逻辑功能描述文本的第一相似度;其中,所述业务逻辑ID关联表中包括若干业务逻辑ID,及与所述业务逻辑ID对应的业务逻辑功能描述文本;
当最高的所述第一相似度大于预设的相似度阈值时,获取第一相似度最高的所述业务逻辑功能描述文本对应的业务逻辑ID;
从预先构建的业务逻辑库中,查找与所述对应的业务逻辑ID对应的xml文件,并返回所述xml文件,以利用所述xml文件对所述自然语言文本进行编程;其中,所述业务逻辑库中包括若干与所述业务逻辑ID对应的xml文件,所述xml文件包括业务逻辑的数据结构。
9.一种电子设备,其特征在于,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器在执行所述计算机程序时实现如权利要求1~7任一项所述的自然语言编程方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的计算机程序;其中,所述计算机程序在运行时控制所述计算机可读存储介质所在的设备执行如权利要求1~7任一项所述的自然语言编程方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211395609.4A CN115437620B (zh) | 2022-11-09 | 2022-11-09 | 一种自然语言编程方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211395609.4A CN115437620B (zh) | 2022-11-09 | 2022-11-09 | 一种自然语言编程方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115437620A true CN115437620A (zh) | 2022-12-06 |
CN115437620B CN115437620B (zh) | 2023-03-28 |
Family
ID=84252172
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211395609.4A Active CN115437620B (zh) | 2022-11-09 | 2022-11-09 | 一种自然语言编程方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115437620B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103294470A (zh) * | 2013-05-27 | 2013-09-11 | 上海华兴数字科技有限公司 | 内嵌自然语言的编程语言系统 |
CN109032606A (zh) * | 2018-07-10 | 2018-12-18 | 北京小米移动软件有限公司 | 原生应用程序的编译处理方法、装置及终端 |
US20190129695A1 (en) * | 2017-10-31 | 2019-05-02 | Fujitsu Limited | Programming by voice |
CN110286910A (zh) * | 2019-06-28 | 2019-09-27 | 百度在线网络技术(北京)有限公司 | 文件移植方法、装置、设备和存储介质 |
CN110597501A (zh) * | 2019-08-09 | 2019-12-20 | 苏宁金融科技(南京)有限公司 | 一种基于强静态脚本语言的自然语言编程方法及装置 |
CN112306497A (zh) * | 2020-11-03 | 2021-02-02 | 高炼 | 一种将自然语言转化为程序代码的方法及系统 |
CN112329484A (zh) * | 2020-11-06 | 2021-02-05 | 中国联合网络通信集团有限公司 | 自然语言的翻译方法及装置 |
CN113535144A (zh) * | 2021-06-15 | 2021-10-22 | 北京彩彻区明科技有限公司 | 自然语言编程方法、装置、设备及存储介质 |
-
2022
- 2022-11-09 CN CN202211395609.4A patent/CN115437620B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103294470A (zh) * | 2013-05-27 | 2013-09-11 | 上海华兴数字科技有限公司 | 内嵌自然语言的编程语言系统 |
US20190129695A1 (en) * | 2017-10-31 | 2019-05-02 | Fujitsu Limited | Programming by voice |
CN109032606A (zh) * | 2018-07-10 | 2018-12-18 | 北京小米移动软件有限公司 | 原生应用程序的编译处理方法、装置及终端 |
CN110286910A (zh) * | 2019-06-28 | 2019-09-27 | 百度在线网络技术(北京)有限公司 | 文件移植方法、装置、设备和存储介质 |
CN110597501A (zh) * | 2019-08-09 | 2019-12-20 | 苏宁金融科技(南京)有限公司 | 一种基于强静态脚本语言的自然语言编程方法及装置 |
CN112306497A (zh) * | 2020-11-03 | 2021-02-02 | 高炼 | 一种将自然语言转化为程序代码的方法及系统 |
CN112329484A (zh) * | 2020-11-06 | 2021-02-05 | 中国联合网络通信集团有限公司 | 自然语言的翻译方法及装置 |
CN113535144A (zh) * | 2021-06-15 | 2021-10-22 | 北京彩彻区明科技有限公司 | 自然语言编程方法、装置、设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
佚名: ""自然"语言编程(NLC)的到来比你想象的要快", 《HTTPS://FLASHGENE.COM/ARCHIVES/243726.HTML》 * |
Also Published As
Publication number | Publication date |
---|---|
CN115437620B (zh) | 2023-03-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106649818B (zh) | 应用搜索意图的识别方法、装置、应用搜索方法和服务器 | |
CN109299280B (zh) | 短文本聚类分析方法、装置和终端设备 | |
CN112214593A (zh) | 问答处理方法、装置、电子设备及存储介质 | |
CN110297893B (zh) | 自然语言问答方法、装置、计算机装置及存储介质 | |
CN110162768B (zh) | 实体关系的获取方法、装置、计算机可读介质及电子设备 | |
CN109710732B (zh) | 信息查询方法、装置、存储介质和电子设备 | |
CN117520523B (zh) | 数据处理方法、装置、设备及存储介质 | |
CN110147494B (zh) | 信息搜索方法、装置,存储介质及电子设备 | |
CN111984851A (zh) | 医学资料搜索方法、装置、电子装置及存储介质 | |
CN115795061B (zh) | 一种基于词向量和依存句法的知识图谱构建方法及系统 | |
CN112199958A (zh) | 概念词序列生成方法、装置、计算机设备及存储介质 | |
CN112632261A (zh) | 智能问答方法、装置、设备及存储介质 | |
CN110795544A (zh) | 内容搜索方法、装置、设备和存储介质 | |
CN110738059A (zh) | 一种文本相似度计算方法及系统 | |
CN113590811A (zh) | 文本摘要生成方法、装置、电子设备及存储介质 | |
CN117520503A (zh) | 基于llm模型的金融客服对话生成方法、装置、设备及介质 | |
CN115840808A (zh) | 科技项目咨询方法、装置、服务器及计算机可读存储介质 | |
CN114490984A (zh) | 基于关键词指导的问答知识抽取方法、装置、设备及介质 | |
CN111401034A (zh) | 文本的语义分析方法、语义分析装置及终端 | |
CN117194616A (zh) | 一种垂域知识图谱的知识查询方法、装置、计算机设备和存储介质 | |
CN115437620B (zh) | 一种自然语言编程方法、装置、设备及存储介质 | |
CN113486169B (zh) | 基于bert模型的同义语句生成方法、装置、设备及存储介质 | |
CN115859999A (zh) | 意图识别方法、装置、电子设备及存储介质 | |
CN112597287B (zh) | 一种语句处理方法、语句处理装置及智能设备 | |
CN114706841A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |