信息处理装置和方法以及在编程环境中推荐代码的方法与流程

文档序号:17987880发布日期:2019-06-22 00:32阅读:145来源:国知局
信息处理装置和方法以及在编程环境中推荐代码的方法与流程

本公开涉及信息处理装置和信息处理方法。特别地,本公开涉及在编程环境中推荐代码码片。



背景技术:

代码推荐是现代集成开发环境(ide)中的主要功能之一。对于诸如java等静态编程语言,得益于标识符类型注释,传统的代码推荐方法能够很好地工作。然而,对于近年来广泛使用的诸如python、javascript等动态编程语言,由于不存在标识符类型注释,因而传统的代码推荐方法不能提供与静态编程语言等同的支持。

因此,需要提供一种信息处理技术,其能够克服现有的代码推荐方法的缺陷,为动态编程语言提供良好的代码推荐功能。

应该注意,上面对技术背景的介绍只是为了方便对本申请的技术方案进行清楚、完整的说明,并方便本领域技术人员的理解而阐述的。不能仅仅因为这些方案在本申请的背景技术部分进行了阐述而认为上述技术方案为本领域技术人员所公知。



技术实现要素:

在下文中将给出关于本公开的简要概述,以便提供关于本公开的某些方面的基本理解。应当理解,这个概述并不是关于本公开的穷举性概述。它并不是意图确定本公开的关键或重要部分,也不是意图限定本公开的范围。其目的仅仅是以简化的形式给出某些概念,以此作为稍后论述的更详细描述的前序。

本公开的目的在于提供一种信息处理技术,可应用于在动态编程语言的编程环境中推荐代码。通过根据本公开的信息处理技术实现的代码推荐方法,较之传统的代码推荐方法,能够在不提高计算代价的前提下提高代码推荐的准确性。

为了实现本公开的目的,根据本公开的一个方面,提供了一种信息处理装置,用于对元素集合中的若干元素构成的元素序列进行处理以预测后续元素,元素序列中的元素之间存在逻辑关系,该信息处理装置包括:第一预测单元,接收元素序列并且基于元素序列生成中间状态和第一预测结果;一个或更多个第二预测单元,一个或更多个第二预测单元的数目对应于元素集合中的元素类型的数目,针对每种元素类型存在一个对应的第二预测单元,一个或更多个第二预测单元接收中间状态并且基于中间状态以及与相应的元素类型相关的参数生成一个或更多个第二预测结果;以及确定单元,接收第一预测结果和一个或更多个第二预测结果并且基于第一预测结果和一个或更多个第二预测结果确定后续元素。

根据本公开的另一方面,提供了一种信息处理方法,用于对元素集合中的若干元素构成的元素序列进行处理以预测后续元素,元素序列中的元素之间存在逻辑关系,该信息处理方法包括:接收元素序列并且基于元素序列生成中间状态和第一预测结果;针对每种元素类型,接收中间状态并且基于中间状态以及与相应的元素类型相关的参数生成一个或更多个第二预测结果;以及接收第一预测结果和一个或更多个第二预测结果并且基于第一预测结果和一个或更多个第二预测结果确定后续元素。

根据本公开的另一方面,还提供了一种通过根据本公开的信息处理装置实现的用于在编程环境中推荐代码码片的方法。

根据本公开的另一方面,还提供了能够实现根据本公开的信息处理方法的计算机程序。此外,还提供了具有至少计算机可读介质形式的计算机程序产品,其上记录有用于实现根据本公开的信息处理方法的计算机程序代码。

通过根据本公开的信息处理技术实现的用于在编程环境中推荐代码码片的方法,能够在不增加计算代价的情况下准确地向编程人员推荐代码。

附图说明

参照下面结合附图对本公开实施方式的说明,会更加容易地理解本公开的以上和其它目的、特点和优点,在附图中:

图1是示出集成开发环境中的代码推荐的示意图;

图2是示出代码推荐模型的训练过程的示意性流程图;

图3是示出根据本公开的第一实施方式的信息处理装置的框图;

