CN115437626A - 一种基于自然语言的ocl语句自动生成方法和装置 - Google Patents
一种基于自然语言的ocl语句自动生成方法和装置 Download PDFInfo
- Publication number
- CN115437626A CN115437626A CN202210983856.XA CN202210983856A CN115437626A CN 115437626 A CN115437626 A CN 115437626A CN 202210983856 A CN202210983856 A CN 202210983856A CN 115437626 A CN115437626 A CN 115437626A
- Authority
- CN
- China
- Prior art keywords
- language
- model
- sentence
- ocl
- object constraint
- 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
- 238000000034 method Methods 0.000 title claims abstract description 64
- 238000012549 training Methods 0.000 claims abstract description 46
- 230000006870 function Effects 0.000 claims description 26
- 238000003860 storage Methods 0.000 claims description 12
- 238000004590 computer program Methods 0.000 claims description 9
- 238000005070 sampling Methods 0.000 claims description 9
- 238000009826 distribution Methods 0.000 claims description 7
- 238000011156 evaluation Methods 0.000 claims description 7
- 238000010276 construction Methods 0.000 claims description 6
- 238000013135 deep learning Methods 0.000 abstract description 23
- 230000002349 favourable effect Effects 0.000 abstract 1
- 238000013519 translation Methods 0.000 description 37
- 239000013598 vector Substances 0.000 description 15
- 230000008569 process Effects 0.000 description 11
- 230000000694 effects Effects 0.000 description 10
- 238000005516 engineering process Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 8
- 238000011161 development Methods 0.000 description 7
- 230000006872 improvement Effects 0.000 description 7
- 238000012545 processing Methods 0.000 description 7
- 238000013528 artificial neural network Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 6
- 238000006243 chemical reaction Methods 0.000 description 6
- 230000014509 gene expression Effects 0.000 description 6
- 238000003062 neural network model Methods 0.000 description 6
- 238000005457 optimization Methods 0.000 description 6
- 238000011160 research Methods 0.000 description 6
- 238000004458 analytical method Methods 0.000 description 5
- 238000002474 experimental method Methods 0.000 description 5
- 238000000605 extraction Methods 0.000 description 5
- 238000003058 natural language processing Methods 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 230000004913 activation Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 239000011159 matrix material Substances 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000007781 pre-processing Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000013136 deep learning model Methods 0.000 description 2
- 238000002372 labelling Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 235000002567 Capsicum annuum Nutrition 0.000 description 1
- 240000004160 Capsicum annuum Species 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013527 convolutional neural network Methods 0.000 description 1
- 230000009193 crawling Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000008451 emotion Effects 0.000 description 1
- 239000010931 gold Substances 0.000 description 1
- 229910052737 gold Inorganic materials 0.000 description 1
- 230000002779 inactivation Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000013441 quality evaluation Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000005477 standard model Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000013179 statistical model Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer 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
- G06F8/35—Creation or generation of source code model driven
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/30—Semantic analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/10—Requirements analysis; Specification techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/425—Lexical analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Machine Translation (AREA)
Abstract
本发明实施例提供了一种基于自然语言的OCL语句自动生成方法和装置,其中,该方法包括以下步骤:将自然语言文本构造成下游任务;将所述下游任务依次输入词法处理器和语言模型,所述语言模型生成多个候选的对象约束语言语句,其中,所述语言模型是通过改进预训练语言模型得到的;从多个候选的所述对象约束语言语句中,将质量最高的所述对象约束语言语句确定为所述自然语言文本的目标对象约束语言语句进行输出。该方案基于深度学习的方法实现了从自然语言到OCL语句的生成,将质量最高的OCL语句确定为自然语言文本的目标OCL语句,有利于进一步提高OCL语句的生成质量。
Description
技术领域
本发明涉及计算机技术领域,特别涉及一种基于自然语言的OCL语句自 动生成方法和装置。
背景技术
对象约束语言(Object Constraint Language,OCL),是一种形式规范语言, 描述适用于统一建模语言(Unified Modeling Language,UML)的模型的规则, 由IBM开发,在1997年作为UML的子标准被对象管理组织(Object Management Group,OMG)接纳。OCL语言与UML经历了多次版本迭代, 目前,最新的版本为2.4。OCL的作用包括在UML的多种元模型上提供精确 的模型约束、系统操作和对象查询表达。目前,OCL的主要应用于统一建模 语言,模型驱动架构(Model-driven architecture,MDA)和标准模型转换语言 (Query/View/Transformation,QVT)等,发挥着重要作用。在实际的生产场景当 中,OCL主要应用于诸如用于复杂工程的需求建模、大规模测试用例生成等 方面,起到包括精确约束模型,解释上下歧义和查询模型对象的作用。近年来 各种建模表达方法日新月异,但OCL仍然占据着主流应用地位。
尽管OCL在模型驱动开发与软件建模之中意义非凡,但OCL在现实之中 的应用与推广却遇到了许多困境。其一是OCL的本身使用难度较大。尽管OCL 在设计时试图在形式语言的严谨性和精确性与自然语言的易用性保持平衡,以 在能够完成其准确的语义表述同时满足更多的潜在开发者,但不可避免地, OCL本身具有语法复杂、约束细致的特点;其次,在书写约束时也容易由于 细小的失误引起不易察觉的错误约束;另外,学界也认为软件从业者普遍由于 不熟悉OCL的语法而回避它,限制了其进一步应用。其二是OCL的编写在模型驱动架构的大型工程之中耗费过多时间。在复杂的建模工程之中,用于编写 模型约束的OCL语句的时间占到开发时间的50%以上,是开发成本中的重要 部分,同样制约了OCL的进一步应用与发展。其三是OCL学习不易。目前, 市面上可供学习的OCL教程较为少见,支持文档也主要是OMG官方文档, 数量较少,可供学习的来源不多。单纯靠人工书写为模型提供所需的OCL约 束很难满足,所以需要研究一种能够自动生成所需OCL代码的方法,来满足 开发大型模型时的需要。
代码自动生成是软件工程中增进自动程度和最终质量的重要方式。代码生 成,即利用某些技术从一定来源生成所需代码,从而满足开发者的需求,实现 自动编程的目的。目前,代码生成技术按方法主要可以分为三个分支:基于模 型生成,基于规则翻译和基于深度神经网络生成。
基于模型生成的代码生成是OMG提出模型驱动架构的内容,这种代码生 成方法希望能够在开发大型软件项目时首先为之定义抽象的模型,描述具体的 业务关系和系统边界等内容,为项目提供约束和规格,这一阶段的模型是独立 于技术与平台的。而后通过代码生成器将模型转化为特定于平台与语言的具体 业务代码,从而提升了软件开发的自动化程度与拓展性。基于规则翻译是代码 生成领域的一种主流技术,通过预先编写一定的规则对受限的输入转化为某种 特定的程序语言。基于规则的代码生成技术对于预设的输入有着良好的翻译能 力,能够高效的完成从自然语言到目标代码的转换。然而,用于代码转换的规 则需要开发者逐一编写,且对于输入和领域有着严格的要求,在实际应用之中 受着较大限制。基于规则翻译的代码生成具有广泛的应用,Park等人基于XML 规则实现了C++的代码生成;Koziolek等人基于规则的控制逻辑生成方法 Cayenne从需求文档直接生成标准化编程语言的系统代码。基于深度神经网 络的代码生成在代码生成这一领域属于较新的方向,这一方向将代码生成归类 于机器翻译的一种特殊形式,目的是通过自然语言生成符合一定语法和文法的 代码,从而能够被编译器识别和运行。从这一领域开创者统计机器翻译模型(statistical machine translation,SMT)到基于Seq2Seq框架的神经机器翻译模 型(neural machine translation,NMT),基于深度学习的代码生成取得了长足 的发展。在这一研究框架下,学界通过提出不断迭代的网络模型以改进生成效 果,如通过长短期记忆神经网络(Long-Short Term Memory,LSTM)生成多 层代码树的Seq2Tree模型,采用Transformer架构在分析含有远依赖关系的输 入句TreeGen模型等。得益于开源社区和开源代码平台,大量公开代码及对应 自然语言注释为深度学习提供了可观的训练语料。目前,通过自然语言生成所 需目标代码已达到相当的可用性。
结合上述已有背景,我们希望能够基于深度学习的方法来实现OCL语句 的生成。相比较于开发者手工书写,代码自动生成所产生的代码无疑能够极大 提高效率与正确性;同时,大量开源代码与对应注释的公开,使得收集适用的 数据集对深度神经网络模型进行训练具有很高的可行性。因此,通过深度学习 实现从自然语言到OCL语句生成可以有力的对这一问题进行解决。
目前,国内外研究现状是,从自然语言实施代码生成的技术主要可以分为 基于规则翻译和通过深度学习实现这两种,而目前对于从自然语言到OCL语 句生成的研究主要以前者为主,即以语义翻译和解释为核心,而应用深度学习 来进行这一项任务的尚属空白。下面对于这两种方法的内容进行介绍并进行对 比。
基于规则翻译从自然语言生成OCL这一手段有着较长的研究历史,也是 很长一段时间对于自然语言处理的主要办法,并且在现在仍在不断发展完善。 基于规则翻译的具体手段较多,但一般可以归纳为三步,即:
(1)解析文本,提炼语法成分
这一步需要依赖已有的工具来分析句子,识别出句子之中可能的角色、动 作、约束以及运算符,用于下一步选择规则与进行翻译。I.S.Bajwa等人在2010 年的工作中使用了LESSA(用于语义分析的语言工程系统)方法对自然语言 进行语义分析,将句子划分为树状层级关系,并生成句子对应的语法树,如图1。对于句子中的事实类型进行再次提取,对于词语和概念再次合并划分作为 下一阶段的输入。C.Wang等人在2018年的工作之中就是使用了语义角色标 记(Semantic Role Labeling,SRL)工具集CNP(CogComp NLP pipeline)对输入 句子进行预处理,识别词语在句子中的作用,包括动作及其发出者和承受者。 对于句子中的词语根据分析进行不同的标注,选择要出现在OCL语句之中的 运算符,在此基础上,还使用了包括VerbNet和WordNet词典数据库来确定 两个语义相似检测,使用包括闭包识别等技术合并相同的实体,动作与模式, 从而提高模型的精确程度。
(2)根据解析结果,选择使用的翻译规则
这一步骤往往是生成工作的核心。根据前文之中识别的语法成分,生成软 件将会从内置的转换规则之中选择出最优结果,并用此生成OCL句子。在C. Wang等人的工作之中,针对前文所识别出的左侧变量、运算符、选择元素和 右侧变量作为考虑因素,选择适用的生成规则。而在I.S.Bajwa等人的工作之 中,将识别到的语义成分按照SBVR(Semantics ofBusiness Vocabulariesand Business Rules,业务词汇和业务规则的语义)中的语义公式将识别到的语法成 分转化为SBVR表达式。这一步是基于规则翻译工作的重点,能否编写准确的 规则与选择适用的规则直接决定了对于自然语言输入约束的需要与生成的质 量。
(3)实施翻译、优化并输出
根据(1)之中识别的角色和动作和(2)之中选择的规则,生成软件生成 OCL语句生成并进行可能的优化。在C.Wang等人的OCLgen之中,生成若 干OCL语句而后再根据评分标准选择最优者进行输出,最终实现了测试集上 生成约束75%的正确性。而在I.S.Bajwa的工作之中,则选择了将SBVR模 型中提取类,方法与属性,映射到OCL语句中的上下文,不变体与前后条件, 并满足OCL的语法要求。这一步往往根据应用场景有着较多的调整。
概览以上基于规则的OCL生成工作,我们可以从其内容上看到这一方法 的局限性:
(1)依赖语法解析
不论是使用第三方语义角色标记工具包还是使用自然语言分析规范,对于 句子内容的识别都受到工具的限制,无法对于应用场景实现针对性的调整,且 在大多数实验环境下识别包含大量动词和量词的句子时性能差。
(2)依赖固定的转换规则
在上述工作之中,转换规则硬编码在生成软件本身之中,高度依赖开发者 的编写。此外,固定的转换规则导致在不同应用背景之中迁移的灵活性较低, 开发成本大,输入限制较高。C.Wang的OCLgen工具的高精确度本身也只能 在预期的测试用例生成上达到。
(3)无法自动调整学习
基于转换规则的翻译流程缺乏有效的反馈-调整机制,工作过程之中不能 优化生成过程本身,所有的调整都依赖于软件开发者的调试。而在实际的OCL 生成应用场景中,开发者与使用者往往是不同的对象,这无疑增大了提升其易 用性的难度。
比较基于规则翻译的代码生成,与以深度学习为核心的代码生成,对比其 技术细节与优势劣势,对研究现状进行总结,见表1。
表1
从自然语言到OCL生成本质属于Seq2Seq任务,即输入序列到输出序列。 该领域是深度学习已经卓有成效的一个领域,也有许多相关工作在代码生成这 一领域做出贡献,典型的应用场景包括文本翻译、代码生成、文献摘要等。
基于深度学习的代码生成相比较基于规则的代码生成有着诸多优势。首先, 深度学习的神经网络模型采用了完全不同的方法来理解句子和词语,将句子识 别为词法单元而后通过词嵌入技术转化为向量,参加之后的运算与推理,而非 直接通过若干规则进行识别,保障了信息的完整性与知识的进一步传播。其次, 深度学习网络模型的参数可以随着训练语料的传播而进行优化,不依赖于固定 的规则,选取适当的语料进行训练就可以提升才某一领域的能力,在优化性与 可迁移性上也有着令人满意的表现。
目前,于代码生成应用最广泛的深度学习架构是Transformer架构。 Transformer是近年来自然语言处理最大的突破之一,相较于其前辈RNN(循 环神经网络),LSTM(长短期记忆网络)在速度、效果和复杂性上取得了突 破,在如NL2DSL(自然语言到领域专属语言),如SQL,NL2GPL(自然语言 到通用编程语言),如Python,取得了杰出的成果,且具有通用性强、更加灵 活等优点。Sun等人的TreeGen通过以Transformer架构的神经网络在远依赖 关系上取得了突破,并通过引入AST(Abstract Syntax Tree,抽象语法树)于 网络的Decoder(解码器),在HearthStone这一数据集上实现了自然语言到 Python代码的生成,并在准确性与时间效率上相较于传统方法CNN、RNN得 到了改善;Gemmell等人在Transformer的Decoding阶段引入相关性反馈,通 过打分实现了更好的自然语言-Python生成结果。此外,GNN在处理具有复杂 关系的信息时展现出了良好的性能,特别是在特征的提取、知识的推理、传播 和学习的结构性上具有很强的优势,展现出了应用于代码生成这一领域的巨大潜力,尽管如此,目前仍然没有基于深度学习的自然语言到OCL生成的成熟 解决方案。
发明内容
本发明实施例提供了一种基于自然语言的OCL语句自动生成方法,以解 决现有技术中没有基于深度学习的自然语言到OCL生成的成熟解决方案的技 术问题。该方法包括:
将自然语言文本构造成下游任务;
将所述下游任务依次输入词法处理器和语言模型,所述语言模型生成多个 候选的对象约束语言语句,其中,所述语言模型是通过改进预训练语言模型得 到的;
从多个候选的所述对象约束语言语句中,将质量最高的所述对象约束语言 语句确定为所述自然语言文本的目标对象约束语言语句进行输出。
本发明实施例还提供了一种基于自然语言的OCL语句自动生成装置,以 解决现有技术中没有基于深度学习的自然语言到OCL生成的成熟解决方案的 技术问题。该装置包括:
任务构造模块,用于将自然语言文本构造成下游任务;
语句生成模块,用于将所述下游任务依次输入词法处理器和语言模型,所 述语言模型生成多个候选的对象约束语言语句,其中,所述语言模型是通过改 进预训练语言模型得到的;
语句确定模块,用于从多个候选的所述对象约束语言语句中,将质量最高 的所述对象约束语言语句确定为所述自然语言文本的目标对象约束语言语句 进行输出。
本发明实施例还提供了一种计算机设备,包括存储器、处理器及存储在存 储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时 实现上述任意的基于自然语言的OCL语句自动生成方法,以解决现有技术中 没有基于深度学习的自然语言到OCL生成的成熟解决方案的技术问题。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介 质存储有执行上述任意的基于自然语言的OCL语句自动生成方法的计算机程 序,以解决现有技术中没有基于深度学习的自然语言到OCL生成的成熟解决 方案的技术问题。
与现有技术相比,本说明书实施例采用的上述至少一个技术方案能够达到 的有益效果至少包括:基于深度学习的方法实现了从自然语言到OCL语句的 生成;并通过对预训练语言模型改进得到了语言模型,提升了语言模型的生成 质量,并通过语言模型生成多个候选的OCL语句,将质量最高的OCL语句确 定为自然语言文本的目标OCL语句,有利于进一步提高OCL语句的生成质量。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使 用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些 实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可 以根据这些附图获得其它的附图。
图1是一种句子对应的语法树的示意图;
图2是本发明实施例提供的一种基于自然语言的OCL语句自动生成方法 的流程图;
图3是本发明实施例提供的一种实施上述基于自然语言的OCL语句自动 生成方法的功能示意图;
图4是本发明实施例提供的一种实施上述基于自然语言的OCL语句自动 生成方法的流程示意图;
图5是本发明实施例提供的一种使用前缀完成多任务的示意图;
图6是本发明实施例提供的一种词法分析器处理过程的示意图;
图7是本发明实施例提供的一种计算机设备的结构框图;
图8是本发明实施例提供的一种基于自然语言的OCL语句自动生成装置 的结构框图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施方式和 附图,对本发明做进一步详细说明。在此,本发明的示意性实施方式及其说明 用于解释本发明,但并不作为对本发明的限定。
考虑到目前基于深度学习的代码生成进展和自然语言到OCL语句生成这 一问题的开发难度,输入限制,应用场景等方面仍有很大改进和优化空间。在 调查并比较了这一领域的相关任务后,我们发现来自统一建模组织的官方文档 和RM2PT项目中有大量自然语言和对应OCL语句的语料。这些语料由专业 人士编写并经过质量审核。因此,提出了一种基于自然语言的OCL语句自动 生成方法,选择深度神经网络模型来实现自然语言到OCL语句的生成,借助 训练语料中蕴含的知识与结构化信息达到生成OCL语句的目的,并通过模型的完善、调整和优化以及不断的训练实现更高的通用性与更强的适用空间。
在本发明实施例中,提供了一种基于自然语言的OCL语句自动生成方法, 如图2所示,该方法包括:
步骤S201:将自然语言文本构造成下游任务;
步骤S202:将所述下游任务依次输入词法处理器和语言模型,所述语言 模型生成多个候选的OCL语句,其中,所述语言模型是通过改进预训练语言 模型得到的;
步骤S203:从多个候选的OCL语句中,将质量最高的OCL语句确定为 所述自然语言文本的目标OCL语句进行输出。
由图2所示的流程可知,与现有技术相比,本说明书实施例采用的上述至 少一个技术方案能够达到的有益效果至少包括:基于深度学习的方法实现了从 自然语言到OCL语句的生成;并通过对预训练语言模型改进得到了语言模型, 提升了语言模型的生成质量,并通过语言模型生成多个候选的OCL语句,将 质量最高的OCL语句确定为自然语言文本的目标OCL语句,有利于进一步提 高OCL语句的生成质量。
具体实施时,实施上述基于自然语言的OCL语句自动生成方法的总体技 术路线如图3所示。通过对预训练语言模型进行改良与训练得到本申请提出的 TransOCL模型(即上述语言模型)。通过将自然语言构造成类似预训练阶段的 范式下游任务,之后将其输入词法处理器和TransOCL模型。TransOCL模型会 根据生成策略生成多个候选的OCL语句,通过质量评估,将多个候选的OCL 语句中质量最高、最优的OCL语句确定为目标OCL语句,最优结果输出,得到 自然语言的目标OCL语句。
具体实施时,考虑到目前公开的自然语言-OCL语句从质量与数量上对我 们制作的数据集,OCLpairs的规模进行了限制,我们采用在预训练模型上微 调这一在自然语言处理领域常见的模式实施从自然语言到OCL语句的生成。 目前,主流的预训练模型是由拥有充沛算力和数据集的大型公司在完成预训练 阶段后公开,其他研究者可以通过直接部署模型参数的方式使用预训练模型, 直接对于下游任务的应用做出实质进展。本申请采用了这种方式,使用公开的 预训练模型作为代码生成的基准。
本申请可以采用CodeT5作为基准预训练模型,这是一个由YueW等人于 2021年提出的在代码相关任务的预训练编码器-解码器模型,在代码理解和代 码生成展现出了良好的效果。在预训练阶段,它采用了包括标识符感知与恢复 和编程语言于自然语言对齐等任务进行不同策略的训练,最终在代码总结,生 成,翻译和细化等任务上达成了SOTA的效果。
本预训练模型采用T5(Transfer Text-to-Text Transformer)深度神经网络 架构,这是一个Google在2020年提出的致力于实现多任务的文本到文本的 Transformer,对自然语言处理这一领域的经典任务,包括翻译,总结,情感分 类和语义相似检测等都达到了最先进的效果,对于文本相关输入具有强大的处 理能力。
本预训练模型采取了CodeSearchNet作为预训练数据集。这是一个用于评 估代码语义搜索的大型多语言数据集,包含着Java,Python和PHP等六种语 言,超过三百万条样本。与OCLpairs类似,其中的自然语言包括专家相关注 释与从相关文档中自动抓取的文本,具有良好的可迁移性。
具体实施时,在上述基于自然语言的OCL语句自动生成方法中,自然语 言到OCL语句的生成流程如图4所示,从自然语言到OCL语句的生成经过下 游任务构造,Tokenizer(词法处理器)处理、模型编码、模型解码、输出与反 向传播和Tokenizer解码等多个步骤。下面将对其中的主要步骤进行介绍。
下游任务构造:
通过一个统一的模型在不同的下游任务实现良好的效果,是T5架构作为 一个多任务模型优势之一。在实际工作中,需要对输入的文本针对不同的下游 任务进行不同的下游任务构造,以在微调训练阶段实现专门任务的专门训练与 生成,从而达到更好的效果。
与提示学习(Prompt Learning)的理念类似,对于T5为架构的语言模型 的输入预处理使得在微调阶段的各种下游任务成为了类似于预训练任务的形 式。作为预训练模型,本语言模型的网络层参数性能良好,可以在标识符识别 和跨语言对齐这样的预训练任务上实现非常好的拟合表现,但由于下游任务种 类繁多,我们需要在当前语言模型的预训练参数做出合适的微调,使得其能够 较好地适应特定的下游任务。而通过对于输入的预处理来构造相似的任务形式, 就是对输入进行预处理的目的与手段。
如图5所示,使用前缀完成多任务的示意,通过对于输入文本进行下游任 务构建,添加不同的前缀,来实现不同下游任务的训练与实施。例如,通过对 文本添加前缀“translate English to German”(翻译英语到德语)来使得模型完 成翻译任务并特定到语种;通过对文本添加“summarize”(总结)来使得模型 完成文本总结任务。值得一提的是,下游任务的形式不一定需要特别的语义, 例如图5中的“stsb”前缀,实际上代表“TheSemantic Textual Similarity Benchmark”(语义文本相似性基准测试)。这一任务要求对输入的两个句子进 行语义相似检测评分,输出从0.0到5.0之间的一个评分。对于这一前缀,而 从字面上是无法得知其具体任务的。因此,前缀作为超参数的一种,表示任务 形式,仅要求对于特定的任务实行某一固定的前缀即可。
通过脚本将带生成输入构建为统一的下游任务,添加某一前缀,将样本输 入后续的组件与网络中,对模型进行训练、验证与测试。并进行对照实验,选 取性能更好的前缀作为提示,确定模型的任务形式。
词法分析器处理:
具体实施时,预训练模型通常指代带有确定参数和一定结构的神经网络模 型。但在实际应用中,预训练模型往往还配有相应的词法分析器。本预训练模 型的词法分析器是Roberta Tokenizer,是一个采用字节级别BPE编码的词法分 析器,可以通过有效的合并策略来构建词表中的语法单元。
将文本转化为语言模型可以识别与接收的数据形式,是词法分析器所完成 的任务。在这一阶段中,词法分析器会将句子按照预设的字典,将输入的句子 拆分为多个字典中的token(词法单元),并输出对应的词法单元的索引,并将 索引序列按照规定的长度进行填补(Padding)或截断(Truncation),使得不 同长度的输入文本句子能够转化为统一长度的向量,被模型接收。其工作流程 如图6所示。
如图6所示,词法处理器首先将输入文本按照词表转化为词法单元列表(Tokens),其中,字符是词法处理器用来表示空格的字节级别字符,由 于转义显示成了此字符,与实际语义无关。而后,词法分析器将词法单元列表 按照词表转化为对应序列,用数字表示对应词法单元。其中,“Input Ids”是词 法单元对应的索引,而“AttentionMask”(注意力掩码)是对于填充(padding) 步骤辅助,用于提醒模型那些索引具备实际意义。在此阶段,词法分析器会为 这一序列插入两个特殊词法单元,对应图中“Input Ids”序列的“1”和“2”, 对应的词法单元是<SOS>和<EOS>,意为序列开始和序列结束。在此阶段后,词法分析器会将序列填补到指定的长度,输入索引“Input Ids”序列的中的“0” 即起到占位作用,而注意力掩码也是用对应位为“0”来提示模型,这一位的 索引不具备实际意义。
在实际的生成与训练中,这一步输入的句子为多个句子,形成 [batch_size,Max_length]的向量输入下一阶段模型。其中,batch_size是模型训 练时的批大小,即同一批句子的数量;Max_length为限制的最大句子长度。
模型编码器阶段:
具体实施时,在得到了输入对应的词法单元索引后,在模型编码器阶段, 模型开始对其进行进一步处理。在这一阶段,模型对于输入的处理根据目的大 致可以分为句子词嵌入处理和自注意力感知提取特征两个阶段。需要注意的是, 这两个阶段并非完全独立,而是彼此有所重叠的。
词嵌入阶段的目的是获取不同词法单元所对应的高维向量表示,以得到不 同词汇之间的关系与特征。在词嵌入阶段,如图4中第三步所示,模型会将输 入的词法单元索引输入一个vocab_size*d_model矩阵,将输入索引对应的向量 输出,作为此索引的向量级别表示。
值得注意的是,在传统的Transformer中,位置嵌入这一步往往和词嵌入 先后进行,而本模型的位置嵌入并非如此。尽管T5同样以Transformer架构为 基础,但其位置嵌入无论是方法还是步骤都有所不同。绝对位置编码,也称为 为Sinusoidal位置编码,是将位置编码(Positional Encoding)的计算在词嵌入 向量之后进行,将其按照相对位置计算出每一个词法单元的位置编码,如式(1), 再与其对应嵌入词向量相加得到实际使用的词向量表示,如式(2),进行后续 计算。式(1)中的pos为对应词法单元的位置,2i与2i+1分别是其位置处于 奇偶数的另一种表示,dmodel是模型的超参数。
Tokenembedding=Token+PE (2)
而在T5中,采用了相对位置嵌入的方式。这一步在第一个Encoder Block 实行。T5的位置嵌入思想是,认为位置嵌入仅与实施注意力机制时的两个元 素(i,j)有关,因此训练一个Embedding矩阵获得不同元素的相对位置关系, 如式(3),将其称为位置偏置(Position Bias)。将得到的位置向量与计算的注 意力分数相加,如式(4),从而完成了位置嵌入这一步骤。
PB(i,j)=Embedding(i,j) (3)
Attention(i,j)=Attention(i,j)+PB(i,j) (4)
在编码阶段,模型将采用12个类似的编码器块,用于从输入中提取特征 以获得信息,从而在解码器中实现更好的生成效果。如图4所示,每一个编码 器块的输出hidden_state需要分别经过自注意力层Attention,正则化层fn,激 活层fr等处理得到。其中,设每个编码器块的输入为Input,则
Q,K,V=Input*LinerQ,K,V (5)
hidden_state=fn(fr(fn(Attention))) (7)
其中,Q,K,V是用于计算注意力得分的三个矩阵,他们由编码器块内部不 同的矩阵与输入相乘得到,如式(5);注意力得分由三个矩阵Q,K,V进行如 式(6)运算得到,可以使得模型针对不同的输入关注句子中不同的部分,从 而更好的提取特征;最终输出hidden_state由自注意力得分Attention经过正则 化和激活得到,如式(7)。其中,fn表示正则化处理,包括层标准化处理与随 机失活处理,可以使得模型在拟合的同时,保持泛化能力,避免过拟合。fr表示激活函数Relu,可以为模型引入非线性因素,更好的拟合模型特征。某 一编码器块的输出hidden_state会作为下一编码器块的输入,进行深度提取。
值得注意的是,位置偏置处理仅在第一个编码器块中实施,作为位置嵌入 的一部分;在输出编码器前,hidden_state还将经过一次额外的fn运算处理,输 入模型的解码器,作为模型生成对应OCL语句时的重要参考。
模型解码器阶段:
具体实施时,模型的解码器构造与模型的编码器类似,共享一个相同的Embedding层,主要的区别在于其注意力模块不是编码器中的自注意力,而是 综合了解码器输入与编码器输入的hidden_state的交叉注意力。限于篇幅,本条 不会对解码器构造进行详细说明,而主要会对模型的解码工作阶段进行阐释。
在解码器中,模型在这一阶段会逐token地生成目标OCL语句,从模型 来看,是逐词向量地生成目标向量序列。如图4中步骤4,是这一阶段工作的 示意图。模型的解码器接受编码器的输出hidden_state作为注意力机制的Q,V 矩阵,同时,解码器会接受解码器初始输入<SOS>Start of Sequence, 一个代表着序列开始的特殊词法单元。经过解码,输出即图中 代表self.的向量。此段的输出会作为下一阶段的输入,循环往复生成,直到生 成<EOS>(表示序列结束的特殊词法单元)或到达结束。
在生成过程中,解码器得到当前生成结果作为输入,可以获得若干个下一 候选词法单元及其概率,这个问题类似传统的搜索问题,即在有限的搜索空间 以更低代价获取更优解。搜索策略的选择直接决定解码阶段的生成质量,从而 影响整个模型的性能。在模型的朴素解码方式中,会选择贪婪搜索,即在选择 下一个词法单元时,总是会选择概率最大的选项作为策略。
贪婪搜索显然无法保证这样的目的,一种相对更优的方式被称为波束搜索。 波束搜索得名于其会同时进行多个“束”的搜索,即始终考虑α个较优解,对 于当前结果Xn,计算所有下一步生成结果的条件概率P(xi|Xn),保留前α个。 这样,考虑到多步的条件概率,当前的非最优解就有可能在下面的阶段具有更 大的生成概率,在搜索过程中保留了更大的可能搜索空间。在耗费空间更多的 同时,波束搜索的结果保证不差于贪婪搜索。
另一种思路是在生成时进行随机采样。Top K采样法是一种随机采样的方 法面对候选词法单元时,取概率最大的前k个词法单元,作为可能 的搜索空间,将其概率在新空间中重新标准化,而后随机生成。类似的还有一 种采样策略,Top P,选取若干个词法单元,直到他们的生成概率相加超过P。
输出与参数调整:
具体实施时,这一阶段是模型输出前的最后一步。在这一步中,如图4 步骤5所示,模型解码器生成的句子词向量logits经过模型头模块转换,得到 对应的词法单元索引。在训练时,将输出的词法单元索引与样本对应的OCL 语句的词法单元索引进行对比,使用损失函数计算出损失,反向传播更新模型 参数。
模型头是深度学习模型之中为了适应不同下游任务(如分类,评分,生成 等)而在模型末端添加的不同网络模块。在本模型中,模型头是类似于模型词 嵌入层的线性层。通过这一模块,模型可以将生成的词向量转化为对应的词法 单元序列,从而使得下游词法处理器可以将其生成为对应文本,如图4步骤6。
在训练模型时,在这一阶段会完成计算损失与反向传播的步骤,以实现对 模型的参数调整。经过模型头生成的Output_ids序列与经过词嵌入的,作为基 准标签的OCL语句词法单元序列在Loss_fct(损失函数)中计算损失Loss, 将Loss经过反向传播通过梯度更新模型每一层的参数,从而使模型能够更好 的完成包括特征提取和单词生成的OCL语句生成任务。
模型使用的损失函数是CrossEntropyLoss(交叉熵损失函数),其公式见 式(8)。在信息论中,交叉熵用于描述两个概率分布p,q之间的差异,其中, p表示真实分布,即Labels的词法单元序列分布,q表示预测分布,即生成序 列Output_ids的分布。其中,pi和qi是序列中第i个词法单元索引。
H(p,q)=-∑i pi ln qi (8)
具体实施时,为了提升语句生成效果,在本实施例中,经过实验,提出了 对原始预训练模型进行多项改进,得到上述语言模型。
例如,对生成策略进行改进:
模型在解码阶段的生成策略直接关乎到目标OCL语句的生成,进而决定 最终的生成质量。值得注意的是,模型在生成时仅从统计模型的角度对每一个 候选词做出选择,而非如人类或系统一样对生成样本的整体质量进行评估。我 们希望在模型的生成期间,可以对生成语句进行质量上的评估,优化模型的生 成策略,从而提升模型的生成质量。
对CK重新进行排列,使得式(11)和式(12)同时满足,使得候选代码族 CK中的句子按照BLEU评分进行降序排列:
具体的,BLEU(Bilingual Evaluation Understudy),即双语评估替补,由 IBM与2002年提出,用来评价机器翻译。对于每一对输入{Candidate, Reference},输出评估分数BLEU∈[0,100],用于衡量这一结果的好坏。分数 越高,表明生成结果Candidate与参考答案Reference越接近,意为质量更高, 而得到满分则是完全一致。其计算公式见式(13),是长度惩罚因子BP与评 分S的乘积:
BLEU=BP*S (13)
BLEU采用N-gram(N元)的匹配规则,即比较译文和参考译文之间n 组gram的相似比例,综合多个N-gram下的评分得到总分S。为避免短句获得 畸高的评分,加入长度惩罚因子BP计算,得到最终评分BLEU。
SacreBLEU是以Python语言中常用的对BLEU算法的一种开源实现包。 在SacreBLEU中,会分别计算长度为1~4的Pn,对各个Pn采用几何平均数采 样汇总,如式(14),得到句子的匹配得分S。
N元(N-gram)语法模型是最早的一种基于统计的语言模型。在BLEU 中,将文本中的句子看作词序列,1-gram即长度为1的词元,通常是一个单 词;而n-gram即为长度为n的词元,由n个1-gram组成。式(15)中的Pn 代表长度为n的gram的评分,衡量在参考译文当中n-gram在译文中的出现情 况。令Wk表示第k个n-gram,则Hk(ci)表示表示Wk候选译文Ci中出现的 次数,Hk(sij)表示Wk在标准答案sij中出现的次数。考虑到召回次数,则采 用来表示候选文本中实际生效的gram数。是在参 考译文Reference中出现过m次的gram Wk,能够在候选译文Candidate中匹 配到的有效次数不应超过m次。
下面介绍长度惩罚因子BP(Brevity Penalty)。由于BLEU在评测时,评 测的是匹配到的n-gram在生成译文Candidate中的比例,所以,一个仅正确生 成了参考译文Reference部分的生成译文Candidate同样会得到相当高的分数, 然而这样的高分却没有正确反映其生成质量。因此,引入长度惩罚因子BP, 来避免这一问题。如式(16),lc表示生成译文的长度,ls表示参考译文的有 效长度。当生成译文长度小于参考译文时,惩罚因子就会对N-gram评分予以 修正,降低评分,更贴近实际生成质量。
一个值得注意的问题是,最大化函数是否是优化生成过 程的等价表述,也就是说,拥有更高条件概率的的生成结果是否相对更优。根 据Fan等人的研究,最大化条件概率并不一定会生成最优的结果,例如在一定 场景中模型会生成更加“万金油”却不那么有效的输出。
考虑到这个问题,我们采用随机采样策略R进行生成,其候选目标族CR在生成阶段具有随机性,在重新排序前并不一定会满足式(10)。但这对结果不 造成影响,可以保证候选目标族CR中的结果仍然具有相对较优的统计学特征。 在得到候选目标族CR后,同样进行上述的评估-重排-输出流程,得到生成目标 通过生成-评估-选择的流程大幅提升了语言模型的性能。
在实验中,本申请选取了贪婪搜索作为基准,分别对基于条件概率最大化 的波束搜索与基于随机采样的Top P和Top K搜索进行了实验,并对不同参数 的影响进行了验证。实验证明,本申请的优化策略对于改进生成结果质量有着 显著的效果。
具体实施时,在本实施例中,还提出了对损失函数进行改进:
在深度学习模型中,交叉熵损失函数常用于分类相关问题。在本问题中, 生成序列时,可以同样将每个词法单元的生成抽象成分类问题,即,在词表大 小vocab_size个种类中,模型会试图每次将当前词法单元归类至与Labels一致。 在自然语言到OCL语句生成的工作之中,目标语言是代码语言,与自然语言 有着显著的区别。在OCL语句中,库函数、保留字和内部属性等这些关键字 面量(称为Keys)显然具有更多信息,如果在标签之中具有这样的Keys的字 面量而生成结果之中没有,那么就很可能生成结果有着较大的偏差。
根据这样的思想,我们对模型损失函数提出了改进。对模型Loss Function 关于OCL特征进行的加权改进,对于Keys的应该获得更大的惩罚,也就是模 型的参数应该为Keys的错误预测进行更大幅度的调整。Keys包括但不限于库 函数、保留字和内部属性,关于Keys可以参见下表1:
表1
我们提出了权重序列Weight={1,...,σ,...,1},权重序列的长度与词表大 小vocab_size一致,其中,属于Keys的Token对应索引,会有更高的权重, 见式(17)改进后的损失函数见式(18)
HImproved(p,q)=-∑i wipi ln qi (18)
在传统的神经网络模型中,交叉熵函数的权重通常用来应对分类问题时的 样本不均衡,通过对损失函数的改进避免让模型总是预测在数据集中具有较大 比重的分类。而在本问题中的语言模型,由于词表大小vocab_size非常大,词 汇的不均衡相对而言是可以忽略的,通过改进权重的损失函数来让模型对于关 键字更加敏感,以提升性能。
经过实验,我们对损失函数的改进对于模型有一定优化。以朴素交叉熵函 数为基线,改进后的损失函数在各项评分指标中都有所提高。
具体实施时,上述基于自然语言的OCL语句自动生成方法是在深入研究 已有的基于神经网络模型的Seq2Seq生成的工作基础上,提出的一种新的可用 于OCL语句生成的解决方案,设计并实现基于深度学习的自然语言到OCL语 句生成,并克服传统工作中应用场景单一,输入限制多的弊端。
在本实施例中,提供了一种计算机设备,如图7所示,包括存储器701、 处理器702及存储在存储器上并可在处理器上运行的计算机程序,所述处理器 执行所述计算机程序时实现上述任意的基于自然语言的OCL语句自动生成方 法。
具体的,该计算机设备可以是计算机终端、服务器或者类似的运算装置。
在本实施例中,提供了一种计算机可读存储介质,所述计算机可读存储介 质存储有执行上述任意的基于自然语言的OCL语句自动生成方法的计算机程 序。
具体的,计算机可读存储介质包括永久性和非永久性、可移动和非可移动 媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数 据结构、程序的模块或其他数据。计算机可读存储介质的例子包括,但不限于 相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器 (DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除 可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存 储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带 磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计 算设备访问的信息。按照本文中的界定,计算机可读存储介质不包括暂存电脑 可读媒体(transitorymedia),如调制的数据信号和载波。
基于同一发明构思,本发明实施例中还提供了一种基于自然语言的OCL 语句自动生成装置,如下面的实施例所述。由于基于自然语言的OCL语句自 动生成装置解决问题的原理与基于自然语言的OCL语句自动生成方法相似, 因此基于自然语言的OCL语句自动生成装置的实施可以参见基于自然语言的 OCL语句自动生成方法的实施,重复之处不再赘述。以下所使用的,术语“单 元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所 描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也 是可能并被构想的。
图8是本发明实施例的基于自然语言的OCL语句自动生成装置的一种结 构框图,如图8所示,包括:
任务构造模块801,用于将自然语言文本构造成下游任务;
语句生成模块802,用于将所述下游任务依次输入词法处理器和语言模型, 所述语言模型生成多个候选的对象约束语言语句,其中,所述语言模型是通过 改进预训练语言模型得到的;
语句确定模块803,用于从多个候选的所述对象约束语言语句中,将质量 最高的所述对象约束语言语句确定为所述自然语言文本的目标对象约束语言 语句进行输出。
在一个实施例中,语句生成模块,用于通过所述语言模型采用随机采样策 略,生成多个候选的所述对象约束语言语句。
在一个实施例中,上述装置还包括:
评分模块,用于在从多个候选的所述对象约束语言语句中,将质量最高的 所述对象约束语言语句确定为所述自然语言文本的目标对象约束语言语句之 前,针对每个候选的所述对象约束语言语句,从统计特征和代码语义角度进行 评分,将评分最高的所述对象约束语言语句确定为质量最高的所述对象约束语 言语句。
在一个实施例中,评分模块,具体用于针对每个候选的所述对象约束语言 语句,通过BLEU评价函数从统计特征和代码语义角度进行评分。
在一个实施例中,上述装置还包括:
权重确定模块,用于在所述语言模型的损失函数的权重序列中,增大关键 字面量的权重。
在一个实施例中,任务构造模块,具体用于对所述自然语言文本添加前缀 后,造成下游任务,其中,所述前缀表示任务形式。
本发明实施例实现了如下技术效果:与现有技术相比,本说明书实施例采 用的上述至少一个技术方案能够达到的有益效果至少包括:基于深度学习的方 法实现了从自然语言到OCL语句的生成;并通过对预训练语言模型改进得到 了语言模型,提升了语言模型的生成质量,并通过语言模型生成多个候选的 OCL语句,将质量最高的OCL语句确定为自然语言文本的目标OCL语句, 有利于进一步提高OCL语句的生成质量。
显然,本领域的技术人员应该明白,上述的本发明实施例的各模块或各步 骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分 布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程 序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且 在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它 们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个 集成电路模块来实现。这样,本发明实施例不限制于任何特定的硬件和软件结 合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领 域的技术人员来说,本发明实施例可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种基于自然语言的对象约束语言语句自动生成方法,其特征在于,包括:
将自然语言文本构造成下游任务;
将所述下游任务依次输入词法处理器和语言模型,所述语言模型生成多个候选的对象约束语言语句,其中,所述语言模型是通过改进预训练语言模型得到的;
从多个候选的所述对象约束语言语句中,将质量最高的所述对象约束语言语句确定为所述自然语言文本的目标对象约束语言语句进行输出。
2.如权利要求1所述的方法,其特征在于,所述语言模型生成多个候选的对象约束语言语句,包括:
所述语言模型通过随机采样策略,生成多个候选的所述对象约束语言语句。
3.如权利要求2所述的方法,其特征在于,还包括:
在从多个候选的所述对象约束语言语句中,将质量最高的所述对象约束语言语句确定为所述自然语言文本的目标对象约束语言语句之前,针对每个候选的所述对象约束语言语句,从统计特征和代码语义角度进行评分,将评分最高的所述对象约束语言语句确定为质量最高的所述对象约束语言语句。
4.如权利要求3所述的方法,其特征在于,针对每个候选的所述对象约束语言语句,从统计特征和代码语义角度进行评分,包括:
针对每个候选的所述对象约束语言语句,通过双语评估替补评价函数从统计特征和代码语义角度进行评分。
5.如权利要求1至4中任一项所述的方法,其特征在于,还包括:
在所述语言模型的损失函数的权重序列中,增大关键字面量的权重。
7.如权利要求1至4中任一项所述的方法,其特征在于,将自然语言文本构造成下游任务,包括:
对所述自然语言文本添加前缀后,造成下游任务,其中,所述前缀表示任务形式。
8.一种基于自然语言的对象约束语言语句自动生成装置,其特征在于,包括:
任务构造模块,用于将自然语言文本构造成下游任务;
语句生成模块,用于将所述下游任务依次输入词法处理器和语言模型,所述语言模型生成多个候选的对象约束语言语句,其中,所述语言模型是通过改进预训练语言模型得到的;
语句确定模块,用于从多个候选的所述对象约束语言语句中,将质量最高的所述对象约束语言语句确定为所述自然语言文本的目标对象约束语言语句进行输出。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述的基于自然语言的对象约束语言语句自动生成方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有执行权利要求1至7中任一项所述的基于自然语言的对象约束语言语句自动生成方法的计算机程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210983856.XA CN115437626A (zh) | 2022-08-17 | 2022-08-17 | 一种基于自然语言的ocl语句自动生成方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210983856.XA CN115437626A (zh) | 2022-08-17 | 2022-08-17 | 一种基于自然语言的ocl语句自动生成方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115437626A true CN115437626A (zh) | 2022-12-06 |
Family
ID=84242673
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210983856.XA Pending CN115437626A (zh) | 2022-08-17 | 2022-08-17 | 一种基于自然语言的ocl语句自动生成方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115437626A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117056859A (zh) * | 2023-08-15 | 2023-11-14 | 丁杨 | 一种对文言文中缺失文字的补全方法 |
CN117472787A (zh) * | 2023-12-27 | 2024-01-30 | 山东泽鹿安全技术有限公司 | 车机模糊测试的测试用例生成方法、装置、介质和设备 |
CN118395996A (zh) * | 2024-07-01 | 2024-07-26 | 江西师范大学 | 一种基于深度交叉网络的机器译文自动评价方法 |
-
2022
- 2022-08-17 CN CN202210983856.XA patent/CN115437626A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117056859A (zh) * | 2023-08-15 | 2023-11-14 | 丁杨 | 一种对文言文中缺失文字的补全方法 |
CN117056859B (zh) * | 2023-08-15 | 2024-05-10 | 丁杨 | 一种对文言文中缺失文字的补全方法 |
CN117472787A (zh) * | 2023-12-27 | 2024-01-30 | 山东泽鹿安全技术有限公司 | 车机模糊测试的测试用例生成方法、装置、介质和设备 |
CN117472787B (zh) * | 2023-12-27 | 2024-03-15 | 山东泽鹿安全技术有限公司 | 车机模糊测试的测试用例生成方法、装置、介质和设备 |
CN118395996A (zh) * | 2024-07-01 | 2024-07-26 | 江西师范大学 | 一种基于深度交叉网络的机器译文自动评价方法 |
CN118395996B (zh) * | 2024-07-01 | 2024-08-30 | 江西师范大学 | 一种基于深度交叉网络的机器译文自动评价方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Yogatama et al. | Learning to compose words into sentences with reinforcement learning | |
Qin et al. | A survey on text-to-sql parsing: Concepts, methods, and future directions | |
Kwiatkowski et al. | Lexical generalization in CCG grammar induction for semantic parsing | |
Harer et al. | Tree-transformer: A transformer-based method for correction of tree-structured data | |
CN115437626A (zh) | 一种基于自然语言的ocl语句自动生成方法和装置 | |
Jin et al. | A survey on table question answering: recent advances | |
US20220245353A1 (en) | System and method for entity labeling in a natural language understanding (nlu) framework | |
US20220245361A1 (en) | System and method for managing and optimizing lookup source templates in a natural language understanding (nlu) framework | |
Kumar et al. | An abstractive text summarization technique using transformer model with self-attention mechanism | |
Xu et al. | Match-prompt: Improving multi-task generalization ability for neural text matching via prompt learning | |
Kim et al. | Zero‐anaphora resolution in Korean based on deep language representation model: BERT | |
US20220237383A1 (en) | Concept system for a natural language understanding (nlu) framework | |
Kumar et al. | Deep learning driven natural languages text to SQL query conversion: a survey | |
CN116955594A (zh) | 语义融合预训练模型构建方法及跨语言摘要生成方法和系统 | |
Shi et al. | Improving code search with multi-modal momentum contrastive learning | |
Yang et al. | DeepOCL: A deep neural network for Object Constraint Language generation from unrestricted nature language | |
Acharjee et al. | Sequence-to-sequence learning-based conversion of pseudo-code to source code using neural translation approach | |
Yang et al. | Task independent fine tuning for word embeddings | |
Ahkouk et al. | Comparative study of existing approaches on the Task of Natural Language to Database Language | |
Lin et al. | Chinese story generation of sentence format control based on multi-channel word embedding and novel data format | |
US20220245352A1 (en) | Ensemble scoring system for a natural language understanding (nlu) framework | |
US20220229987A1 (en) | System and method for repository-aware natural language understanding (nlu) using a lookup source framework | |
US20220229990A1 (en) | System and method for lookup source segmentation scoring in a natural language understanding (nlu) framework | |
Xu et al. | A Multi-Task Instruction with Chain of Thought Prompting Generative Framework for Few-Shot Named Entity Recognition | |
Ding et al. | Sentence and Document Representation Learning |
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 |