Page 269 - 《软件学报》2021年第7期
P. 269
徐海燕 等:针对复杂用户评论的代码质量属性判断 2187
表 1 中给出了代码的静态和动态质量属性的划分和定义以及每个质量属性的特征词对示例,将为第 4 节针
对复杂用户评论的代码质量属性判断提供依据.
4 针对复杂用户评论的代码质量属性判断
由于代码的质量属性信息只有在用户使用代码后才能给出,因而在针对代码的用户评论中,多为用户在使
用代码后根据代码使用过程中出现的问题所进行的详细描述.如“一添加新的管理员,设置好管理员权限,登录
新的管理员账号就卡死浏览器,发现是 chrome 浏览器会卡死,360 就不会,2.0 版本也有这个问题”“Swagger 测试
的时候,后台接受不到参数,一直运行不出来,这是什么情况”.在这些详细描述中,用户的评论或是存在多个分句,
[7]
或是包含连词.通过对大量的用户评论进行分析以及结合汉语复杂句式的定义 ,本文将复杂用户评论描述为
包含连词或多个分句的用户评论.并且,为了不丢失复杂用户评论中的代码质量属性信息,在对复杂用户评论进
行拆分处理时,保留分句与连词之间的关系.
在前期研究中,本文采用分句的关键词完全无向图表示分句.虽然无向图可以表示出分句中的词语在位置
上的聚集关系,但是无向图难以说明除位置关系以外的词语之间的语义关系.依存句法分析可以通过语句单位
内词语间的依存关系揭示词语间的语义修饰关系,进而实现对语义的理解,能够较为有效地弥补单纯依靠词性
等手段难以触及深层语义关系的不足 [22] ,在情感分析 [23,24] 、实体抽取 [25,26] 、数据的结构化 [27,28] 等自然语言处理
任务中有着广泛的应用.因此,本文在处理复杂用户评论分句时采用基于依存句法关系构建的分句有向图替代
前期的无向图.
为了降低复杂用户评论的处理难度,并对复杂用户评论的代码质量属性进行有效判断,首先需要对复杂用
户评论进行分句、构建分句依存句法关系有向图等预处理.在对复杂用户评论进行预处理后,形成了多个复杂
用户评论分句的依存句法关系有向图.然后,应用基于依存句法关系的主题判断规则,从复杂用户评论中抽取主
题,并基于初始代码质量属性特征词库识别出各主题对应的代码质量属性.接着,根据因果连词对代码质量属性
的表现与表现结果进行获取.最后,基于主题处理规则,首先对同一主题的代码质量属性表现与表现结果进行处
理,然后再对同一主题处理规则处理后得到的代码质量属性相关信息,应用不同主题处理规则进行处理,产生复
杂用户评论的代码质量属性判断结果.
4.1 复杂用户评论的预处理
由于针对代码的用户评论多为复杂句,复杂句中糅合了多种代码质量属性相关的信息,导致直接判断复杂
用户评论的代码质量属性困难,因此,为了降低文本的复杂度和处理的难度,首先对复杂用户评论进行预处理,
以简化文本,帮助判断复杂用户评论的代码质量属性.
针对复杂用户评论的预处理首先需要按照标点符号(例如,逗号、分号、句号、感叹号、问号等)对复杂用
户评论进行分割,得到复杂用户评论的分句.此外,由于针对代码的复杂用户评论中通常包含一些代码编译运行
时编译器提示的信息,这些信息多为英文且包含一些阿拉伯数字,在对用户评论的处理中暂时不考虑英文,而用
户评论中数字的处理对于分析用户评论的代码质量属性作用不大.因此,本文通过 Unicode 编码对文本进行过
滤,使得最后得到的分句中不包含英文字符串和数字.
为了准确判断复杂用户评论中的代码质量属性,本文借助哈尔滨工业大学信息检索研究室语言技术平
台 [29] (LTP)对分句后的复杂用户评论进行依存句法分析,获取复杂用户评论分句中存在的依存句法关系.此外,
由于获取的复杂用户评论的依存句法关系是以文本形式表示,难以清晰地表示出词语之间的依存关系.因此,本
文根据获取到的依存句法关系,以词语作为节点,词语之间的依存句法关系作为边,将复杂用户评论的依存句法
关系抽象为依存句法关系有向图,可以清晰地表示出复杂用户评论分句中词语之间的依存句法关系.
LTP 依存句法关系主要有主谓关系(SBV)、动宾关系(VOB)、间宾关系(IOB)、前置宾语关系(FOB)、兼语
(DBL)、定中关系(ATT)、状中结构(ADV)、动补结构(CMP)、并列关系(COO)、介宾关系(POB)、左附加(LAD)、
右附加(RAD)以及核心关系(HED)等.此外,由于核心关系(HED)指向复杂用户评论分句的核心,本文用“Root”表
示分句核心关系(HED)指向的节点.以复杂用户评论“编码格式不对一直报错,而且没有注释所以看不懂.一堆堆