CN104166550A - 一种面向软件维护的修改请求重新定制的方法 - Google Patents

一种面向软件维护的修改请求重新定制的方法 Download PDF

Info

Publication number
CN104166550A
CN104166550A CN201410396663.XA CN201410396663A CN104166550A CN 104166550 A CN104166550 A CN 104166550A CN 201410396663 A CN201410396663 A CN 201410396663A CN 104166550 A CN104166550 A CN 104166550A
Authority
CN
China
Prior art keywords
word
phrase
identifier
identifiers
user
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
Application number
CN201410396663.XA
Other languages
English (en)
Inventor
孙小兵
陆美莉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Yangzhou University
Original Assignee
Yangzhou University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Yangzhou University filed Critical Yangzhou University
Priority to CN201410396663.XA priority Critical patent/CN104166550A/zh
Publication of CN104166550A publication Critical patent/CN104166550A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Machine Translation (AREA)

Abstract

本发明公开了软件工程领域内的一种面向软件维护的修改请求重新定制的方法,包括以下步骤:预处理→同义词扩充→分割标识符→匹配→排序,本发明可以有效帮助开发人员制定好的查询语句,从而更准确地定位到要进行维护的代码段,以提高软件维护的效率,可用于软件开发维护中。

Description

一种面向软件维护的修改请求重新定制的方法
技术领域
本发明涉及一种软件维护方法,特别涉及一种软件修改请求重新定制的方法。
背景技术
在软件发布后,用户可能因为增加新的需求、发现新的软件故障、适应新的环境等会提出新的修改请求,这时需要对所开发的软件进行维护和升级。随着软件***的不断演化,为了执行软件维护的任务而对代码进行定位变得越来越困难。维护者所写的修改请求语言通常都与开发者所用的词汇不一样,因此需要花费很大的时间和精力在制定准确的查询上,降低了维护软件的效率。现存的使用自然语言查询的静态代码搜索技术对维护者的帮助并不是很大,尤其是当一个维护者不能准确地写出关于源代码的修改请求的时候,这些静态代码搜索技术就显得很糟糕。因为传统的静态代码搜索技术只是单纯将用户输入的所有单词与源代码进行匹配,只要有一个单词在某个标识符中出现,就将该结果返回给用户,如果用户输入的查询语句有很大的冗余度,则可能有很多无用的结果会被反馈给用户,给用户判断结果是否相关造成了很大困难;如果用户输入的查询语句在源代码无法匹配到,则没有结果返回给用户,而让用户自己制定查询语句又给用户造成了很大的困扰。因此,本发明提出了面向软件维护的修改请求重新定制方法;标识符在编程语言中,是用户编程时使用的名字,对于集合、常量、函数、语句块也有名字,统统称之为标识符。
发明内容
本发明的目的是提供一种面向软件维护的修改请求重新定制的方法,提高数据提取的精度,方便用户查询语句、识别源程序。
本发明的目的是这样实现的:一种面向软件维护的修改请求重新定制的方法,包括以下步骤:
步骤1) 预处理:对于用户输入的自然语言进行分析,用停用词表将冗余的部分去除,得到关键字集合,并存入类型为String名为words的集合中;
步骤2) 同义词扩充:根据用户输入的自然语言的语言环境判断集合words中的每个单词的词性,利用wordnet工具去寻找词性相同的同义词集合,并为words中的每个单词建立该单词的同义词数组,将words和同义词数组内的单词进行替换配对,形成动词+名词的短语,一起存入名为featurewords的集合中,并作为要到代码库中进行匹配的对象;
步骤3) 分割标识符:将当前软件程序中的有用的标识符提取出来,对所提取的标识符进行分割,这些分割后的标识符存入名为identifiers的集合中; 
步骤4) 匹配:将集合featurewords与集合identifiers进行匹配,若集合featurewords中的某个短语在集合identifiers中出现,则将identifiers中并未出现的短语作为冗余部分去除,并对该集合identifiers中的数据集进行语义上的重新排序,然后将得到的数据集存入集合keyterms中;
步骤5) 排序:统计集合keyterms中短语的个数为sum,并统有短语出现的方法中短语的个数,记为n1、n2、…nk,再计算这些短语的个数n1、n2、…nk占sum的百分比,记为percent1,percent2,...percentk,将所得结果中的方法按照该百分比从大到小排序,并以方法名来划分层次结构,再将方法名+方法中所包含的短语推荐给用户。
作为本发明的改进,步骤2)在判断单词词性时,依照以下原则,判断该单词的前一个单词是否为名字,若不是,则确定该单词是名词,若是,则再次判断该单词的后一个单词是否为名词,若不是,则确定该单词是名词,若是,则根据该单词在现有语境条件下的词性判断该单词是动词还是名词。
作为本发明的改进,步骤3)的具体方法如下:
a)建立所用编程语言的关键字库:将编程语言中的所有关键字都放入数据库的数据表中;
b)提取有用标识符:将源程序与关键字库进行对照,过滤掉源程序中跟编程语言相关的关键字,得到源程序所有的标识符,在这些标识符中去掉只有一个字母、一个字母和下划线、一个字母和数字组成的标识符,最终所得的标识符即为有用的标识符,标识符由多个短语组成,每个短语内有多个单词;
c)分割标识符:对所提取的有用标识符进行分割,将所得的标识符都转换为小写字母,然后将标识符存入名为identifiers的集合中。
作为本发明的改进,步骤4)的具体方法如下:
a)设置门槛值:根据用户需求设置门槛值,该门槛值用以判定用户请求与源代码的相似度; 
b)匹配:用集合featurewords与集合identifiers进行匹配,匹配方法为,判断集合identifiers中的短语是否满足条件a/b≥门槛值,其中a表示集合identifiers内短语中单词在集合featurewords内短语中出现的数量,b表示变量featurewords内短语中单词的总数和变量identifiers内短语中单词的总数中较大的那一个,若满足条件,说明标识符中某个短语可以出输出,并存放在名为keyterms的集合中,若不满足条件,则进行下一标识符的匹配。
本发明在操作时,当用户输入修改请求的自然语言时,通过判断用户输入的查询语句中的每个单词的词性,用wordnet来寻找词性相同的同义词,然后在到分割好标识符的代码库中去逐个匹配,当两个短语的相似度达到一定门槛值时,便将从代码库中寻找到的短语推荐给用户,以便用户制定更好的查询,从而使用户更准确地定位到想要维护的代码段,本文所提供的技术方案可以自动地判断用户输入的自然语言中每个单词的词性,并通过词性来寻找同义词,当原查询语句没有找到任何符合条件的结果时,就用每个单词相对应的同义词来替换它,从而大大降低没有返回结果的可能性;同时,我们会对用户输入的自然语言进行预处理,并将处理后得到的短语作为整体到源代码中去匹配,这样返回给用户的结果不会太多,且与用户所要的结果的相关性很大,使得用户能够方便地去选择。
与现有技术相比,本发明的有益效果在于,本方法是基于查询单词词性分析技术的重新制定用户修改请求,通过分析用户输入的自然语言中关键单词的词性来寻找同义词,可以有效地解决查询过程中的同义词扩展问题;用短语而不是单个单词去匹配,可以有效地缩小反馈结果的范围,使用户便于判断;直接将当前程序代码中符合条件的标识符进行语序上的重排后推荐给用户,更加直观明了;可以有效帮助开发人员制定好的查询语句,从而更准确地定位到要进行维护的代码段,以提高软件维护的效率。本发明可用于软件开发维护中。
附图说明
图1是本方法总体流程图。
图2是预处理用户输入的修改请求语言的流程图。
图3是提取并分割标识符的流程图。
图4是同义词扩展的流程图。
图5是结果排序的流程图。
图6是单词词性判断的流程图。
图7是十进制转换为十六进制的源代码。
图8是图7的源代码经步骤3)处理后得到的代码。
图9是以修改请求语句convert decimal to hex 为例得到的结果。
具体实施方式
下面结合具体实施例对本发明作进一步说明:
本发明的方法是在判断用户输入的查询语句中每个单词词性的基础上,利用wordnet来提取词性相同的同义词,采用标识符分割技术,通过设置门槛值来向用户推荐可替换的词或短语,如图1所示。
实施例
一、方法相关参数定义
1.建立一张名为character的词性判断表;
2.用户输入的查询语句存入集合str中;
3.预处理后的查询语句存入集合words中,words中的每个单词存入word数组中,每个单词的词性存入property数组中;
4.在数据库中建立所用编程语言的关键字库表keywordLibrary;
5.每个单词对应的同义词存入数组synonym1,synonym2,....synonymn中;
6.在数据库中建立源代码表code,导入code表;
7.从源代码中提取出的有用的标识符存入向量tokens中,对这些标识符进行分割,将分割后得到的短语存入向量identifiers中;
8.将匹配后的达到门槛值的短语存入向量keyterms中。
二、方法流程
本实施例中以一个十进制转换为十六进制的java源程序(如图7所示)中修改十进制转换为十六进制功能为例,该方法主要分为四个步骤:(1)判断用户的查询语句每个单词的词性;(2)利用wordnet寻找词性相同的同义词(3)导入代码库并分割标识符(4)得到符合条件的短语并将结果排序。
1.判断用户的查询语句每个单词的词性
假设用户输入的句子为简单句(即句子中只有一个动词),输入的修改请求是convert decimal to hex;经过预处理后,得到关键字convert decimal hex;建立一张名为character的词性判断表,如图6所示,判断方法依照以下原则,判断该单词的前一个单词是否为名字,若不是,则确定该单词是名词,若是,则再次判断该单词的后一个单词是否为名词,若不是,则确定该单词是名词,若是,则根据该单词在现有语境条件下的词性判断该单词是动词还是名词,将所有的非停用词(停用词:文本中的常用词汇和一些构成句子但无实际意义的词汇,如:介词、形容词等)的动词用法和名词用法以及他们为动词和名词的概率的统计结果存入表中,当无法判别一个单词是否为动词或名词时,比如该单词的前后都为名词时,就根据它在通常的文本中是动词的概率大还是名词的概率大,将概率大的那一个最为它在该查询语句中的词性;并将其存入对应的property数组中,如convert decimal hex这三个关键字,通过判断可知convert的词性为动词,decimal和hex的词性为名词。
2.利用wordnet寻找词性相同的同义词
a)将处理后得到的word数组及其词性property数组对应地输入到wordnet中,通过wordnet进行分析;
b)若该单词的词性为v类,则到动词词库中去寻找同义词;若该单词的词性为n类,则到名词词库中去寻找同义词;将找到的所有词性相同的同义词存入对应的synonym[1,2....,n]数组中;
c)以convert decimal hex为例,convert的词性为v类,则它的同为v类的同义词有change,exchange,commute,win over和 convince;decimal的词性为n类,则它的同为n类的同义词有decimal fraction;hex的词性为n类,则它的同为n类的同义词有 jinx,curse和whammy;
d)用同义词对原修改请求语句进行替换,如图4所示,以convert decimal hex为例,则替换后得到的短语有:change decimal hex,exchange decimal hex,commute decimal hex,win over decimal hex,convince decimal hex,convert decimal fraction hex,change decimal fraction hex,exchange decimal fraction hex,commute decimal fraction hex,win over decimal fraction  hex,convince decimal fraction hex,convert decimal jinx,change decimal jinx,exchange decimal jinx,commute decimal jinx,win over decimal jinx,convince decimal jinx,convert decimal fraction jinx,change decimal fraction jinx,exchange decimal fraction jinx,commute decimal fraction jinx,win over decimal fraction jinx,convince decimal fraction jinx,convert decimal curse,change decimal curse,exchange decimal curse,commute decimal curse,win over decimal curse,convince decimal curse,convert decimal fraction curse,change decimal fraction curse,exchange decimal fraction curse,commute decimal fraction curse,win over decimal fraction  curse,convince decimal fraction curse,convert decimal whammy,change decimal whammy,exchange decimal whammy,commute decimal whammy,win over decimal whammy,convince decimal whammy,convert decimal fraction whammy,change decimal fraction jinx,exchange decimal fraction whammy,commute decimal fraction whammy,win over decimal fraction whammy,和convince decimal fraction whammy共47个,一起存入featurewords中。
3.输入代码库并分割标识符
a)在数据库中建立源代码表code,并将其输入到我们的程序中,同时输入关键字对照库,以十进制转换为十六进制这个程序为例,在code中存放的就是该十进制转换为十六进制的源代码;
b)将源程序与keywordLibrary列表进行对照,过滤掉源代码的注释和关键字,得到程序所有的标识符,在这些标识符中去掉只有一个字母、一个字母和下划线、一个字母和数字组成的标识符,且相同的标识符只出现一次,提取出剩余的标识符,存入向量tokens中;
c)对提取出的标识符进行分割,分割后的标识符存入向量identifiers,如图3所示,以convert decimal hex为例,分割后的代码如图8所示。
4.得到符合条件的短语并将结果排序
a)将进行同义词扩展后得到的短语,即向量featurewords与向量identifiers进行匹配,将到达门槛值的短语存入向量keyterms中,这里的门槛值设为0.1,即有向量identifiers内短语中一个单词出现在向量featurewords中即可;
b)统计整个代码中短语的个数为sum,出现短语的方法中的短语的个数为n1,n2,...nk;
c)计算这些方法中出现的短语的个数在总的keyterms的个数的百分比为percent1,percent2,...percentk,并将所得结果中的方法名按照该百分比从大到小排序,并以方法名来划分层次结构,即将方法名+方法中所包含的keyterms推荐给用户,如图5所示;
d)以上述中的十进制转换为十六进制程序和修改请求语句convert decimal to hex为例,最后呈现给用户的结果如图9所示。
本发明并不局限于上述实施例,在本发明公开的技术方案的基础上,本领域的技术人员根据所公开的技术内容,不需要创造性的劳动就可以对其中的一些技术特征作出一些替换和变形,这些替换和变形均在本发明的保护范围内。

