《Entity-Level Sentiment Analysis of Issue Comments》论文阅读笔记
文章名:《Entity-Level Sentiment Analysis of Issue Comments 》
作者 Jin Ding, Hailong Sun, Xu Wang, Xudong Liu
年份 2018
1 Introduction
本文专门研究开发网站中问题解决型用户评论的情感分类,并对开源网站Github的所有评论展开情感分析。
2 System Design
作者开发了一个名为Senti SW的情绪分析工具,并将其开源在GitHub上供其他开发者使用

2.1 Dataset Generation
Github作为一个开源平台,开发者能够分享自己的代码资源,并邀请其他开发者进行参考学习。本文通过Github API从GitHub Issues Tracking System(问题跟踪器)中构建了一个问题注释数据集,并从10个极具影响力开源项目中获取评论数据进行了深入分析。选取项目的标准如下:(1)每个项目都拥有至少5,000颗星(stars),这表明其具有较高的关注度。(2)每个项目的Issue数量均超过5,000条(issues),这意味着该项目的GitHub问题跟踪系统具有较高的活跃度。为了验证模型的泛化能力是否广泛适用性高作者选取了不同语言环境下的开源项目共计获得了231,732条评论数据并从中随机选取3,00条组成规模达3, 为了保证注释质量每条评论必须由至少两名注释者独立打分在此过程中若两人评分存在分歧则需请第三名 annotator 进行最终判断。注释者需要根据其对评论内容的理解将其分为三种类别:"负面" "积极"或"中性"三种标签类型以表示评论的情感倾向性。为了方便管理所有annotator的基本信息我们开发了一个Web服务并采用Django框架进行注释功能实现(如图所示)。在所收集的数据集中大多数评论被标记为"中性" 占比最大为66.6% 接着是"积极"占比19.9%以及"负面"占比13.5%这些分类结果表明原始数据集在情感分布上存在一定不平衡现象为此我们在后续分类过程中采用了相应的抽样方法以解决这一问题

2.2 Preprocessing
具体步骤如下:
Non-English Characters Deletion. Since the model only recognizes English letters, it substitutes non-ASCII comments with spaces.
(2)Contraction Expansion(缩写扩展):用全称替代缩写的方式能够提高情感极性特征识别的效率
去除代码块以及相关的参考文献和停用词以降低文本噪声水平
去除代码块以及相关的参考文献和停用词以降低文本噪声水平
(4)表情符号与标点符号处理流程. 通常由标点符号组成的面部表情图案用来表示情感的状态即为表情符号. 研究者开发了一个基于规则的工具用于识别面部表情并特别关注水平方向的表情. 并分别用POS_EMOTICON或NEG_EMOTICON来替代. 对于标点符号我们仅考虑的表情符号省略号感叹号问号以及下划线而其他的标点则被去除以减少干扰. 这种处理方法有助于提高信息传递的有效性和用户体验.
Negation Marking(否定标记)。去除否定词如 no, not, none 等等,并将这些否定的表达式前缀以 "not_" 作为新标记。例如:I don't agree with you. 转换为 I do not agree with you. 这种方式不仅便于识别情感极性,在编程实现时也更为简洁高效。
Word Tokenization and Stemming(单词标记和填充). 通过词标记化将输入句子分解为独立的单词序列,并结合词干化技术对词语形态进行标准化处理以降低复杂度。 这种方法旨在优化文本处理过程中的冗余信息并提高分析效率。
2.3 Feature Vectorization
主要运用两个主要的特征提取技术:TF-IDF (Term Frequency-Inverse Document Frequency) 以及 Doc2vec (Document Vectors)
TF-IDF: TF-IDF是一种衡量方法, 用于衡量某个词汇在其语料库中对单个文档的影响程度. 这个词的重要性取决于两个因素: 一个是这个词汇在一段文本中出现的频率; 另一个是包含这个词汇的文档数量.
Doc2vec:本质上与Word2vec的不同之处在于它通过引入段落向量来提高模型对文本的理解能力。作者采用了来自GitHub的大规模问题评论数据集(共计约231,732条)来训练其Doc2vec模型。
2.4 Classifier
应用监督学习模型进行情感分析任务,并利用SMOTE技术用于平衡数据集
2.5 Entity Recognition
基于作者提供的数据集,进行观察总结出识别实体的一系列规则:
在进行软件开发时,团队成员通常会通过积极的表达来展示对同行的支持、认可以及感谢之情。然而,在项目执行过程中,他们往往通过负面的情绪来传达对他人不耐烦或失望的态度以及对自己工作困惑的状态。通过分析这些情感联系,我们可以更好地理解团队成员之间的互动模式。识别情感实体并将其分类为“人”和“项目”能够帮助我们更好地了解团队成员及其与项目的关系。
在识别'Person'时存在一定的规律,在实际操作中可以通过观察其通常带有名称这一特点来进行判断。为此我们采用了基于规则的方法来进行Person识别工作,并将词性标记(POS)作为重要的辅助依据来提升该方法的效果。具体而言,在实体识别过程中作者采用了监督学习方法构建了特征列表:首先利用Stanford Named Entity Tagger提取命名实体然后通过NLTK对每个单词进行 POS 分析以获取其基本语法特性。随后我们将这些 POS 信息与命名实体标签一并作为依据来整理单词列表并完成后续处理流程。作者认为只有包含排名前m个特征的重要句子才具有情感分析的价值并通过实验不断优化m值以获得最佳效果建议在初步筛选阶段关注排名前十五的关键特征来进行实体初步识别工作

3 EXPERIMENTAL EVALUATION
3.1 Evaluation of Sentiment Classification
该作者采用了10倍交叉验证的方法对比了三种情感分析模型:本研究中的方法与其他两种方法(即SentiStrength-SE与SentiStrength)。从准确率、召回率以及F1值等指标来看,并针对积极、消极及中性情感分别进行了详细测试发现整体而言本研究中的方法均优于其他两种方法然而在处理负面情绪方面存在不足值得注意的是在某些情况下如带有讽刺意味或隐晦表达的情绪描述时可能会出现误判此外在训练数据集中正面评论的数量相对较少

对表3中的不同特征矢量化方法以及分类器的表现进行了评估。考虑到训练数据量相对有限,在包含3000条数据的数据集上进行训练后发现, TF-IDF方法较之Doc2vec略具优势。从分类器性能对比的角度来看, 可能是由于Boosting方法在集成学习过程中将多个弱学习器结合在一起, 同时特别关注那些容易被错误分类的数据点, 最终由此得出结论: Gradient Boosted Trees(GBT)表现出最佳的整体效果。

** 3.2 Evaluation of Entity Recognition**
在实验训练过程中所得出的最优m值是50。综合考虑下的各项指标包括准确率、召回率以及F-1分数均达到75%。值得注意的是,在处理负面评论时,SentiSW的实体检测准确率相对较低,并推测可能存在的疏漏或未被涵盖的规则。性能评估如下:

4 Threats to Validity
作者探讨了SentiSW在其他开源网站评论集上的适用范围,并考察了该模型是否会存在过拟合的问题。经过实验设计后,在测试不同数据集时发现该模型表现出良好的适应性,并且并未出现过拟合现象。
5 Related Work
5.3 Entity recognition
实体识别的目标是识别文本中的情感相关实体或方面。
6 Conclusion And Future Work
探讨数据集大小和丰富性优化策略,并深入分析情感因素如何影响软件质量与开发效率的关系。
