Page 280 - 《软件学报》2021年第7期
P. 280
2198 Journal of Software 软件学报 Vol.32, No.7, July 2021
特征词对
6 resFeawordpair=getFeaturewordPair(result)//抽取表现结果中的主题关键词构建表现结果特征词对
7 for Attribute a , FeatureWordList a in codeQualityAttributeFeatureWord://遍历代码质量属性特征词库
8 if expFeawordpair not in FeatureWordList a ://判断表现特征词对是否在某个代码质量属性特征
词表中
9 codeQualityAttributeFeatureWord[Attribute a ].append(expFeawordpair)//不存在,则加入到
对应的代码质量
属性列表中
10 if resFeawordpair not in FeatureWordList a ://判断表现结果特征词对是否在某个代码质量属性
特征词表中
11 codeQualityAttributeFeatureWord[Attribute a ].append(resFeawordpair)//不存在,则加入到
对应的代码质量
属性列表中
例如,以第 4.4 节中复杂用户评论“编码格式不对一直报错,而且没有注释所以看不懂!一堆堆的错误!”处理
后的结果为例.复杂用户评论中的代码质量属性及其表现与表现结果有“编程规范性,[编码 格式 不对],[],可
靠性,[报错][错误],[],可读性, [没有 注释], [看不懂]”,则将“编码 格式 不对”加入到“编程规范性”的代码质
量属性特征词库中,将“没有 注释”加入到“可读性”的代码质量属性特征词库中,“看不懂”与“报错”“错误”分别
在“可读性”与“可靠性”对应的代码质量属性特征词库中已经存在,则不用再加入.
5 实验结果与分析
本文的实验数据来源于专业开发者社区 CSDN(https://www.csdn.net)和开源中国推出的代码托管平台
Gitee(https://gitee.com)爬取的针对代码的用户评论,抽取了其中包含多个标点符号的复杂用户评论4 366条及654
条不带标点符号的复杂用户评论.然后,应用本文方法对 5 020 条复杂用户评论进行了相关实验.
5.1 基于主题判断规则抽取复杂用户评论的主题
为了能够判断出复杂用户评论中存在的代码质量属性,本文基于依存句法关系提出了主题判断规则.先通
过抽取复杂用户评论中可能存在的主题,再通过主题对应的代码质量属性的识别判断复杂用户评论中可能存
在的代码质量属性.本文在应用主题判断规则抽取复杂用户评论的主题后,对主题个数以及主题对应的代码质
量属性的判断结果,与人工标注进行了对比.通过分析对比结果发现,主题判断结果主要有 4 种类型.表 6 中给出
了 4 种主题判断的结果类型及其对应的用户评论数量和占比,以及相应的示例.
经过分析我们发现,对于表 6 中的类型 3,由于主题判断规则不全,导致应用当前的主题判断规则对部分
复杂用户评论进行判断时,主题划分失败,从而影响主题的判断.如类型 3 示例中虽然包含承接连词“就”,但在
经过依存句法分析后,示例对应的依存句法关系有向图不能满足并列关系和动宾关系的主题判断规则,只能
使用单一主题判断规则进行处理,因而,只判断出了一个主题,从而漏判了主题.对于类型 4,由于主题判断规则
的不完善,在对部分复杂用户评论的主题进行判断时,分句中的主题在语义理解上应为一个主题,但是由于符
合当前的主题判断规则,从而被判断为两个主题.如类型 4 用户评论示例分句“登录出现很多问题”,语义理解
上应是登录功能出现了问题,然而在基于主题判断规则进行主题抽取时,由于满足动宾关系主题判断规则而
被划分为两个主题.综上,虽然主题判断规则不是十分完善,但是可以对复杂用户评论中存在的代码质量属性
进行较为全面的判断.
此外,为了说明主题判断规则抽取复杂用户评论主题的有效性,本文使用传统的隐含狄利克雷分布主题模
型(LDA)抽取复杂用户评论主题.对应表 6 中 4 种主题判断结果类型,本文方法与 LDA 主题模型主题判断结果
的对比情况如图 9 所示.