图4是示出根据本公开的第一实施方式的信息处理装置的各个单元的内部结构的示意图;

图5是示出在javascript编程语言中不同类型的标识符的定义和调用之间的距离的统计数据的示意图;

图6是示出根据本公开的第二实施方式的信息处理装置的框图;

图7是示出根据本公开的第二实施方式的信息处理装置的各个单元的内部结构的示意图;

图8是示出图7中使用的第二预测单元的内部结构的示意图;

图9是示出根据本公开的信息处理方法的流程图;以及

图10是示出可用来实现根据本公开的实施方式的信息处理装置和信息处理方法的通用机器的结构简图。

具体实施方式

在下文中将结合附图对本公开的示例性实施方式进行描述。为了清楚和简明起见,在说明书中并未描述实际实施方式的所有特征。然而,应该了解,在开发任何这种实际实施方式的过程中可以做出很多特定于实施方式的决定,以便实现开发人员的具体目标,并且这些决定可能会随着实施方式的不同而有所改变。

在此,还需要说明的一点是,为了避免因不必要的细节而模糊了本公开,在附图中仅仅示出了与根据本公开的方案密切相关的部件,而省略了与本公开关系不大的其他细节。

通常,代码推荐可以通过如下方式实现:从编程语言的源代码库学习语言模型,根据所学习的语言模型针对输入的代码来预测接下来的可能性最高的代码并推荐给编程人员。事实上,编程语言中的所有代码可以被视为构成向量空间,由作为元素的代码组合而成的代码片段,即元素序列,可以被视为向量空间中的向量序列。换言之,代码推荐可以被视为对元素集合中的若干元素构成的元素序列进行处理以预测后续元素,其中元素序列中的元素之间存在逻辑关系。

例如,对于某一特定的编程语言,该编程语言中的所有代码可以由码片构成。假设编程语言的所有码片构成了向量空间,每个向量的长度即是所有码片的总数目。对于由一些码片构成的代码片段,可以将其按时间步骤拆分为向量集合,该向量集合中的向量之间存在逻辑关系,在某种程度上该逻辑关系的示例可以是编程语言的语法。通过所学习的语言模型可以预测接下来的可能性最高的向量,也就是代码片段接下来的可能性最高的码片。

为此,根据本公开的信息处理装置包括:第一预测单元,接收元素序列并且基于元素序列生成中间状态和第一预测结果;一个或更多个第二预测单元,一个或更多个第二预测单元的数目对应于元素集合中的元素类型的数目,针对每种元素类型存在一个对应的第二预测单元,一个或更多个第二预测单元接收中间状态并且基于中间状态以及与相应的元素类型相关的参数生成一个或更多个第二预测结果;以及确定单元,接收第一预测结果和一个或更多个第二预测结果并且基于第一预测结果和一个或更多个第二预测结果确定后续元素。

根据本公开的信息处理技术使用基于稀疏注意力网络的自然语言模型,以便于获取元素序列中的元素之间的长距离的相互依赖关系,从而提高对后续元素的预测的准确性。例如,根据本公开的信息处理技术可以用于在集成开发环境中基于编程人员已输入的程序代码向编程人员推荐接下来可能性最高的代码。

在集成开发环境中,代码推荐可以分类为码片(token)层级的推荐和陈述(statement)层级的推荐。码片的示例可以是编程语言中使用的各种标识符,而陈述的示例可以是编程语言中使用的语句。

图1是示出集成开发环境中的代码推荐的示意图。

如图1中所示,码片层级的推荐可以基于编程人员已输入的字符来自动地推荐完整的码片,而陈述层级的推荐可以基于编程人员已输入的码片序列来推荐接下来可能性最高的码片。例如,如图1所示,对于码片层级的推荐,当编程人员输入“re”时,集成开发环境的推荐功能可以自动推荐字头为“re”的码片“reader”、“reduce(function,sequence)”、“referenceeror”等作为要输入的码片的候选。再者,例如,如图1所示,对于陈述层级的推荐,当编程人员输入代码片段,即码片序列“for(inti=0;i<10;”时,集成开发环境的推荐功能可以自动推荐码片“i++)”以补全该陈述。

