代码文件查询方法和装置的制造方法

文档序号:8487804阅读:218来源:国知局
代码文件查询方法和装置的制造方法
【技术领域】
[0001] 本发明涉及数据处理技术领域,特别涉及一种代码文件查询方法和装置。
【背景技术】
[0002] 软件系统的代码库一般由大量代码文件组成,为了对软件系统进行维护,需要根 据一些给定的查询词,从代码库中查询与查询词相关的代码文件,从而进行有针对性的维 护。
[0003] 为此, 由GiulianoAntoniol、Gerardo Canfora、Gerardo Casazza、Andrea De Lucia和Ettore Merlo撰写的,在2002年10月在IEEE软件工程汇刊(期刊IEEE Transactions on Software Engineering)的28卷10期中公开的、名称为"Recovering Traceability Links between Code and Documentation"的论文中,提出了一种查询代码 文件的方法,具体包括以下步骤:根据代码库中代码文件所包括的文本信息,提取代码文件 的文本特征;基于给定的查询词,计算提取到的代码文件的文本特征与该查询词之间的相 似度,并将相似度最大的文本特征所对应的代码文件作为该查询词的查询结果输出。
[0004] 然而,对于代码文件来说,即使两个代码文件包含相同的文本信息,如果该两个代 码文件的结构不同,其语义也会不同。而上述查询代码文件的方法仅根据代码文件所包括 的文本信息提取了文本特征,特征提取的准确性低,降低了查询精度。

【发明内容】

