CN114647408A - 一种代码的补全方法、装置、电子设备及存储介质 - Google Patents
一种代码的补全方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN114647408A CN114647408A CN202210349591.8A CN202210349591A CN114647408A CN 114647408 A CN114647408 A CN 114647408A CN 202210349591 A CN202210349591 A CN 202210349591A CN 114647408 A CN114647408 A CN 114647408A
- Authority
- CN
- China
- Prior art keywords
- recommended
- character
- recommended character
- characters
- program editor
- 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 58
- 238000013136 deep learning model Methods 0.000 claims description 16
- 238000011156 evaluation Methods 0.000 claims description 14
- 239000013598 vector Substances 0.000 claims description 14
- 238000004590 computer program Methods 0.000 claims description 5
- 230000006870 function Effects 0.000 description 18
- 238000010586 diagram Methods 0.000 description 11
- 230000018109 developmental process Effects 0.000 description 9
- 238000011161 development Methods 0.000 description 8
- 239000004721 Polyphenylene oxide Substances 0.000 description 4
- 229920006380 polyphenylene oxide Polymers 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 210000000988 bone and bone Anatomy 0.000 description 1
- 210000001072 colon Anatomy 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000000007 visual effect Effects 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/31—Programming languages or programming paradigms
-
- 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/33—Intelligent editors
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Stored Programmes (AREA)
Abstract
本申请提供了一种代码的补全方法、装置、电子设备及存储介质,本申请实施例提供一种代码的补全方法,包括:获取程序编辑器中用户输入的待补全字符;根据程序编辑器的编程语言库、程序编辑器的第三方库和用户在程序编辑器输入的历史代码,确定待补全字符对应的多个推荐字符类型不同的推荐字符集,每个推荐字符集包括多个推荐字符;根据每个推荐字符集的推荐字符,生成推荐字符列表,并显示在程序编辑器的预设位置上;获取用户在推荐字符列表中选择的目标推荐字符,将程序编辑器的待补全字符替换为目标推荐字符,以形成编程单词或编程段落,以提高代码补全的准确性和适应性。
Description
技术领域
本申请涉及代码补全技术领域,具体而言,涉及一种代码的补全方法、装置、电子设备及存储介质。
背景技术
现有技术中,编程人员在开发过程中,往往需要手动敲写大量代码,从而导致编程人员的工作量较大,影响编程人员的开发效率。因此编程人员通常会采用代码补全工具,来提高代码输入的效率。
现有的代码补全方法有两种,一种是基于已输入程序中单词的频率来进行补全代码的预测,这种方法过多的关注于词频,而对集成开发环境的适应性不高。另一种是基于程序代码语言特性来进行补全代码的预测,这种方法虽然适应性高,但代码补全的准确性较差。因此需要一种代码补全方法,以同时提高代码补全的准确性和适应性。
发明内容
有鉴于此,本申请的目的在于提供一种代码的补全方法、装置、电子设备及存储介质,以提高代码补全的准确性和适应性。
第一方面,本申请实施例提供一种代码的补全方法,包括:获取程序编辑器中用户输入的待补全字符;根据程序编辑器的编程语言库、程序编辑器的第三方库和用户在程序编辑器输入的历史代码,确定待补全字符对应的多个推荐字符类型不同的推荐字符集,每个推荐字符集包括多个推荐字符;根据每个推荐字符集的推荐字符,生成推荐字符列表,并显示在程序编辑器的预设位置上;获取用户在推荐字符列表中选择的目标推荐字符,将程序编辑器的待补全字符替换为目标推荐字符,以形成编程单词或编程段落。
优选地,每个推荐字符集对应一个推荐字符集优先级,每个推荐字符集的推荐字符对应一个推荐字符优先级,根据每个推荐字符集的推荐字符,生成推荐字符列表的步骤,具体包括:将每个推荐字符集中推荐字符优先级相同的多个推荐字符作为一个推荐字符组;将每个推荐字符组中的多个推荐字符按照每个推荐字符对应的推荐字符集的推荐字符集优先级排列;将多个推荐字符组按照对应的推荐字符优先级由高至低排列,以生成推荐字符列表。
优选地,针对目标推荐字符对应的推荐字符集,通过以下方式更新该推荐字符集:根据目标推荐字符、用户在程序编辑器输入的当前代码以及该推荐字符集的推荐字符,确定多个候选字符;根据多个候选字符,确定该推荐字符集更新后的推荐字符以及每个推荐字符在该推荐字符集中的推荐字符优先级。
优选地,通过以下方式确定多个候选字符:确定目标推荐字符对应的推荐字符集中预设推荐字符优先级前的推荐字符,将每个推荐字符作为一个候选字符;获取用户输入的代码中在待补全字符之前预设数量的编程单词,将每个编程单词作为一个候选字符;将当前的目标推荐字符作为一个候选字符。
优选地,通过以下方式确定该推荐字符集更新后的推荐字符以及每个推荐字符在该推荐字符集中的推荐字符优先级:确定每个候选字符对应的候选字符向量;将所有候选字符向量输入与目标推荐字符的推荐字符类型对应的、预先训练好的深度学习模型,以获取所述深度学习模型输出的每个候选字符对应的评价值;根据多个候选字符,确定更新后的推荐字符集的推荐字符,以及根据每个候选字符对应的评价值,确定更新后的推荐字符集的推荐字符的推荐字符优先级。
优选地,针对评价值最大的候选字符,确定该候选字符与目标推荐字符是否为相同的字符;若不是相同的字符,则将该候选字符对应的推荐字符优先级减少一级;以及将目标推荐字符在该推荐字符集的推荐字符优先级增加一级。
优选地,推荐字符类型包括语法类型和用户历史编写类型,语法类型包括多个语法子类型,通过以下方式确定多个推荐字符类型不同的推荐字符集的推荐字符:根据程序编辑器的编程语言库、程序编辑器的第三方库,分析待补全字符的数据类型,根据待补全字符的数据类型,确定每个语法子类型的推荐字符集的推荐字符;分析用户在程序编辑器输入的历史代码,确定待补全字符对应的编程单词或编程段落;根据待补全字符对应的编程单词或编程段落,确定用户历史编写类型的推荐字符集的推荐字符。
第二方面,本申请实施例还提供一种代码的补全装置,包括:
获取模块,用于获取程序编辑器中用户输入的待补全字符;
分析模块,用于根据程序编辑器的编程语言库、程序编辑器的第三方库和用户在程序编辑器输入的历史代码,确定待补全字符对应的多个推荐字符类型不同的推荐字符集,每个推荐字符集包括多个推荐字符;
显示模块,用于根据每个推荐字符集的推荐字符,生成推荐字符列表,并显示在程序编辑器的预设位置上;
补全模块,用于获取用户在推荐字符列表中选择的目标推荐字符,将程序编辑器的待补全字符替换为目标推荐字符,以形成编程单词或编程段落。
第三方面,本申请实施例还提供一种电子设备,包括:处理器、存储器和总线,存储器存储有处理器可执行的机器可读指令,当电子设备运行时,处理器与存储器之间通过总线通信,处理器执行机器可读指令,以执行如上代码的补全方法的步骤。
第四方面,本申请实施例还提供一种计算机可读存储介质,存储介质上存储有计算机程序,计算机程序被处理器运行时执行如上代码的补全方法的步骤。
本申请实施例提供的一种代码的补全方法、装置、电子设备及存储介质,通过获取程序编辑器中用户输入的待补全字符,根据程序编辑器的编程语言库、程序编辑器的第三方库和用户在程序编辑器输入的历史代码,确定待补全字符对应的多个推荐字符类型不同的推荐字符集,每个推荐字符集包括多个推荐字符,根据每个推荐字符集的推荐字符,生成推荐字符列表,并显示在程序编辑器的预设位置上;获取用户在推荐字符列表中选择的目标推荐字符,将程序编辑器的待补全字符替换为目标推荐字符,以形成编程单词或编程段落,推荐字符列表中所显示的推荐字符是同时根据语言和当前用户在程序编辑器输入的代码同时确定的,可以提高代码补全的准确性和适应性。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例所提供的一种代码的补全方法的流程图;
图2为本申请实施例所提供的一种推荐字符集的示意图;
图3为本申请实施例所提供的一种推荐字符列表的示意图;
图4为本申请实施例所提供的一种推荐字符集的更新步骤的流程图;
图5为本申请实施例所提供的一种更新后的推荐字符集的确定步骤的流程图;
图6为本申请实施例所提供的一种深度学习模型的部分结构示意图;
图7为本申请实施例所提供的一种代码的补全装置的结构示意图;
图8为本申请实施例所提供的一种电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,应当理解,本申请中的附图仅起到说明和描述的目的,并不用于限定本申请的保护范围。另外,应当理解,示意性的附图并未按实物比例绘制。本申请中使用的流程图示出了根据本申请的一些实施例实现的操作。应当理解,流程图的操作可以不按顺序实现,没有逻辑的上下文关系的步骤可以反转顺序或者同时实施。此外,本领域技术人员在本申请内容的指引下,可以向流程图添加一个或多个其他操作,也可以从流程图中移除一个或多个操作。
另外,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的全部其他实施例,都属于本申请保护的范围。
现有技术中,现有技术中,编程人员在开发过程中,往往需要手动敲写大量代码,从而导致编程人员的工作量较大,影响编程人员的开发效率。因此编程人员通常会采用代码补全工具,来提高代码输入的效率。
现有的代码补全方法有两种,一种是基于已输入程序中单词的频率来进行补全代码的预测,这种方法过多的关注于词频,而对集成开发环境的适应性不高。另一种是基于程序代码语言特性来进行补全代码的预测,这种方法虽然适应性高,但代码补全的准确性较差。因此需要一种代码补全方法,以同时提高代码补全的准确性和适应性。
针对上述问题,本申请实施例提供了一种代码的补全方法、装置、电子设备及存储介质,下面通过实施例进行描述。
为便于对本申请进行理解,下面结合具体实施例对本申请提供的技术方案进行详细说明。
在本申请的一个实施例中,提出一种代码的补全程序,该程序可以在电子设备的后台运行,当该电子设备启动或关闭了某个程序编辑器时,上述补全程序同步启动或关闭。当用户在使用该程序编辑器时,可以通过补全程序的服务器执行如图1所示的代码的补全方法,该方法包括:
S101、获取程序编辑器中用户输入的待补全字符。
这里的程序编辑器可以是用于提供程序开发环境的应用程序,即集成开发环境(IDE,Integrated Development Environment),如微软的Visual Studio系列,Borland的C++Builder、Delphi系列等。这里的待补全字符指代的是用户在使用程序编辑器时,在编辑界面中,当前光标的位置与光标之前最近的一个分割符号的位置之间的字符。这里的字符可以是几个字母,也可以是一个完整的单词。这里的分割符号可以是空格符号、换行符号或其他在编程语言中常用的标点符号,例如冒号、等号等。
S102、根据程序编辑器的编程语言库、程序编辑器的第三方库和用户在程序编辑器输入的历史代码,确定待补全字符对应的多个推荐字符类型不同的推荐字符集,每个推荐字符集包括多个推荐字符。
这里的编程语言库指的是用户在使用程序编辑器时,根据当前所要编写的程序所选择的与编程语言对应的核心库,这是在编写程序之前需要预设好的。这里的第三方库指的是用户根据所需编写的程序,额外添加的能够实现自定义的功能的编程语言的库。若用户当前没有添加第三方库,则不用对其进行分析。
这里的推荐字符集包括语法类型和用户历史编写类型。语法类型包括多个语法子类型,具体可以包括当前数据类型的属性和函数、当前数据类型的父节点的属性和函数、当前数据类型的可见变量和函数、全局变量和函数。
具体的,通过以下方式确定多个推荐字符类型不同的推荐字符集的推荐字符:
根据程序编辑器的编程语言库、程序编辑器的第三方库,分析待补全字符的数据类型。根据待补全字符的数据类型,确定每个语法子类型的推荐字符集的推荐字符。
图2为本申请实施例所提供的一种推荐字符集的示意图。如图2所示,针对语法类型的推荐字符集,可以通过抽象语法树的方法,对编程语言库和第三方库进行分析,并以不同的树结构保存。每一个分支树结构为一个类型,并且树结构中的排列顺序是根据推荐字符优先级确定的,其中,推荐字符优先级指的是在一个推荐字符集中,该推荐字符集中的某个推荐字符的优先级别,图2中的候选列表用于指示多个推荐字符集的总和。
以及分析用户在程序编辑器输入的历史代码,确定待补全字符对应的编程单词或编程段落。根据待补全字符对应的编程单词或编程段落,确定用户历史编写类型的推荐字符集的推荐字符。
这里的用户历史编写类型的推荐字符集,可以包括用户历史编写习惯中,待补全字符后面经常连接的编程单词或编程段落,或用户常用的变量等。
示例性的,当前用户刚刚写下dog这个单词,而在编程环境中,dog的类型是Animal,Animal的属性有age和size,方法有shout,这3个单词则都是语法类型中当前数据类型的属性和函数对应的推荐字符集中的推荐字符。Aninal继承了Organism,而Organism有live函数,所以live则是当前数据类型的父节点的属性和函数对应的推荐字符集中的推荐字符。当前可见的变量有bone和table,这两个单词则可以是当前数据类型的可见变量和函数对应的推荐字符集中的推荐字符。用户历史上经常用的单词有for,if等,用户历史上经常在dog这个单词后写‘if live()than kill’这些编程单词或段落则是用户历史编写类型的推荐字符集中的推荐字符。
S103、根据每个推荐字符集的推荐字符,生成推荐字符列表,并显示在程序编辑器的预设位置上。
具体的,每个推荐字符集对应一个推荐字符集优先级,每个推荐字符集的推荐字符对应一个推荐字符优先级,根据每个推荐字符集的推荐字符,生成推荐字符列表的步骤,具体包括:
将每个推荐字符集中推荐字符优先级相同的多个推荐字符作为一个推荐字符组。将每个推荐字符组中的多个推荐字符按照每个推荐字符对应的推荐字符集的推荐字符集优先级排列。将多个推荐字符组按照对应的推荐字符优先级由高至低排列,以生成推荐字符列表。
这里以五个推荐字符集为例,每个推荐字符集对应一个推荐字符优先级,例如图2中五个类型的推荐字符集,优先级的顺序则是图片中从左至右的顺序。这里首先将五个不同类型的推荐字符集中第一优先级的推荐字符取出,并按照对应的推荐字符集优先级的顺序排列,则确定出了推荐字符列表中前五个推荐字符,即第一推荐字符组。依此类推,可以生成完整的推荐字符列表。可以理解的是,推荐字符列表在显示时,需要通过多页显示界面显示,这与现有的输入法的显示原理类似,用户可以通过键盘或鼠标,进行翻页等操作。可以理解的是,用户每输入一个字符,推荐字符列表的内容则会变化一次。如图3所示,为本申请实施例提供的一种推荐字符列表的示意图,推荐字符列表可以显示在当前光标的位置下方,其中每行显示的就是一个推荐字符,可以是编程单词或编程段落。
S104、获取用户在推荐字符列表中选择的目标推荐字符,将程序编辑器的待补全字符替换为目标推荐字符,以形成编程单词或编程段落。
用户可以根据需求,在推荐字符列表中选择一个想要输入的编程单词或编程段落,将用户所选的作为目标推荐字符,替换掉待补全字符,则完成了代码补全。
本申请实施例提供的一种代码的补全方法,推荐字符列表中所显示的推荐字符是同时根据语言和当前用户在程序编辑器输入的代码同时确定的,可以提高代码补全的准确性和适应性,与现有技术相比,推荐的范围更全面,更容易贴合用户想要输入的真实编程单词或段落,为编程人员减轻了开发负担。
请参阅图4,为本申请另一实施例提供的一种推荐字符集的更新步骤,该步骤包括:
S201、根据目标推荐字符、用户在程序编辑器输入的当前代码以及该推荐字符集的推荐字符,确定多个候选字符。
具体的,通过以下方式确定多个候选字符:
确定目标推荐字符对应的推荐字符集中预设推荐字符优先级前的推荐字符,将每个推荐字符作为一个候选字符。这里可以选择在推荐字符集中,按照当前的推荐字符优先级,确定出前1000个推荐字符。若不够1000个,则将不够的位置补上“空”。获取用户输入的代码中在待补全字符之前预设数量的编程单词,将每个编程单词作为一个候选字符。这里可以选择待补全字符之前50个编程单词。将当前的目标推荐字符作为一个候选字符。最后,可以获得1051个编程单词,每个编程单词作为一个候选字符。
S202、根据多个候选字符,确定该推荐字符集更新后的推荐字符以及每个推荐字符在该推荐字符集中的推荐字符优先级。
具体的,如图5所示,为本申请实施例提供的一种更新后的推荐字符集的确定步骤。通过以下方式确定该推荐字符集更新后的推荐字符以及每个推荐字符在该推荐字符集中的推荐字符优先级:
S2021、确定每个候选字符对应的候选字符向量。
在将候选字符输入深度学习模型,需要对每个候选字符进行自然语言处理。这里可以通过one-hot(独热编码)的方法,将每个候选字符转换为对应的候选字符向量。
S2022、将所有候选字符向量输入与目标推荐字符的推荐字符类型对应的、预先训练好的的深度学习模型,以获取深度学习模型输出的每个候选字符对应的评价值。
可以理解的是,每个类型的推荐字符集对应一个训练好的深度学习模型。将所有候选字符向量输入到与目标推荐字符的推荐字符类型对应的、预先训练好的的深度学习模型。该深度学习模型会输出每个候选词向量的评价值,即每个候选字符对应的评价值。
S2023、根据多个候选字符,确定更新后的推荐字符集的推荐字符,以及根据每个候选字符对应的评价值,确定更新后的推荐字符集的推荐字符的推荐字符优先级。
这里可以将候选字符作为更新后的推荐字符集中的推荐字符。可以理解的是,需要将候选字符中重复的字符剔除。这里可以直接根据处理后的候选字符对应的评分值,作为确定对应的推荐字符优先级的标准。也可以根据候选字符的评分值,结合未更新前的推荐字符优先级按照对应的权重比例,重新确定每个推荐字符的推荐字符优先级。
进一步的,还需要根据用户所选择的目标推荐字符,修改推荐字符优先级。针对评价值最大的候选字符,确定该候选字符与目标推荐字符是否为相同的字符。若不是相同的字符,则将该候选字符对应的推荐字符优先级减少一级。以及将目标推荐字符在该推荐字符集的推荐字符优先级增加一级。
可以理解的是,根据步骤S2023得到的推荐字符集,将评分值最大的候选字符所对应的推荐字符,与目标推荐字符匹配。若不是同一个字符,则需要将该推荐字符的推荐字符优先级降一级。同时,目标推荐字符在该推荐字符集中的推荐字符优先级则需要升一级。更新后的推荐字符集,将所为下一次与当前待补全字符对应的该类型下的推荐字符集。
上述实施例所提供的代码的补全方法,可以适用于解决两种情况,一种是当用户只写了一个单词的开头几个字母时,确定出对应的编程单词或编程段落。其中,确定出的推荐字符集的推荐字符类型可以包括:当前数据类型所含有的属性和函数、当前数据类型如果有继承,那么它所继承的属性和函数、当前作用域内可见的用户定义的变量和函数、全局作用域内可见的变量和函数、用户历史词序中待补全字符后接用编程单词和编程段落。还可以根据待补全字符所属的数据类型判断使用的深度学习模型,通过预先训练好的模型进行处理。
具体的,针对上述5个推荐字符类型中的每一个推荐字符类型,都预先设置了一个相关的深度学习PPO模式。每次用户选择了一个目标推荐字符后,确定出一个1051维的向量集,其中包括多个候选字符向量,作为模型的输入。利用PPO的训练方法,把候选词的频率值作为权重,然后根据用户自己的选择来判定是惩罚还是奖励,不断训练。这样,就可以针对5个推荐字符类别各自训练出一套适合用户的模型,达到个性化推荐的效果。
具体的,如图6所示,为本申请实施例所提供的一种深度学习模型的部分结构示意图。常规的PPO模型中一般包括Actor network和Critic network。图6中示出了上述深度学习模型中Actor network的基础结构,其中包括多个线性层和激活层(即双曲正切激活函数),图6中从左到右为该Actor network输入的顺序,其中第一个线性层的维度为1051×64,第二个线性层的维度为64×64,第三个线性层的维度为64×1。
基于同一发明构思,本申请实施例中还提供了与代码的补全方法对应的地图描述文件的代码的补全装置,由于本申请实施例中的代码的补全装置解决问题的原理与本申请实施例上述代码的补全方法相似,因此代码的补全装置的实施可以参见方法的实施,重复之处不再赘述。
请参阅图7,图7为本申请实施例所提供的一种代码的补全装置的结构示意图。如图7中所示,代码的补全装置700包括:
获取模块710,用于获取程序编辑器中用户输入的待补全字符;
分析模块720,用于根据程序编辑器的编程语言库、程序编辑器的第三方库和用户在程序编辑器输入的历史代码,确定待补全字符对应的多个推荐字符类型不同的推荐字符集,每个推荐字符集包括多个推荐字符;
显示模块730,用于根据每个推荐字符集的推荐字符,生成推荐字符列表,并显示在程序编辑器的预设位置上;
补全模块740,用于获取用户在推荐字符列表中选择的目标推荐字符,将程序编辑器的待补全字符替换为目标推荐字符,以形成编程单词或编程段落。
在一优选实施例中,每个推荐字符集对应一个推荐字符集优先级,每个推荐字符集的推荐字符对应一个推荐字符优先级,显示模块730具体用于:将每个推荐字符集中推荐字符优先级相同的多个推荐字符作为一个推荐字符组;将每个推荐字符组中的多个推荐字符按照每个推荐字符对应的推荐字符集的推荐字符集优先级排列;将多个推荐字符组按照对应的推荐字符优先级由高至低排列,以生成推荐字符列表。
在一优选实施例中,还包括更新模块750,用于针对目标推荐字符对应的推荐字符集,通过以下方式更新该推荐字符集:根据目标推荐字符、用户在程序编辑器输入的当前代码以及该推荐字符集的推荐字符,确定多个候选字符;根据多个候选字符,确定该推荐字符集更新后的推荐字符以及每个推荐字符在该推荐字符集中的推荐字符优先级。
在一优选实施例中,更新模块750具体用于:通过以下方式确定多个候选字符:确定目标推荐字符对应的推荐字符集中预设推荐字符优先级前的推荐字符,将每个推荐字符作为一个候选字符;获取用户输入的代码中在待补全字符之前预设数量的编程单词,将每个编程单词作为一个候选字符;将当前的目标推荐字符作为一个候选字符。
在一优选实施例中,更新模块750具体用于:通过以下方式确定更新后的推荐字符集:确定每个候选字符对应的候选字符向量;将所有候选字符向量输入与目标推荐字符的推荐字符类型对应的、预先训练好的的深度学习模型,以获取深度学习模型输出的每个候选字符对应的评价值;根据多个候选字符,确定更新后的推荐字符集的推荐字符,以及根据每个候选字符对应的评价值,确定该候选字符在更新后的推荐字符集对应的推荐字符的推荐字符优先级。
在一优选实施例中,更新模块750还用于:针对评价值最大的候选字符,确定该候选字符与目标推荐字符是否为相同的字符;若不是相同的字符,则将该候选字符对应的推荐字符优先级减少一级;以及将目标推荐字符在该推荐字符集的推荐字符优先级增加一级。
在一优选实施例中,分析模块720具体用于:推荐字符类型包括语法类型和用户历史编写类型,语法类型包括多个语法子类型,通过以下方式确定多个推荐字符类型不同的推荐字符集的推荐字符:根据程序编辑器的编程语言库、程序编辑器的第三方库,分析待补全字符的数据类型,根据待补全字符的数据类型,确定每个语法子类型的推荐字符集的推荐字符;分析用户在程序编辑器输入的历史代码,确定待补全字符对应的编程单词或编程段落;根据待补全字符对应的编程单词或编程段落,确定用户历史编写类型的推荐字符集的推荐字符。
请参阅图8,图8为本申请实施例所提供的一种电子设备的结构示意图。如图8中所示,电子设备800包括处理器810、存储器820和总线830。
存储器820存储有处理器810可执行的机器可读指令,当电子设备800运行时,处理器810与存储器820之间通过总线830通信,机器可读指令被处理器810执行时,可以执行如上述图1所示方法实施例中的代码的补全方法的步骤,具体实现方式可参见方法实施例,在此不再赘述。
本申请实施例还提供一种计算机可读存储介质,该存储介质上存储有计算机程序,该计算机程序被处理器运行时可以执行如上述代码的补全方法的步骤,具体实现方式可参见方法实施例,在此不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储器包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的精神和范围,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种代码的补全方法,其特征在于,所述方法包括:
获取程序编辑器中用户输入的待补全字符;
根据程序编辑器的编程语言库、程序编辑器的第三方库和用户在程序编辑器输入的历史代码,确定所述待补全字符对应的多个推荐字符类型不同的推荐字符集,每个推荐字符集包括多个推荐字符;
根据每个推荐字符集的推荐字符,生成推荐字符列表,并显示在程序编辑器的预设位置上;
获取用户在所述推荐字符列表中选择的目标推荐字符,将程序编辑器的待补全字符替换为所述目标推荐字符,以形成编程单词或编程段落。
2.根据权利要求1所述的方法,其特征在于,每个推荐字符集对应一个推荐字符集优先级,每个推荐字符集的推荐字符对应一个推荐字符优先级,所述根据每个推荐字符集的推荐字符,生成推荐字符列表的步骤,具体包括:
将每个推荐字符集中推荐字符优先级相同的多个推荐字符作为一个推荐字符组;
将每个推荐字符组中的多个推荐字符按照每个推荐字符对应的推荐字符集的推荐字符集优先级排列;
将多个推荐字符组按照对应的推荐字符优先级由高至低排列,以生成推荐字符列表。
3.根据权利要求2所述的方法,其特征在于,针对所述目标推荐字符对应的推荐字符集,通过以下方式更新该推荐字符集:
根据目标推荐字符、用户在程序编辑器输入的当前代码以及该推荐字符集的推荐字符,确定多个候选字符;
根据多个候选字符,确定该推荐字符集更新后的推荐字符以及每个推荐字符在该推荐字符集中的推荐字符优先级。
4.根据权利要求3所述的方法,其特征在于,通过以下方式确定多个候选字符:
确定目标推荐字符对应的推荐字符集中预设推荐字符优先级前的推荐字符,将每个推荐字符作为一个候选字符;
获取用户输入的代码中在所述待补全字符之前预设数量的编程单词,将每个编程单词作为一个候选字符;
将当前的目标推荐字符作为一个候选字符。
5.根据权利要求3所述的方法,其特征在于,通过以下方式确定该推荐字符集更新后的推荐字符以及每个推荐字符在该推荐字符集中的推荐字符优先级:
确定每个候选字符对应的候选字符向量;
将所有候选字符向量输入与目标推荐字符的推荐字符类型对应的、预先训练好的深度学习模型,以获取所述深度学习模型输出的每个候选字符对应的评价值;
根据多个候选字符,确定更新后的推荐字符集的推荐字符,以及根据每个候选字符对应的评价值,确定更新后的推荐字符集的推荐字符的推荐字符优先级。
6.根据权利要求5所述的方法,其特征在于,还包括:
针对评价值最大的候选字符,确定该候选字符与目标推荐字符是否为相同的字符;
若不是相同的字符,则将该候选字符对应的推荐字符优先级减少一级;以及
将所述目标推荐字符在该推荐字符集的推荐字符优先级增加一级。
7.根据权利要求1所述的方法,其特征在于,所述推荐字符类型包括语法类型和用户历史编写类型,所述语法类型包括多个语法子类型,通过以下方式确定多个推荐字符类型不同的推荐字符集的推荐字符:
根据程序编辑器的编程语言库、程序编辑器的第三方库,分析所述待补全字符的数据类型,
根据所述待补全字符的数据类型,确定每个语法子类型的推荐字符集的推荐字符;
分析用户在程序编辑器输入的历史代码,确定所述待补全字符对应的编程单词或编程段落;
根据所述待补全字符对应的编程单词或编程段落,确定用户历史编写类型的推荐字符集的推荐字符。
8.一种代码的补全装置,其特征在于,包括:
获取模块,用于获取程序编辑器中用户输入的待补全字符;
分析模块,用于根据程序编辑器的编程语言库、程序编辑器的第三方库和用户在程序编辑器输入的历史代码,确定所述待补全字符对应的多个推荐字符类型不同的推荐字符集,每个推荐字符集包括多个推荐字符;
显示模块,用于根据每个推荐字符集的推荐字符,生成推荐字符列表,并显示在程序编辑器的预设位置上;
补全模块,用于获取用户在所述推荐字符列表中选择的目标推荐字符,将程序编辑器的待补全字符替换为所述目标推荐字符,以形成编程单词或编程段落。
9.一种电子设备,其特征在于,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述处理器执行所述机器可读指令,以执行如权利要求1至7任一所述的代码的补全方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如权利要求1至7任一所述的代码的补全方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210349591.8A CN114647408A (zh) | 2022-04-02 | 2022-04-02 | 一种代码的补全方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210349591.8A CN114647408A (zh) | 2022-04-02 | 2022-04-02 | 一种代码的补全方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114647408A true CN114647408A (zh) | 2022-06-21 |
Family
ID=81995723
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210349591.8A Pending CN114647408A (zh) | 2022-04-02 | 2022-04-02 | 一种代码的补全方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114647408A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116339705A (zh) * | 2023-05-30 | 2023-06-27 | 天津金城银行股份有限公司 | 一种网页h5编辑器代码提示方法、装置和设备 |
CN117632106A (zh) * | 2023-11-21 | 2024-03-01 | 广州致远电子股份有限公司 | 代码补全方法、装置、设备以及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110060984A1 (en) * | 2009-09-06 | 2011-03-10 | Lee Yung-Chao | Method and apparatus for word prediction of text input by assigning different priorities to words on a candidate word list according to how many letters have been entered so far by a user |
CN110502227A (zh) * | 2019-08-28 | 2019-11-26 | 网易(杭州)网络有限公司 | 代码补全的方法及装置、存储介质、电子设备 |
CN110673836A (zh) * | 2019-08-22 | 2020-01-10 | 阿里巴巴集团控股有限公司 | 一种代码补全方法、装置、计算设备及存储介质 |
CN111857688A (zh) * | 2020-07-22 | 2020-10-30 | 中国平安财产保险股份有限公司 | Sql代码自动补全方法、系统及存储介质 |
CN112527273A (zh) * | 2020-12-18 | 2021-03-19 | 平安科技(深圳)有限公司 | 一种代码补全方法、装置以及相关设备 |
CN112817583A (zh) * | 2021-04-19 | 2021-05-18 | 阿里云计算有限公司 | 一种代码编辑方法、装置、服务端、用户设备及存储介质 |
US20210294432A1 (en) * | 2019-07-15 | 2021-09-23 | Tencent Technology (Shenzhen) Company Limited | Character recommending method and apparatus, and computer device and storage medium |
-
2022
- 2022-04-02 CN CN202210349591.8A patent/CN114647408A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110060984A1 (en) * | 2009-09-06 | 2011-03-10 | Lee Yung-Chao | Method and apparatus for word prediction of text input by assigning different priorities to words on a candidate word list according to how many letters have been entered so far by a user |
US20210294432A1 (en) * | 2019-07-15 | 2021-09-23 | Tencent Technology (Shenzhen) Company Limited | Character recommending method and apparatus, and computer device and storage medium |
CN110673836A (zh) * | 2019-08-22 | 2020-01-10 | 阿里巴巴集团控股有限公司 | 一种代码补全方法、装置、计算设备及存储介质 |
CN110502227A (zh) * | 2019-08-28 | 2019-11-26 | 网易(杭州)网络有限公司 | 代码补全的方法及装置、存储介质、电子设备 |
CN111857688A (zh) * | 2020-07-22 | 2020-10-30 | 中国平安财产保险股份有限公司 | Sql代码自动补全方法、系统及存储介质 |
CN112527273A (zh) * | 2020-12-18 | 2021-03-19 | 平安科技(深圳)有限公司 | 一种代码补全方法、装置以及相关设备 |
CN112817583A (zh) * | 2021-04-19 | 2021-05-18 | 阿里云计算有限公司 | 一种代码编辑方法、装置、服务端、用户设备及存储介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116339705A (zh) * | 2023-05-30 | 2023-06-27 | 天津金城银行股份有限公司 | 一种网页h5编辑器代码提示方法、装置和设备 |
CN117632106A (zh) * | 2023-11-21 | 2024-03-01 | 广州致远电子股份有限公司 | 代码补全方法、装置、设备以及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107506414B (zh) | 一种基于长短期记忆网络的代码推荐方法 | |
CN111444320A (zh) | 文本检索方法、装置、计算机设备和存储介质 | |
CN114647408A (zh) | 一种代码的补全方法、装置、电子设备及存储介质 | |
CN107608951B (zh) | 报表生成方法和系统 | |
JP7293729B2 (ja) | 学習装置、情報出力装置、及びプログラム | |
US9495150B2 (en) | Information processing apparatus and method, and computer program product | |
CN111656453A (zh) | 用于信息提取的层次实体识别和语义建模框架 | |
JP6759824B2 (ja) | 適応的な電子的リーディング支援の提供 | |
US20240296603A1 (en) | Systems and methods for digital ink generation and editing | |
CN114116441A (zh) | 一种ui界面测试方法、装置、电子设备及存储介质 | |
CN106030568A (zh) | 自然语言处理系统、自然语言处理方法、以及自然语言处理程序 | |
CN117435230A (zh) | 基于神经网络的代码注释处理方法及装置 | |
CN116450111A (zh) | 一种业务对象的创建方法、装置、设备及存储介质 | |
CN116187353A (zh) | 翻译方法、装置、计算机设备及其存储介质 | |
CN117897710A (zh) | 解决工业数据转换问题的人工智能方法 | |
CN109144564B (zh) | 一种基于历史修改模式的修改影响分析推荐方法及其系统 | |
WO2014030258A1 (ja) | 形態素解析装置、テキスト分析方法、及びそのプログラム | |
US11886826B1 (en) | Systems and methods for language model-based text insertion | |
US11983488B1 (en) | Systems and methods for language model-based text editing | |
CN112347793B (zh) | 一种基于规则与学习的语义解析方法、装置和电子设备 | |
JP7375096B2 (ja) | 分散表現生成システム、分散表現生成方法及び分散表現生成プログラム | |
CN112860958B (zh) | 一种信息显示方法及装置 | |
US20240163238A1 (en) | Generating editable email components utilizing a constraint-based knowledge representation | |
KR20240105218A (ko) | 구조화된 질의 및 구조화된 질의의 정확도 예측 정보 생성 장치, 이를 위한 방법, 및 상기 장치를 포함하는 대화형 인터페이스 장치 | |
WO2024191475A1 (en) | Systems and methods for language model-based text editing |
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 |