本文所描述的实施方式仅涉及陈述层级的推荐,即根据事先构建的模型向编程人员推荐接下来的可能性最高的码片。

图2是示出代码推荐模型的训练过程的示意性流程图。

如图2中所示,首先可以对作为训练数据的源代码进行码片化处理以获得码片序列。随后,对码片序列进行分割以获得码片,即获得无标签的训练数据(上下文码片)以及带标签的训练数据(预测码片)。接着使用学习算法对带标签的训练数据进行训练以得到代码推荐模型,从而可用于无标签的训练数据的处理以获得标签,即接下来可能性最高的码片。

下面参照图3至图8对根据本公开的实施方式的信息处理装置进行描述。

第一实施方式

图3是示出根据本公开的第一实施方式的信息处理装置300的框图。图4是示出根据本公开的第一实施方式的信息处理装置300的各个单元的内部结构的示意图。

如图3所示,信息处理装置300包括第一预测单元301、第二预测单元302和确定单元303。

第一预测单元301可以接收作为元素序列的码片序列并且基于码片序列生成中间状态和第一预测结果。如图4中所示,第一预测单元301可以通过长短期记忆(lstm)神经网络来实现。

lstm神经网络是一种时间递归神经网络(rnn),其适用于处理和预测时间序列中间隔和延迟非常长的重要事件。鉴于lstm神经网络对于本领域技术人员是公知,本文仅对其在本公开的实施方式中的应用进行描述,而不对其原理进行更详细的描述。

如图4中所示,通过lstm神经网络实现的第一预测单元301接收由元素(例如,码片)构成的序列输入(x0,x1,…,xt)并且输出中间状态(h0,h1,…,ht)。此外,第一预测单元301根据下式(1)计算作为第一预测结果yt的可能性最高的下一元素的分布。

其中,是可以通过训练进行调整的参数,|v|是元素集合中的元素的总数目。例如,在集成开发环境中,|v|是编程语言中的所有码片的总数。

第二预测单元302接收第一预测单元301输出的中间状态并且基于接收到的中间状态生成第二预测结果。如图4中所示,第二预测单元302可以通过稀疏注意力网络(sparseattentionnetword;san)模型来实现。近年来,稀疏注意力网络被广泛使用在自然语言处理、图像识别及语音识别等各种不同类型的深度学习任务中,对于本领域技术人员是公知的,本文仅对其在本公开的实施方式中的应用进行描述,而不对其原理进行更详细的描述。

具体地,如图4所示,在时间步骤t,将最近的先前k个元素连结(concatenate)在一起作为上下文表示,并且将它们存在存储器中。k表示注意力长度。随后,根据下式(2)至(5)在每个时间步骤t基于存储器mt中存储的内容,生成注意力(attention)分布和上下文向量

其中是可以通过训练进行调整的参数,并且1k表示元素均为1的k维向量。tanh表示取tanh函数,而softmax表示取softmax函数。

此外,第二预测单元302保存关于这些元素表示的符号id的向量mt=[id1,id2,…,idk]t∈nk(即,针对大的全部元素集合的指针(pointer))。随后,根据下式(6)和(7)获得全部元素集合上的稀疏分布。

其中-c是大的负常数,例如-1000。

确定单元303接收第一预测结果yt和第二预测结果it并且基于其确定后续元素。例如,在集成开发环境中,后续元素是接下来可能性最高的码片。

具体地,如图4所示,确定单元303根据下式(8)至(10),针对第一预测单元301和第二预测单元302的第一预测结果yt和第二预测结果it计算其概率分布并且得到最终的加权的预测结果

其中分别是可以通过训练进行调整的权重矩阵和偏置。

确定单元303得到的预测结果可用于预测后续的元素。例如,在集成开发环境中,后续的元素是接下来可能性最高的码片。

