当前位置: 首页 > 专利查询>扬州大学专利>正文

面向智能合约的代码自动推荐方法、系统、计算机设备和存储介质技术方案

技术编号:24572510 阅读:52 留言:0更新日期:2020-06-20 23:55
本发明专利技术公开了一种面向智能合约的代码自动推荐方法、系统、计算机设备和存储介质,方法包括:采集智能合约,获取智能合约描述信息以及代码;对智能合约描述信息进行自然语言预处理;抽取智能合约描述信息的动名词短语;识别智能合约描述信息的依存关系,根据依存关系并结合动名词短语构造智能合约描述信息的关系三元组;提取智能合约代码的属性,由属性和关系三元组建立智能合约与代码的映射匹配,构建智能合约映射库;针对新的智能合约描述,查询智能合约映射库,获取为新的智能合约描述推荐的代码。本发明专利技术从智能合约描述语言本身的关系和代码属性两方面进行代码的匹配和推荐,提高了智能合约编程过程中代码推荐的准确性。

Automatic code recommendation methods, systems, computer devices and storage media for smart contracts

【技术实现步骤摘要】
面向智能合约的代码自动推荐方法、系统、计算机设备和存储介质
本专利技术属于软件开发领域,具体涉及面向区块链应用中智能合约的代码自动推荐
,特别涉及一种面向智能合约的代码自动推荐方法、系统、计算机设备和存储介质。
技术介绍
一个完整的区块链应用离不开用户编写的智能合约,用户的应用程序通过区块链网络的Peer节点,调用智能合约。智能合约,是使用高级语言编写的一段代码,主要用于读取和操作账本上的数据。智能合约是一座连接用户应用和账本的桥梁。用户的应用可直接和智能合约打交道,智能合约也可直接和账本进行交互。在整个区块链系统中,智能合约是系统与用户接触的接口,是应用的载体,是区块链向用户提供服务的用户界面。随着区块链得到越来越广泛的应用,智能合约相关的编程语言,如solidity语言,也应用的越来越多,这些语言本身也提供了相关的一些库供开发人员去调用,以提高开发效率。但是智能合约编程不同于现有的软件工程过程,一旦智能合约编程上传或发布,即使有缺陷,也无法通过打补丁进行修复。此外,由于区块链应用还处在初期,智能合约编程对于很多开发人员来说却不容易,要搜索可用的智能合约程序代码并不容易。现有的程序搜索技术并没有针对智能合约相关程序进行分析,建立程序库,因此不适用于智能合约程序代码的搜索。
技术实现思路
本专利技术的目的在于针对上述技术问题,提供一种面向智能合约的代码自动推荐方法、系统、计算机设备和存储介质。实现本专利技术目的的技术解决方案为:一种面向智能合约的代码自动推荐方法,所述方法包括以下步骤:步骤1,采集智能合约库中的智能合约,获取智能合约描述信息以及代码;步骤2,对所述智能合约描述信息进行自然语言预处理;步骤3,抽取所述智能合约描述信息的动名词短语,包括动词短语VP、名词短语NP;步骤4,对所述智能合约描述信息进行依存句法分析,识别依存关系,提取智能合约描述句子中的语法结构,根据依存关系并结合步骤3提取的动名词短语构造智能合约描述信息的关系三元组(NP,VP,NP);步骤5,提取所述智能合约代码的属性X,由该属性X和所述关系三元组建立智能合约与代码的映射匹配<(NP,VP,NP),X>,构建智能合约映射库;步骤6,针对新的智能合约描述,查询所述智能合约映射库,获取为所述新的智能合约描述推荐的代码。进一步地,步骤2所述对智能合约描述信息进行自然语言预处理,具体包括:对智能合约描述信息进行词语切分和词性标注。进一步地,步骤3所述抽取智能合约描述信息的动名词短语,具体是通过下表1所示的正则表达式识别;表1动名词短语识别正则表达式表1中,MD表示情态动词;VB.*表示不同类别的动词,包括:VB-动词基础形式,VBG-动名词现在分词,VBN-动词过去分词,VBD-动词过去式,VBP-动词非第三人称单数,VBZ-动词第三人称单数;POS-词性;NN.*表示不同类别的名词,包括NN-单数或物质名词,NNS-名词复数,NNP-名词单数,NNPS-复数专有名词;JJ表示形容词;RB表示副词;DT表示定冠词;IN*表示任意介词或从属连词;“VVP”表示具有开放式从句的VP;CC表示连词;CD表示数词以及TO作为介词或不定式标记;符号“?”表示前面的字符是可选的;“+”表示前面项目的一个或多个实例;“*”表示前面项目的零个或多个实例;“-”表示连接多个实例。进一步地,步骤6所述针对新的智能合约描述,查询所述智能合约映射库,获取为所述新的智能合约描述推荐的代码,具体过程包括:步骤6-1,依据步骤2至步骤4的过程提取所述新的智能合约描述的关系三元组,并由关系三元组中的词构成关键词;步骤6-2,将步骤6-1提取的关系三元组与所述智能合约映射库进行匹配,并将匹配度最高的代码作为为所述新的智能合约描述推荐的代码。一种面向智能合约的代码自动推荐系统,所述系统包括依次执行的:第一信息提取模块,用于采集智能合约库中的智能合约,获取智能合约描述信息以及代码;预处理模块,用于对所述智能合约描述信息进行自然语言预处理;第二信息提取模块,用于抽取所述智能合约描述信息的动名词短语,包括动词短语VP、名词短语NP;关系三元组构建模块,用于对所述智能合约描述信息进行依存句法分析,识别依存关系,提取智能合约描述句子中的语法结构,根据依存关系并结合第二信息提取模块提取的动名词短语构造智能合约描述信息的关系三元组(NP,VP,NP);智能合约映射库构建模块,用于提取所述智能合约代码的属性X,由该属性X和所述关系三元组建立智能合约与代码的映射匹配<(NP,VP,NP),X>,构建智能合约映射库;代码推荐模块,用于针对新的智能合约描述,查询所述智能合约映射库,获取为所述新的智能合约描述推荐的代码。进一步地,所述代码推荐模块包括:第一信息提取单元,用于依据所述预处理模块至关系三元组构建模块的过程提取所述新的智能合约描述的关系三元组,并由关系三元组中的词构成关键词;匹配单元,用于对第一信息提取单元提取的关系三元组与所述智能合约映射库进行匹配;推荐单元,用于将所述匹配单元生成结果中匹配度最高的代码作为为所述新的智能合约描述推荐的代码。一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:步骤1,采集智能合约库中的智能合约,获取智能合约描述信息以及代码;步骤2,对所述智能合约描述信息进行自然语言预处理;步骤3,抽取所述智能合约描述信息的动名词短语,包括动词短语VP、名词短语NP;步骤4,对所述智能合约描述信息进行依存句法分析,识别依存关系,提取智能合约描述句子中的语法结构,根据依存关系并结合步骤3提取的动名词短语构造智能合约描述信息的关系三元组(NP,VP,NP);步骤5,提取所述智能合约代码的属性X,由该属性X和所述关系三元组建立智能合约与代码的映射匹配<(NP,VP,NP),X>,构建智能合约映射库;步骤6,针对新的智能合约描述,查询所述智能合约映射库,获取为所述新的智能合约描述推荐的代码。一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:步骤1,采集智能合约库中的智能合约,获取智能合约描述信息以及代码;步骤2,对所述智能合约描述信息进行自然语言预处理;步骤3,抽取所述智能合约描述信息的动名词短语,包括动词短语VP、名词短语NP;步骤4,对所述智能合约描述信息进行依存句法分析,识别依存关系,提取智能合约描述句子中的语法结构,根据依存关系并结合步骤3提取的动名词短语构造智能合约描述信息的关系三元组(NP,VP,NP);步骤5,提取所述智能合约代码的属性X,由该属性X和所述关系三元组建立智能合约与代码的映射匹配<(NP,VP,NP),X>,构建本文档来自技高网...

