CN108628631A - 一种对参数中的缩写词进行自动扩展的方法 - Google Patents
一种对参数中的缩写词进行自动扩展的方法 Download PDFInfo
- Publication number
- CN108628631A CN108628631A CN201810454262.3A CN201810454262A CN108628631A CN 108628631 A CN108628631 A CN 108628631A CN 201810454262 A CN201810454262 A CN 201810454262A CN 108628631 A CN108628631 A CN 108628631A
- Authority
- CN
- China
- Prior art keywords
- abbreviation
- parameter
- word
- function
- expansion
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/75—Structural analysis for program understanding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Machine Translation (AREA)
Abstract
本发明属于软件质量维护技术领域,为了解决现有缩写词扩展方法中对函数参数中缩写词进行扩展推荐较差的现状问题,提出了一种对参数中的缩写词进行自动扩展的方法,主要针对函数参数中的缩写词进行自动扩展,提出了一种基于实参‑形参相似性的缩写词扩展方法。对于给定的实参‑形参中的缩写词,根据一系列启发式规则在对应的形参‑实参以及参数类型中匹配其扩展词。只有当匹配失败时,才使用基于词典的缩写词扩展方法。本方法与现有方法的显著不同在于本方法充分利用了实参与形参之间的文本相似性以扩展参数中的缩写词。
Description
技术领域
本发明属于软件质量维护技术领域,涉及一种对参数中的缩写词进行自动扩展的方法。
背景技术
在软件开发过程中,软件维护是整个软件生命周期中重要的组成部分。源代码中的标识符大约是软件中所有字符的70%。因此,高质量的标识符名称对软件的可读性和可维护性是至关重要的。
软件中的标识符经常包含缩写词,这将不利于对项目的理解以及基于信息检索技术进行的软件维护活动。例如,软件维护人员在理解软件实体之前,需要对缩写词对应的扩展进行推测,这种方式是不准确的,有可能会导致维护人员对软件实体的误解;基于信息检索技术进行的软件维护也不能充分发挥出其潜能。
为了使缩写词的不利影响最小化,大量的缩写词扩展方法被提出。这些方法主要基于词典进行并且具有一定的准确性。基于词典的扩展方法简单易行,得到广泛地应用。然而这些方法在扩展长度较小的缩写词时其准确性和召回率会有显著下降。
本发明主要针对函数参数中的缩写词进行自动扩展,提出了一种基于实参-形参相似性的缩写词扩展方法。对于给定的实参-形参中的缩写词,本发明根据启发式规则在对应的形参-实参以及参数类型中匹配其扩展词。只有当匹配失败时,才使用基于词典的缩写词扩展方法。本方法与现有方法的显著不同在于本方法充分利用了实参与形参之间的文本相似性以扩展参数中的缩写词。
发明内容
本发明的目的是为了克服已有技术的缺陷,为了解决现有缩写词扩展方法中对函数参数中缩写词进行扩展推荐较差的现状问题,提出了一种对参数中的缩写词进行自动扩展的方法。
本发明方法是通过下述技术方案实现的:
一种对参数中的缩写词进行自动扩展的方法,其基本实施过程如下:
步骤1:根据开源软件的函数定义以及函数调用信息,提取函数的形参、实参和参数相应的类型并存储到数据库中;
具体的说,利用JDT工具解析项目中的标识符,提取出每个开源软件函数定义时的形参和函数调用时的实参以及参数对应的类型;其中,实参包括函数调用中参数列表中的变量或函数名称;形参包括函数定义中参数列表中的变量或函数名称。
步骤2:根据步骤1提取出的函数形参、函数实参、形参类型和实参类型进行分割,并提取出其中的缩写词;
具体的说,将每个标识符的名称分割为单词序列。假定标识符遵循驼峰或蛇形命名规则,因此分割标识符的依据是下划线、大写字母和数字;若分割后的单词在一般的英文词典中不能检索到,则认为其是缩写词。
步骤3:对于步骤2提取出来的缩写词,利用启发式规则从其文本信息中检索对应的扩展词;
具体的说,启发式规则具体为,首先对于给定的缩写词,从其对应的参数名中进行检索,若存在其相应的扩展词,则返回参数名作为扩展,检索结束;若不存在,继续在参数类型中进行检索,若存在扩展词,则返回参数类型,检索结束;否则,在词典中进一步进行检索,若以上检索都不能成功返回,则表明本方法对这个缩写词不能有效地进行扩展。
其中,对于给定的缩写词,从其对应的参数名中进行检索的时候,若缩写词来自函数形参,则在对应的实参中检索扩展词,若缩写词来自函数实参,则在对应的形参中检索扩展词。
步骤A:从对应参数名中进行检索时遵守的启发式规则为:
①缩写词是由对应参数名的首字母序列组成;
②缩写词是对应参数名的前缀;
③缩写词是对应参数名的子序列。
按照以上顺序执行启发式规则,当满足以上3条中某1条启发式规则时,则对应参数名的检索结束;若不能满足以上3条中某1条启发式规则时,则对应参数名的检索结束,就需进一步在参数类型中进行检索。
步骤B:从对应参数类型中进行检索时遵守的启发式规则为:
①缩写词是参数类型的首字母序列组合;
②缩写词是参数类型的前缀。
按照以上顺序执行启发式规则,当满足以上2条中某1条启发式规则时,则对应参数类型的检索结束;若不能满足以上2条中某1条启发式规则时,则对应参数类型的检索结束,就需进一步在词典中进行检索。
步骤C:当对于一个给定的缩写词存在多个推荐的扩展词时,我们将对其进行了一个投票处理,具体过程为:对每个<缩写词,扩展词>词对出现的次数进行统计,数量最多的扩展词对为给定缩写词的扩展词;
步骤D:在所得的<缩写词,扩展词>词对集合中,将扩展词仍为缩写词的<缩写词,扩展词>词对进行递归扩展。
其中,递归扩展为假设本步骤所得某一结果为<缩写词1,扩展词1>。若扩展词1仍是缩写词时,本发明会进行递归扩展:在本步骤得到的全部结果集中,检索是否存在<缩写词2,扩展词2>词对,其中缩写词2和扩展词1相同,若检索成功,更新结果为<缩写词1,扩展词2>;递归执行此过程,直到不存在这类扩展为止。
对于给定的缩写词,若以上步骤在函数的函数名、参数类型和词典中都不能检索到相应的扩展词,则认为本发明不能对此类缩写词进行有效地扩展。
至此,经过步骤1到步骤3,完成了对参数中的缩写词进行自动扩展的方法,如图2所示。
有益效果
一种对参数中的缩写词进行自动扩展的方法,与现有技术中基于词典和基于源代码的扩展推荐方法相比,具有如下有益效果:
1.对于给定测试项目,25.6%缩写词提取于函数的参数,证明了本发明提出的假设;
2.平均准确率为96%,与现有方法相比,本发明的准确率提高了336%;
3.平均召回率为60%,与现有方法相比,本发明的召回率提高了173%。
附图说明
图1是本发明工作原理示意图;
图2是本发明对给定缩写词检索其对应扩展词的过程示意图。
具体实施方式
下面结合附图和实施例对本发明做进一步说明和详细描述。
实施例
本实施例详细阐述了本发明对参数中的缩写词进行自动扩展方法在3个开源项目下具体实施时的方法和效果。
在如表1所示的硬件环境下,我们对表2所示的开源软件进行测试。
表1:硬件环境配置信息表
硬件环境配置 | 处理器型号 | 内存 | 操作系统 |
测试环境 | 3.4GHz Core i7-6700 | 16G | 64-bit Windows 7 |
表2:开源软件基本信息表
开源项目数量 | 编写语言 | 含缩写词总数 | 项目来源 |
3 | Java | 4,339 | GitHub |
步骤1:根据表2所示的开源软件信息,本发明根据开源项目RxJava的函数定义以及函数调用信息,提取出函数的形参、实参和参数对应的类型并存储到数据库中;
步骤2:对步骤1提取出的函数形参、函数实参和参数对应的类型进行分割,从而获得缩写词,函数形参中提取出缩写词数量为160个,函数实参中提取出缩写词数量为504个。函数的形参为strIndex,对标识符进行分割后得到单词序列为str和index,其中str不能在英文词典中检索到,因此获得的缩写词为str;
将每个标识符的名称pntIndex_t分割为单词序列pnt、index、t。假定标识符遵循驼峰或蛇形命名规则,因此分割标识符的依据是下划线、大写字母和数字;若分割后的单词pnt在英文词典中不能检索到,则认为其是缩写词。在所测试的RxJava开源项目中,总共解析了3276个缩写词。此外,本发明记录了缩写词的来源,分别统计了来自函数实参的缩写词的数量N2(504个)和来自函数形参的缩写词的数量N3(160个)。其他开源项目中函数参数中的缩写词的统计结果如表3。
表3:参数中的缩写词
步骤3:对于步骤2提取出来的缩写词,利用启发式规则从其文本信息中检索对应的扩展词;
具体的说,本发明选择了开源项目RxJava中的100个缩写词进行扩展;首先对于给定的缩写词,从其对应的参数名中进行检索,若存在其相应的扩展词,则返回参数名作为扩展,检索结束;若不存在,本发明继续在参数类型中进行检索,若存在扩展词,则返回参数类型,检索结束;否则,在Linsen方法提供的缩写词词典中进一步进行检索。在所选择的100个缩写词中,其中有62个缩写词得到了正确的扩展,有3个缩写词不能被正确地扩展,有26个缩写本发明不能进行有效地扩展。每个开源项目的缩写词的具体扩展信息如表4所示,基于开源项目RxJava进行测试,本发明对参数中的缩写词进行扩展,其准确率为95%,召回率为65%,现有的基于词典和源代码进行缩写词扩展方法的准确率为19%,召回率为19%;
表4:推荐方法的准确率和召回率
表4中的准确率=正确的缩写词扩展/推荐的缩写词扩展;
表4中的召回率=正确的缩写词扩展/待推荐的缩写词总数。
结果表明:
1.平均准确率为96%,与现有方法相比,本发明的准确率提高336%;
2.平均召回率为60%,与现有方法相比,本发明的召回率提高173%。
以上所述为本发明的较佳实施例而已,本发明不应该局限于该实施例和附图所公开的内容。凡是不脱离本发明所公开的精神下完成的等效或修改,都落入本发明保护的范围。
Claims (3)
1.一种对参数中的缩写词进行自动扩展的方法,其特征在于包括以下步骤:
步骤1:根据开源软件的函数定义以及函数调用信息,提取函数的形参、实参和参数相应的类型并存储到数据库中;
步骤2:根据步骤1提取出的函数形参、函数实参、形参类型和实参类型进行分割,并提取出其中的缩写词;
步骤3:对于步骤2提取出来的缩写词,利用启发式规则从其文本信息中检索对应的扩展词;
具体的说,启发式规则具体为,首先对于给定的缩写词,从其对应的参数名中进行检索,若存在其相应的扩展词,则返回参数名作为扩展,检索结束;若不存在,继续在参数类型中进行检索,若存在扩展词,则返回参数类型,检索结束;否则,在词典中进一步进行检索,若以上检索都不能成功返回,则表明本方法对这个缩写词不能有效地进行扩展;
其中,对于给定的缩写词,从其对应的参数名中进行检索的时候,若缩写词来自函数形参,则在对应的实参中检索扩展词,若缩写词来自函数实参,则在对应的形参中检索扩展词;
步骤A:从对应参数名中进行检索时遵守的启发式规则为:
①缩写词是由对应参数名的首字母序列组成;
②缩写词是对应参数名的前缀;
③缩写词是对应参数名的子序列;
按照以上顺序执行启发式规则,当满足以上3条中某1条启发式规则时,则对应参数名的检索结束;若不能满足以上3条中某1条启发式规则时,则对应参数名的检索结束,就需进一步在参数类型中进行检索;
步骤B:从对应参数类型中进行检索时遵守的启发式规则为:
①缩写词是参数类型的首字母序列组合;
②缩写词是参数类型的前缀;
按照以上顺序执行启发式规则,当满足以上2条中某1条启发式规则时,则对应参数类型的检索结束;若不能满足以上2条中某1条启发式规则时,则对应参数类型的检索结束,就需进一步在词典中进行检索;
步骤C:当对于一个给定的缩写词存在多个推荐的扩展词时,我们将对其进行了一个投票处理,具体过程为:对每个<缩写词,扩展词>词对出现的次数进行统计,数量最多的扩展词对为给定缩写词的扩展词;
步骤D:在所得的<缩写词,扩展词>词对集合中,将扩展词仍为缩写词的<缩写词,扩展词>词对进行递归扩展;
其中,递归扩展为假设本步骤所得某一结果为<缩写词1,扩展词1>;若扩展词1仍是缩写词时,本发明会进行递归扩展:在本步骤得到的全部结果集中,检索是否存在<缩写词2,扩展词2>词对,其中缩写词2和扩展词1相同,若检索成功,更新结果为<缩写词1,扩展词2>;递归执行此过程,直到不存在这类扩展为止;
对于给定的缩写词,若以上步骤在函数的函数名、参数类型和词典中都不能检索到相应的扩展词,则认为本发明不能对此类缩写词进行有效地扩展。
2.如权利要求1所述的一种对参数中的缩写词进行自动扩展的方法,其特征在于,步骤1的具体实现过程为,利用JDT工具解析项目中的标识符,提取出每个开源软件函数定义时的形参和函数调用时的实参以及参数对应的类型;其中,实参包括函数调用中参数列表中的变量或函数名称;形参包括函数定义中参数列表中的变量或函数名称。
3.如权利要求1所述的一种对参数中的缩写词进行自动扩展的方法,其特征在于,步骤2的具体实现过程为,将每个标识符的名称分割为单词序列;假定标识符遵循驼峰或蛇形命名规则,分割标识符的依据是下划线、大写字母和数字;若分割后的单词在一般的英文词典中不能检索到,则认为其是缩写词。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810454262.3A CN108628631B (zh) | 2018-05-14 | 2018-05-14 | 一种对参数中的缩写词进行自动扩展的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810454262.3A CN108628631B (zh) | 2018-05-14 | 2018-05-14 | 一种对参数中的缩写词进行自动扩展的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108628631A true CN108628631A (zh) | 2018-10-09 |
CN108628631B CN108628631B (zh) | 2019-02-15 |
Family
ID=63693064
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810454262.3A Expired - Fee Related CN108628631B (zh) | 2018-05-14 | 2018-05-14 | 一种对参数中的缩写词进行自动扩展的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108628631B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110889281A (zh) * | 2019-11-21 | 2020-03-17 | 深圳无域科技技术有限公司 | 一种缩略词展开式的识别方法及装置 |
CN113419720A (zh) * | 2021-07-06 | 2021-09-21 | 北京理工大学 | 一种面向源代码的缩写词扩展必要性自动判定方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6279018B1 (en) * | 1998-12-21 | 2001-08-21 | Kudrollis Software Inventions Pvt. Ltd. | Abbreviating and compacting text to cope with display space constraint in computer software |
CN1745364A (zh) * | 2003-10-24 | 2006-03-08 | 微软公司 | 用于扩展应用程序首选项类的系统和方法 |
CN103999081A (zh) * | 2011-12-12 | 2014-08-20 | 国际商业机器公司 | 生成用于信息领域的自然语言处理模型 |
CN104881397A (zh) * | 2014-02-27 | 2015-09-02 | 富士通株式会社 | 缩写词扩展方法和装置 |
US20150288574A1 (en) * | 2012-10-16 | 2015-10-08 | Nec Corporation | Information system construction assistance device, information system construction assistance method, and information system construction assistance program |
CN105045769A (zh) * | 2015-06-01 | 2015-11-11 | 中国人民解放军装备学院 | 一种基于结构识别的Web表格信息抽取方法 |
CN107832047A (zh) * | 2017-11-27 | 2018-03-23 | 北京理工大学 | 一种基于lstm的非api函数实参推荐方法 |
CN107943514A (zh) * | 2017-11-01 | 2018-04-20 | 北京大学 | 一种软件文档中核心代码元素的挖掘方法及系统 |
-
2018
- 2018-05-14 CN CN201810454262.3A patent/CN108628631B/zh not_active Expired - Fee Related
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6279018B1 (en) * | 1998-12-21 | 2001-08-21 | Kudrollis Software Inventions Pvt. Ltd. | Abbreviating and compacting text to cope with display space constraint in computer software |
CN1745364A (zh) * | 2003-10-24 | 2006-03-08 | 微软公司 | 用于扩展应用程序首选项类的系统和方法 |
CN103999081A (zh) * | 2011-12-12 | 2014-08-20 | 国际商业机器公司 | 生成用于信息领域的自然语言处理模型 |
US20150288574A1 (en) * | 2012-10-16 | 2015-10-08 | Nec Corporation | Information system construction assistance device, information system construction assistance method, and information system construction assistance program |
CN104881397A (zh) * | 2014-02-27 | 2015-09-02 | 富士通株式会社 | 缩写词扩展方法和装置 |
CN105045769A (zh) * | 2015-06-01 | 2015-11-11 | 中国人民解放军装备学院 | 一种基于结构识别的Web表格信息抽取方法 |
CN107943514A (zh) * | 2017-11-01 | 2018-04-20 | 北京大学 | 一种软件文档中核心代码元素的挖掘方法及系统 |
CN107832047A (zh) * | 2017-11-27 | 2018-03-23 | 北京理工大学 | 一种基于lstm的非api函数实参推荐方法 |
Non-Patent Citations (2)
Title |
---|
YUN XU、ZHIHAO WANG: "A New Alignment Algorithm to Identify Definitions Corresponding to Abbreviations in Biomedical Text", 《FIRST INTERNATIONAL WORKSHOP ON KNOWLEDGE DISCOVERY AND DATA MINING (WKDD 2008) IN IEEE》 * |
王浩畅、赵铁军: "生物医学文本挖掘技术的研究与进展", 《中文信息学报》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110889281A (zh) * | 2019-11-21 | 2020-03-17 | 深圳无域科技技术有限公司 | 一种缩略词展开式的识别方法及装置 |
CN110889281B (zh) * | 2019-11-21 | 2023-10-17 | 深圳无域科技技术有限公司 | 一种缩略词展开式的识别方法及装置 |
CN113419720A (zh) * | 2021-07-06 | 2021-09-21 | 北京理工大学 | 一种面向源代码的缩写词扩展必要性自动判定方法 |
CN113419720B (zh) * | 2021-07-06 | 2022-01-07 | 北京理工大学 | 一种面向源代码的缩写词扩展必要性自动判定方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108628631B (zh) | 2019-02-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108287858B (zh) | 自然语言的语义提取方法及装置 | |
US7689527B2 (en) | Attribute extraction using limited training data | |
JP2010541079A (ja) | 複数言語によるデータ記録を関連付ける方法およびシステム | |
EP1875388B1 (en) | Classification dictionary updating apparatus, computer program product therefor and method of updating classification dictionary | |
US20130262086A1 (en) | Generation of a semantic model from textual listings | |
US20170270484A1 (en) | Resume extraction based on a resume type | |
CN107145584A (zh) | 一种基于n‑gram模型的简历解析方法 | |
CN111353306B (zh) | 基于实体关系和依存Tree-LSTM的联合事件抽取的方法 | |
CN112908436B (zh) | 临床试验数据结构化方法、临床试验推荐方法和装置 | |
CN112347767B (zh) | 一种文本处理方法、装置及设备 | |
US20110202545A1 (en) | Information extraction device and information extraction system | |
CN111860981B (zh) | 一种基于lstm深度学习的企业国民行业类别预测方法及系统 | |
CN112699645B (zh) | 语料标注方法、装置及设备 | |
CN114495143B (zh) | 一种文本对象识别方法、装置、电子设备及存储介质 | |
CN108628631B (zh) | 一种对参数中的缩写词进行自动扩展的方法 | |
CN107463711A (zh) | 一种数据的标签匹配方法及装置 | |
CN109522396B (zh) | 一种面向国防科技领域的知识处理方法及系统 | |
CN111680506A (zh) | 数据库表的外键映射方法、装置、电子设备和存储介质 | |
CN112052154A (zh) | 一种测试用例的处理方法、装置 | |
CN107273354A (zh) | 一种融合谓词先验信息的语义角色标注方法 | |
US11468346B2 (en) | Identifying sequence headings in a document | |
CN113836316A (zh) | 三元组数据的处理方法、训练方法、装置、设备及介质 | |
WO2019113938A1 (zh) | 数据标注方法、装置及存储介质 | |
CN111475464B (zh) | 一种自动发现挖掘Web组件指纹的方法 | |
CN113419720B (zh) | 一种面向源代码的缩写词扩展必要性自动判定方法 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20190215 Termination date: 20200514 |
|
CF01 | Termination of patent right due to non-payment of annual fee |