根据本公开的第一实施方式的信息处理装置300可以在不增加计算代价的情况下提高推荐准确性。

在根据本公开的第一实施方式的信息处理装置300中,第二预测单元302将关于任何类型的元素的注意力长度均设定为同一个值,即k。此外,第二预测单元302将关于任何类型的元素的注意力起始位置也均设定为同一个值,即t-k。

然而,发明人注意到,在实际应用中,例如对于javascript的源代码,不同类型的标识符的定义和调用之间的距离在不同的距离区间上所占的比例并不相同。图5是示出在javascript编程语言中不同类型的标识符的定义和调用之间的距离的统计数据的示意图。

在javascript编程语言中存在五种类型的标识符,即变量(variable)、数组(argument)、函数(function)、类(class)和属性(attribute)。例如,如图5中所示,以码片为单位,在0-10的距离上,数组的定义和调用之间的距离占最大的比例,而函数的定义和调用之间的距离占最小的比例。在10-20的距离上,五种类型的标识符的定义和调用之间的距离的比例基本上是相近的。在20-30的距离上,类的定义和调用之间的距离占最大的比例。在30-40以及40-50的距离上,函数的定义和调用之间的距离占最大的比例。

基于上述统计数据,可以对根据本公开的第一实施方式的信息处理装置进行改进以进一步提高推荐的准确性。

第二实施方式

图6是示出根据本公开的第二实施方式的信息处理装置600的框图。图7是示出根据本公开的第二实施方式的信息处理装置600的各个单元的内部结构的示意图。

与根据本公开的第一实施方式的信息处理装置300相似,根据本公开的第二实施方式的信息处理装置600也包括第一预测单元601、第二预测单元602和确定单元603。然而,不同于根据本公开的第一实施方式的信息处理装置300,根据本公开的第二实施方式的信息处理装置600包括多个第二预测单元602。

根据本公开的第二实施方式,第二预测单元602的数目对应于元素集合中的元素类型的数目,针对每种元素类型存在一个对应的第二预测单元602。例如,对于javascript编程环境中的码片推荐,存在5个第二预测单元602,分别对应于不同的标识符类型变量、数组、函数、类和属性。

与根据第一实施方式的信息处理装置300的第一预测单元301相似,根据第二实施方式的信息处理装置600的第一预测单元601可以接收作为元素序列的码片序列并且基于码片序列生成中间状态和第一预测结果。如图7中所示,第一预测单元601同样可以通过长短期记忆神经网络来实现。

如图7中所示,通过lstm神经网络实现的第一预测单元601接收由元素(例如,码片)构成的序列输入(x0,x1,…,xt)并且输出中间状态(h0,h1,…,ht)。此外,第一预测单元601根据下式(11)计算作为第一预测结果y0,t的可能性最高的下一元素的分布。

其中,是可以通过训练进行调整的参数,|v|是元素集合中的元素的总数目,例如编程语言中的所有码片的总数。

根据公开的第二实施方式,多个第二预测单元602接收第一预测单元601输出的中间状态并且基于中间状态以及与相应的元素类型相关的参数生成多个第二预测结果。如图7中所示,第二预测单元602同样可以通过稀疏注意力网络来实现。然而,由于第二预测单元602与元素类型一一对应,因此可以针对不同的元素类型设定不同的第二预测单元602。

如上文所述,在实际应用中,可以针对不同的元素类型设定不同的注意力起始位置和注意力长度,从而进一步提高推荐准确性。为此,在根据公开的第二实施方式中,针对各个元素类型设置相应的第二预测单元602,每个第二预测单元602的相应的注意力起始位置和注意力长度是针对相应的元素类型单独设定的。

根据本公开的第二实施方式,多个第二预测单元602中的与相应的元素类型相关的参数可以包括针对相应的元素类型设定的相应的注意力起始位置和注意力长度。