【技术保护点】
1.一种面向智能合约的代码自动推荐方法,其特征在于,所述方法包括以下步骤:/n步骤1,采集智能合约库中的智能合约,获取智能合约描述信息以及代码;/n步骤2,对所述智能合约描述信息进行自然语言预处理;/n步骤3,抽取所述智能合约描述信息的动名词短语,包括动词短语VP、名词短语NP;/n步骤4,对所述智能合约描述信息进行依存句法分析,识别依存关系,提取智能合约描述句子中的语法结构,根据依存关系并结合步骤3提取的动名词短语构造智能合约描述信息的关系三元组(NP,VP,NP);/n步骤5,提取所述智能合约代码的属性X,由该属性X和所述关系三元组建立智能合约与代码的映射匹配<(NP,VP,NP),X>,构建智能合约映射库;/n步骤6,针对新的智能合约描述,查询所述智能合约映射库,获取为所述新的智能合约描述推荐的代码。/n

【技术特征摘要】
1.一种面向智能合约的代码自动推荐方法,其特征在于,所述方法包括以下步骤:
步骤1,采集智能合约库中的智能合约,获取智能合约描述信息以及代码;
步骤2,对所述智能合约描述信息进行自然语言预处理;
步骤3,抽取所述智能合约描述信息的动名词短语,包括动词短语VP、名词短语NP;
步骤4,对所述智能合约描述信息进行依存句法分析,识别依存关系,提取智能合约描述句子中的语法结构,根据依存关系并结合步骤3提取的动名词短语构造智能合约描述信息的关系三元组(NP,VP,NP);
步骤5,提取所述智能合约代码的属性X,由该属性X和所述关系三元组建立智能合约与代码的映射匹配<(NP,VP,NP),X>,构建智能合约映射库;
步骤6,针对新的智能合约描述,查询所述智能合约映射库,获取为所述新的智能合约描述推荐的代码。