Claims (4)

1. 一种面向软件维护的修改请求重新定制的方法,其特征在于,包括以下步骤:
步骤1) 预处理:对于用户输入的自然语言进行分析,用停用词表将冗余的部分去除,得到关键字集合,并存入类型为String名为words的集合中;
步骤2) 同义词扩充:根据用户输入的自然语言的语言环境判断集合words中的每个单词的词性,利用wordnet工具去寻找词性相同的同义词集合,并为words中的每个单词建立该单词的同义词数组,将words和同义词数组内的单词进行替换配对,形成动词+名词的短语,一起存入名为featurewords的集合中,并作为要到代码库中进行匹配的对象;
步骤3) 分割标识符:将当前软件程序中的有用的标识符提取出来,对所提取的标识符进行分割,这些分割后的标识符存入名为identifiers的集合中; 
步骤4) 匹配:将集合featurewords与集合identifiers进行匹配,若集合featurewords中的某个短语在集合identifiers中出现,则将identifiers中并未出现的短语作为冗余部分去除,并对该集合identifiers中的数据集进行语义上的重新排序,然后将得到的数据集存入集合keyterms中;
步骤5) 排序:统计集合keyterms中短语的个数为sum,并统有短语出现的方法中短语的个数,记为n1、n2、…nk,再计算这些短语的个数n1、n2、…nk占sum的百分比,记为percent1,percent2,...percentk,将所得结果中的方法按照该百分比从大到小排序,并以方法名来划分层次结构,再将方法名+方法中所包含的短语推荐给用户。
2. 根据权利要求1所述的一种面向软件维护的修改请求重新定制的方法,其特征在于,步骤2)在判断单词词性时,依照以下原则,判断该单词的前一个单词是否为名词,若不是,则确定该单词是名词,若是,则再次判断该单词的后一个单词是否为名词,若不是,则确定该单词是名词,若是,则根据该单词在现有语境条件下的词性判断该单词是动词还是名词。
3. 根据权利要求1所述的一种面向软件维护的修改请求重新定制的方法,其特征在于,步骤3)的具体方法如下:
a)建立所用编程语言的关键字库:将编程语言中的所有关键字都放入数据库的数据表中;
b)提取有用标识符:将源程序与关键字库进行对照,过滤掉源程序中跟编程语言相关的关键字,得到源程序所有的标识符,在这些标识符中去掉只有一个字母、一个字母和下划线、一个字母和数字组成的标识符,最终所得的标识符即为有用的标识符,标识符由多个短语组成,每个短语内有多个单词;
c)分割标识符:对所提取的有用标识符进行分割,将所得的标识符都转换为小写字母,然后将标识符存入名为identifiers的集合中。
4. 根据权利要求1所述的一种面向软件维护的修改请求重新定制的方法,其特征在于,步骤4)的具体方法如下:
a)设置门槛值:根据用户需求设置门槛值,该门槛值用以判定用户请求与源代码的相似度; 
b)匹配:用集合featurewords与集合identifiers进行匹配,匹配方法为,判断集合identifiers中的短语是否满足条件a/b≥门槛值,其中a表示集合identifiers内短语中单词在集合featurewords内短语中出现的数量,b表示变量featurewords内短语中单词的总数和变量identifiers内短语中单词的总数中较大的那一个,若满足条件,说明标识符中某个短语可以出输出,并存放在名为keyterms的集合中,若不满足条件,则进行下一标识符的匹配。
CN201410396663.XA 2014-08-13 2014-08-13 一种面向软件维护的修改请求重新定制的方法 Pending CN104166550A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410396663.XA CN104166550A (zh) 2014-08-13 2014-08-13 一种面向软件维护的修改请求重新定制的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410396663.XA CN104166550A (zh) 2014-08-13 2014-08-13 一种面向软件维护的修改请求重新定制的方法