如图7所示,不同于根据第一实施方式的第二预测单元302,根据第二实施方式的第二预测单元602具有四个输入。第一个输入是由第一预测单元601输出的中间状态h0,h1,…,ht。第二个输入是表示在时间步骤t-1处的关于第i个元素类型的注意力起始位置的b1,t-1,b2,t-1,…,bn,t-1,其中1≤i≤n。n表示元素类型的数目,即第二预测单元602的数目。对于javascript编程环境,n=5。第三个输入是表示在时间步骤t-1处的关于第i个元素类型的注意力长度的l1,t-1,l2,t-2,…,ln,t-1。第四个输入是mi,t∈nk,其是在时间步骤t处的关于元素类型i的符号id的向量。

此外,根据第二实施方式的第二预测单元602具有四个输出。第一个输出ci,t表示在时间步骤t处的关于元素类型i的稀疏注意力网络的上下文向量。第二个输出bi,t表示在时间步骤t处的关于第i个元素类型的注意力起始位置。第三个输出li,t表示在时间步骤t处的关于第i个元素类型的注意力长度。第四个输出yi,t表示在时间步骤t处的由相应的第二预测单元602产生的全部元素集合上的伪稀疏分布。

图8是示出图7中使用的第二预测单元602的内部结构的示意图。

如图8所示,对于与第i个元素类型对应的第二预测单元602,在时间步骤t,将最近的先前k个元素连结在一起作为上下文表示,并且将它们存在存储器中。随后,根据下式(12)至(15)在每个时间步骤t基于存储器mi,t中存储的内容,生成注意力分布和上下文向量ci,t∈rk

其中是可以通过训练进行调整的参数,并且表示元素均为1的li,t-1维向量。

此外,第二预测单元602保存关于这些元素表示的符号id的向量

(即,针对大的全部元素集合的指针)。随后,根据下式(16)和(17)获得全部元素集合上的稀疏分布。

其中-c是大的负常数,例如-1000。

根据本公开的第二实施方式,可以通过根据下式(18)至(20)进行训练来获得表示在时间步骤t处的关于第i个元素类型的注意力起始位置的第二个输出bi,t。

bi,t=round(qi,t×t)∈n,0≤bi,t≤t(20)

其中,是可以通过训练进行调整的参数。round表示取整函数,即取qi,t×t的整数部分,从而bi,t∈[0,t]。

相似地,根据本公开的第二实施方式,可以通过根据下式(21)至(23)进行训练来获得表示在时间步骤t处的关于第i个元素类型的注意力长度的第三个输出li,t。

li,t=round(vi,t×t)∈n,0≤li,t≤t(23)

其中,是可以通过训练进行调整的参数。round表示取整函数,即取vi,t×t的整数部分,从而li,t∈[0,t]。

确定单元603接收第一预测结果y0,t和第二预测结果yi,t并且基于其确定后续的元素。例如,在集成开发环境中,后续的元素是接下来可能性最高的码片。

具体地,如图7所示,确定单元303根据下式(24)至(26),针对第一预测单元601和第二预测单元602的第一预测结果y0,t和第二预测结果yi,t计算其概率分布并且得到最终的加权的预测结果

其中分别是可以通过训练进行调整的权重矩阵和偏置。

确定单元603得到的预测结果可用于预测后续的元素。例如,在集成开发环境中,后续的元素是接下来可能性最高的码片。

根据本公开的第二实施方式,可以针对不同的元素类型设定不同的注意力长度和注意力起始位置,从而在不增加计算代价的情况下进一步提高了预测准确性。

此外,根据本公开的第二实施方式,可以基于带标签的训练数据通过迭代的方式针对不同的元素类型的注意力长度和注意力起始位置进行训练,从而最终确定适合相应的元素类型的注意力长度和注意力起始位置。

图9是示出根据本公开的信息处理方法900的流程图。信息处理方法900用于对元素集合中的若干元素构成的元素序列进行处理以预测后续元素,其中元素序列中的元素之间存在逻辑关系

信息处理方法900开始于步骤s901。随后,在步骤s902中,接收元素序列并且基于元素序列生成中间状态和第一预测结果。步骤s902可以通过根据本公开的第二实施方式的第一预测单元601来实现。