[0005] 为了解决现有技术的问题,本发明实施例提供了一种代码文件查询方法和装置。 所述技术方案如下:
[0006] -方面,提供了一种代码文件查询方法,所述方法包括:
[0007] 基于历史查询过程中所应用的历史查询词向量,以及代码库中每个代码文件的文 本特征向量和代码特征向量构造的转换矩阵,对当前查询词向量和所述每个代码文件的代 码特征向量进行转换,得到转换后的查询词向量和每个代码文件转换后的代码特征向量, 所述代码文件的代码特征向量根据代码文件中的代码块确定;
[0008] 根据所述当前查询词向量、所述转换后的查询词向量、所述每个代码文件转换后 的代码特征向量以及所述每个代码文件的文本特征向量,计算每个代码文件与查询词之间 的相似度;
[0009] 根据所述每个代码文件与所述查询词之间的相似度,得到代码文件查询结果。
[0010] 可选地,基于历史查询过程中所应用的历史查询词向量、所述每个代码文件的文 本特征向量和代码特征向量构造的转换矩阵,对当前查询词向量和所述每个代码文件的代 码特征向量进行向量转换,得到转换后的查询词向量和每个代码文件转换后的代码特征向 量包括:
[0011] 计算第一转换矩阵的转置矩阵与所述查询词向量的乘积,得到转换后的查询词向 量,所述转换矩阵包括所述第一转换矩阵和第二转换矩阵;
[0012] 将每个代码文件的代码特征向量组成代码特征矩阵;
[0013] 计算所述代码特征矩阵的转置矩阵与所述第二转换矩阵的乘积,得到转换后的代 码特征矩阵;
[0014] 提取所述转换后的代码特征矩阵的转置矩阵中的每个向量,作为对应代码文件的 转换后的代码特征向量。
[0015] 可选地,根据所述当前查询词向量、所述转换后的查询词向量、所述每个代码文件 转换后的代码特征向量以及所述每个代码文件的文本特征向量,计算每个代码文件与查询 词之间的相似度包括 :
[0016] 计算每个代码文件的文本特征向量与所述查询词向量之间的第一相似度;
[0017] 计算每个代码文件转换后的代码特征向量与所述转换后的查询词向量之间的第 二相似度;
[0018] 对每个代码文件的第一相似度和第二相似度进行加权求和,得到每个代码文件与 所述查询词之间的相似度。
[0019] 可选地,基于历史查询过程中所应用的历史查询词向量,以及代码库中每个代码 文件的文本特征向量和代码特征向量构造的转换矩阵,对当前查询词向量和所述每个代码 文件的代码特征向量进行转换,得到转换后的查询词向量和每个代码文件转换后的代码特 征向量之前,所述方法还包括:
[0020] 对于每个代码文件,根据所述代码文件的自然语言描述、注释和变量名称,获取所 述代码文件的文本特征向量;
[0021] 判断所述代码文件中是否包括出现次数大于预设阈值的代码块;
[0022] 当所述代码文件中包括出现次数大于所述预设阈值的代码块时,提取所述出现次 数大于所述预设阈值的代码块;
[0023] 将提取到的不同代码块的出现次数组成所述代码文件的代码特征向量。
[0024] 可选地,基于历史查询过程中所应用的历史查询词向量、所述每个代码文件的文 本特征向量和代码特征向量构造的转换矩阵,对当前查询词向量和所述每个代码文件的代 码特征向量进行向量转换,得到转换后的查询词向量和每个代码文件转换后的代码特征向 量之前,所述方法还包括:
[0025] 获取历史查询过程中所应用的每个历史查询词向量,组成样本查询矩阵;
[0026] 将代码库中每个代码文件的文本特征向量组成样本文本特征矩阵;
[0027] 将代码块中每个代码文件的代码特征向量组成样本代码特征矩阵;
[0028] 根据所述样本查询矩阵、所述样本文本特征矩阵和所述样本代码特征矩阵,确定 以第一转换矩阵和第二转换矩阵为自变量的目标函数;
[0029] 求解所述目标函数的最小值,获取所述目标函数为最小值时所对应的解。
[0030]可选地,所述目标函数为:
【主权项】
1. 一种代码文件查询方法,其特征在于,所述方法包括: 基于历史查询过程中所应用的历史查询词向量,以及代码库中每个代码文件的文本特 征向量和代码特征向量构造的转换矩阵,对当前查询词向量和所述每个代码文件的代码特 征向量进行转换,得到转换后的查询词向量和每个代码文件转换后的代码特征向量,所述 代码文件的代码特征向量根据代码文件中的代码块确定; 根据所述当前查询词向量、所述转换后的查询词向量、所述每个代码文件转换后的代 码特征向量以及所述每个代码文件的文本特征向量,计算每个代码文件与查询词之间的相 似度; 根据所述每个代码文件与所述查询词之间的相似度,得到代码文件查询结果。
2. 根据权利要求1所述的方法,其特征在于,基于历史查询过程中所应用的历史查询 词向量、所述每个代码文件的文本特征向量和代码特征向量构造的转换矩阵,对当前查询 词向量和所述每个代码文件的代码特征向量进行向量转换,得到转换后的查询词向量和每 个代码文件转换后的代码特征向量包括: 计算第一转换矩阵的转置矩阵与所述查询词向量的乘积,得到转换后的查询词向量, 所述转换矩阵包括所述第一转换矩阵和第二转换矩阵; 将每个代码文件的代码特征向量组成代码特征矩阵; 计算所述代码特征矩阵的转置矩阵与所述第二转换矩阵的乘积,得到转换后的代码特 征矩阵; 提取所述转换后的代码特征矩阵的转置矩阵中的每个向量,作为对应代码文件的转换 后的代码特征向量。
3. 根据权利要求1所述的方法,其特征在于,根据所述当前查询词向量、所述转换后的 查询词向量、所述每个代码文件转换后的代码特征向量以及所述每个代码文件的文本特征 向量,计算每个代码文件与查询词之间的相似度包括: 计算每个代码文件的文本特征向量与所述查询词向量之间的第一相似度; 计算每个代码文件转换后的代码特征向量与所述转换后的查询词向量之间的第二相 似度; 对每个代码文件的第一相似度和第二相似度进行加权求和,得到每个代码文件与所述 查询词之间的相似度。
4. 根据权利要求1所述的方法,其特征在于,基于历史查询过程中所应用的历史查询 词向量,以及代码库中每个代码文件的文本特征向量和代码特征向量构造的转换矩阵,对 当前查询词向量和所述每个代码文件的代码特征向量进行转换,得到转换后的查询词向量 和每个代码文件转换后的代码特征向量之前,所述方法还包括: 对于每个代码文件,根据所述代码文件的自然语言描述、注释和变量名称,获取所述代 码文件的文本特征向量; 判断
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1