2.根据权利要求1所述的面向智能合约的代码自动推荐方法,其特征在于,步骤2所述对智能合约描述信息进行自然语言预处理,具体包括:对智能合约描述信息进行词语切分和词性标注。


3.根据权利要求1或2所述的面向智能合约的代码自动推荐方法,其特征在于,步骤3所述抽取智能合约描述信息的动名词短语,具体是通过下表1所示的正则表达式识别;
表1动名词短语识别正则表达式



表1中,MD表示情态动词;VB.*表示不同类别的动词,包括:VB-动词基础形式,VBG-动名词现在分词,VBN-动词过去分词,VBD-动词过去式,VBP-动词非第三人称单数,VBZ-动词第三人称单数;POS-词性;NN.*表示不同类别的名词,包括NN-单数或物质名词,NNS-名词复数,NNP-名词单数,NNPS-复数专有名词;JJ表示形容词;RB表示副词;DT表示定冠词;IN*表示任意介词或从属连词;“VVP”表示具有开放式从句的VP;CC表示连词;CD表示数词以及TO作为介词或不定式标记;符号“?”表示前面的字符是可选的;“+”表示前面项目的一个或多个实例;“*”表示前面项目的零个或多个实例;“-”表示连接多个实例。


4.根据权利要求3所述的面向智能合约的代码自动推荐方法,其特征在于,步骤5中所述智能合约代码的属性X包括代码中的标识符和所调用的API名称。


5.根据权利要求4所述的面向智能合约的代码自动推荐方法,其特征在于,步骤6所述针对新的智能合约描述,查询所述智能...

【专利技术属性】
技术研发人员:孙小兵李斌李云张正华张福安
申请(专利权)人:扬州大学
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1