随后,在步骤s903中,针对每种元素类型,接收中间状态并且基于中间状态以及与相应的元素类型相关的参数生成一个或更多个第二预测结果。步骤s903可以通过根据本公开的第二实施方式的第二预测单元602来实现。

接着,在步骤s904中,接收第一预测结果和一个或更多个第二预测结果并且基于第一预测结果和一个或更多个第二预测结果确定后续元素。步骤s904可以通过根据本公开的第二实施方式的确定单元603来实现。

最后,信息处理方法900结束于步骤s905。

尽管上文结合集成开发环境中的代码推荐描述了本公开的实施方式,但是对于本领域技术人员明显的是,本公开的实施方式同样可以应用于根据已有元素序列预测接下来可能性最高的元素的其他的应用,例如自然语言处理、语音处理等。

图10是示出可用来实现根据本公开的实施方式的信息处理装置和信息处理方法的通用机器1000的结构简图。通用机器1000可以是例如计算机系统。应注意,通用机器1000只是一个示例,并非暗示对本公开的方法和装置的使用范围或者功能的局限。也不应将通用机器1000解释为对上述信息处理方法和信息处理装置中示出的任一组件或其组合具有依赖或需求。

在图10中,中央处理单元(cpu)1001根据只读存储器(rom)1002中存储的程序或从存储部分1008加载到随机存取存储器(ram)1003的程序执行各种处理。在ram1003中,还根据需要存储当cpu1001执行各种处理等等时所需的数据。cpu1001、rom1002和ram1003经由总线1004彼此连接。输入/输出接口1005也连接到总线1004。

下述部件也连接到输入/输出接口1005:输入部分1006(包括键盘、鼠标等等)、输出部分1007(包括显示器,例如阴极射线管(crt)、液晶显示器(lcd)等,和扬声器等)、存储部分1008(包括硬盘等)、通信部分1009(包括网络接口卡例如lan卡、调制解调器等)。通信部分1009经由网络例如因特网执行通信处理。根据需要,驱动器1010也可连接到输入/输出接口1005。可拆卸介质1011例如磁盘、光盘、磁光盘、半导体存储器等等可以根据需要被安装在驱动器1010上,使得从中读出的计算机程序可根据需要被安装到存储部分1008中。

在通过软件实现上述系列处理的情况下,可以从网络例如因特网或从存储介质例如可拆卸介质1011安装构成软件的程序。

本领域的技术人员应当理解,这种存储介质不局限于图10所示的其中存储有程序、与设备相分离地分发以向用户提供程序的可拆卸介质1011。可拆卸介质1011的例子包含磁盘(包含软盘)、光盘(包含光盘只读存储器(cd-rom)和数字通用盘(dvd))、磁光盘(包含迷你盘(md)(注册商标))和半导体存储器。或者,存储介质可以是rom1002、存储部分1008中包含的硬盘等等,其中存有程序,并且与包含它们的设备一起被分发给用户。

此外,本公开还提出了一种存储有机器可读取的指令代码的程序产品。所述指令代码由机器读取并执行时,可执行上述根据本公开的信息处理方法。相应地,用于承载这种程序产品的上面列举的各种存储介质也包括在本公开的范围内。

上面已通过框图、流程图和/或实施方式进行了详细描述,阐明了根据本公开的实施方式的装置和/或方法的具体实施方式。当这些框图、流程图和/或实施方式包含一个或多个功能和/或操作时,本领域的技术人员明白,这些框图、流程图和/或实施方式中的各功能和/或操作可以通过各种硬件、软件、固件或实质上它们的任意组合而单独地和/或共同地实施。在一种实施方式中,本说明书中描述的主题的几个部分可通过特定用途集成电路(asic)、现场可编程门阵列(fpga)、数字信号处理器(dsp)或其他集成形式实现。然而,本领域的技术人员会认识到,本说明书中描述的实施方式的一些方面能够全部或部分地在集成电路中以在一个或多个计算机上运行的一个或多个计算机程序的形式(例如,以在一个或多个计算机系统上运行的一个或多个计算机程序的形式)、以在一个或多个处理器上运行的一个或多个程序的形式(例如,以在一个或多个微处理器上运行的一个或多个程序的形式)、以固件的形式、或以实质上它们的任意组合的形式等效地实施,并且,根据本说明书中公开的内容,设计用于本公开的电路和/或编写用于本公开的软件和/或固件的代码完全是在本领域技术人员的能力范围之内。