Publications (1)

Publication Number Publication Date
CN104166550A true CN104166550A (zh) 2014-11-26

Family

ID=51910384

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410396663.XA Pending CN104166550A (zh) 2014-08-13 2014-08-13 一种面向软件维护的修改请求重新定制的方法

Country Status (1)

Country Link
CN (1) CN104166550A (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104991858A (zh) * 2015-06-12 2015-10-21 扬州大学 一种面向代码修改的概要及标签自动生成方法
CN105446734A (zh) * 2015-10-14 2016-03-30 扬州大学 一种基于软件开发历史开发人员网络关系构建方法
CN105912634A (zh) * 2016-04-05 2016-08-31 扬州大学 一种面向软件代码检索的查询语句重新生成方法
CN107256249A (zh) * 2017-06-08 2017-10-17 北京小度信息科技有限公司 一种数据库查询方法、装置、电子设备及计算机存储介质
CN108958210A (zh) * 2017-05-24 2018-12-07 三菱电机株式会社 工厂监视控制***的维护计算机及记录有维护程序的电脑可读取记录介质
CN110991180A (zh) * 2019-11-28 2020-04-10 同济人工智能研究院(苏州)有限公司 一种基于关键词和Word2Vec的命令识别方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101246492A (zh) * 2008-02-26 2008-08-20 华中科技大学 基于自然语言的全文检索***
CN102567371A (zh) * 2010-12-27 2012-07-11 上海杉达学院 自动过滤停用词的方法
CN103198079A (zh) * 2012-01-06 2013-07-10 北大方正集团有限公司 相关搜索的实现方法和装置
CN103927176A (zh) * 2014-04-18 2014-07-16 扬州大学 一种基于层次主题模型的程序特征树的生成方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101246492A (zh) * 2008-02-26 2008-08-20 华中科技大学 基于自然语言的全文检索***
CN102567371A (zh) * 2010-12-27 2012-07-11 上海杉达学院 自动过滤停用词的方法
CN103198079A (zh) * 2012-01-06 2013-07-10 北大方正集团有限公司 相关搜索的实现方法和装置
CN103927176A (zh) * 2014-04-18 2014-07-16 扬州大学 一种基于层次主题模型的程序特征树的生成方法

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104991858A (zh) * 2015-06-12 2015-10-21 扬州大学 一种面向代码修改的概要及标签自动生成方法
CN104991858B (zh) * 2015-06-12 2017-10-20 扬州大学 一种面向代码修改的概要及标签自动生成方法
CN105446734A (zh) * 2015-10-14 2016-03-30 扬州大学 一种基于软件开发历史开发人员网络关系构建方法
CN105912634A (zh) * 2016-04-05 2016-08-31 扬州大学 一种面向软件代码检索的查询语句重新生成方法
CN105912634B (zh) * 2016-04-05 2019-03-12 扬州大学 一种面向软件代码检索的查询语句重新生成方法
CN108958210A (zh) * 2017-05-24 2018-12-07 三菱电机株式会社 工厂监视控制***的维护计算机及记录有维护程序的电脑可读取记录介质
CN108958210B (zh) * 2017-05-24 2021-06-04 三菱电机株式会社 工厂监视控制***的维护计算机及电脑可读取记录介质
CN107256249A (zh) * 2017-06-08 2017-10-17 北京小度信息科技有限公司 一种数据库查询方法、装置、电子设备及计算机存储介质
CN110991180A (zh) * 2019-11-28 2020-04-10 同济人工智能研究院(苏州)有限公司 一种基于关键词和Word2Vec的命令识别方法

Similar Documents

Publication Publication Date Title
Su et al. Information resources processing using linguistic analysis of textual content
CN104850554B (zh) 一种搜索方法和***
CN104166550A (zh) 一种面向软件维护的修改请求重新定制的方法
CN108763333A (zh) 一种基于社会媒体的事件图谱构建方法
KR101508260B1 (ko) 문서 특징을 반영하는 요약문 생성 장치 및 방법
CN109670022A (zh) 一种基于语义相似度的Java应用程序接口使用模式推荐方法
Dwarakanath et al. Automatic extraction of glossary terms from natural language requirements
CN102043845A (zh) 一种用于基于查询序列簇提取核心关键词的方法与设备
CN103678576A (zh) 基于动态语义分析的全文检索***
CN104281702A (zh) 基于电力关键词分词的数据检索方法及装置
Lytvyn et al. Content linguistic analysis methods for textual documents classification
CN102200975A (zh) 一种利用语义分析的垂直搜索引擎***与方法
CN102214189A (zh) 基于数据挖掘获取词用法知识的***及方法
Mao et al. Automatic keywords extraction based on co-occurrence and semantic relationships between words
Yang et al. Ontology generation for large email collections.
CN111159381A (zh) 数据搜索方法及装置
Tiddi et al. Ontology learning from open linked data and web snippets
Shrawankar et al. Construction of news headline from detailed news article
CN104572111B (zh) 一种基于相关主题模型的程序理解和特征定位方法
US20230140938A1 (en) Sentence data analysis information generation device using ontology, sentence data analysis information generation method, and sentence data analysis information generation program
Rybinski et al. Discovering synonyms based on frequent termsets
CN114417008A (zh) 一种面向建设工程领域的知识图谱构建方法及***
Mashina Application of statistical methods to solve the problem of enriching ontologies of developing subject areas
Li Product feature extraction with a combined approach
Kalloubi et al. Named entity linking in microblog posts using graph-based centrality scoring

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20141126