应该强调,术语“包括/包含”在本文使用时指特征、要素、步骤或组件的存在,但并不排除一个或更多个其它特征、要素、步骤或组件的存在或附加。涉及序数的术语“第一”,“第二”等并不表示这些术语所限定的特征、要素、步骤或组件的实施顺序或者重要性程度,而仅仅是为了描述清楚起见而用于在这些特征、要素、步骤或组件之间进行标识。

综上,在根据本公开的实施方式中,本公开提供了如下方案,但不限于此:

方案1.一种信息处理装置,用于对元素集合中的若干元素构成的元素序列进行处理以预测后续元素,所述元素序列中的元素之间存在逻辑关系,所述信息处理装置包括:

第一预测单元,接收所述元素序列并且基于所述元素序列生成中间状态和第一预测结果;

一个或更多个第二预测单元,所述一个或更多个第二预测单元的数目对应于所述元素集合中的元素类型的数目,针对每种元素类型存在一个对应的第二预测单元,所述一个或更多个第二预测单元接收所述中间状态并且基于所述中间状态以及与相应的元素类型相关的参数生成一个或更多个第二预测结果;以及

确定单元,接收所述第一预测结果和所述一个或更多个第二预测结果并且基于所述第一预测结果和所述一个或更多个第二预测结果确定所述后续元素。

方案2.如方案1所述的信息处理装置,其中,所述第一预测单元是通过长短期记忆网络实现的。

方案3.如方案1所述的信息处理装置,其中,所述一个或更多个第二预测单元是通过稀疏注意力网络实现的。

方案4.如方案3所述的信息处理装置,其中,所述一个或更多个第二预测单元中的与相应的元素类型相关的参数包括针对相应的元素类型设定的相应的注意力起始位置和注意力长度。

方案5.如方案1所述的信息处理装置,其中,所述确定单元根据所述第一预测结果和所述一个或更多个第二预测结果的权重确定所述后续元素。

方案6.如方案1所述的信息处理装置,其中,所述信息处理装置能够基于现有的元素序列进行训练以调整所述第一预测单元、所述第二预测单元和所述确定单元的参数。

方案7.如方案1所述的信息处理装置,其中,所述元素是计算机程序语言的代码码片,并且所述元素序列是计算机程序语言的代码片段。

方案8.一种信息处理方法,用于对元素集合中的若干元素构成的元素序列进行处理以预测后续元素,所述元素序列中的元素之间存在逻辑关系,所述信息处理方法包括:

接收所述元素序列并且基于所述元素序列生成中间状态和第一预测结果;

针对每种元素类型,接收所述中间状态并且基于所述中间状态以及与相应的元素类型相关的参数生成一个或更多个第二预测结果;以及

接收所述第一预测结果和所述一个或更多个第二预测结果并且基于所述第一预测结果和所述一个或更多个第二预测结果确定所述后续元素。

方案9.如方案8所述的信息处理方法,其中,所述的与相应的元素类型相关的参数包括针对相应的元素类型设定的相应的注意力起始位置和注意力长度。

方案10.一种用于在编程环境中推荐代码码片的方法,所述方法通过使用如方案1-7中任一项所述的信息处理装置来实现。

方案11.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序在被计算机执行时使得所述计算机执行如权利要求8所述的信息处理方法。

尽管上面已经通过对本公开的具体实施方式的描述对本公开进行了披露,但是,应该理解,本领域的技术人员可在所附权利要求的精神和范围内设计对本公开的各种修改、改进或者等同物。这些修改、改进或者等同物也应当被认为包括在本公开的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1