(1985-), 女, 博士, 副教授, CCF专业会员, 主要研究领域为智能软件工程, 经验软件工程, 开源软件, 软件库挖掘
(1998-), 男, 硕士生, CCF学生会员, 主要研究领域为自然语言处理, 软件库挖掘
(1997-), 女, 硕士生, 主要研究领域为数据挖掘, 机器学习, 自然语言处理
(1968-), 女, 博士, 教授, 博士生导师, CCF杰出会员, 主要研究领域为软件建模与分析, 需求工程, 实证软件工程, 软件体系结构
Stack Overflow是最受欢迎的软件问答社区之一, 用户可以在该网站发布问题并得到其他用户的回答. 为了保证问题质量, 网站需要尽快发现并删除低质量或者不符合社区主题的问题. 当前, Stack Overflow主要采用人工检查的方式发现需要被删除的问题. 然而这种方式往往不能保证问题被及时发现、删除, 而且加重了社区管理员的负担. 为了快速发现需要删除的问题, 提出了自动化预测问题删除的方法MulPredictor. 该方法提取问题的语义内容特征、语义统计特征和元特征, 使用随机森林分类器计算问题会被删除的概率. 实验结果表明: 与现有方法DelPredictor和NLPPredictor相比, MulPredictor的准确率在平衡测试集上分别提升了16.34%和12.78%, 在随机测试集上分别提升了12.38%和14.14%. 此外, 分析了影响问题删除的重要特征, 发现代码段、问题的标题和正文第1段的特征对问题删除有重要的影响.
Stack Overflow is one of the most popular software question and answer communities, where users can post questions and receive answers from others. In order to ensure the quality of questions, the website needs to promptly discover and delete questions with low quality or not conforming to the community’s theme. Currently, Stack Overflow mainly relies on manual inspection to find questions that need to be deleted. However, this way usually hardly guarantees to discover and delete questions in time, and increases the burden of community administrators. In order to quickly find questions that need to be deleted, this study proposes a method to automatically predict question deletion, which is named MulPredictor. This method extracts the semantic content features, the semantic statistical features and the meta features of a question, and uses the random forest classifier to calculate the probability that it will be deleted. Experimental results showed that, compared with existing methods DelPredictor and NLPPredictor, MulPredictor increases the accuracy by 16.34% and 12.78% on balanced test set, and increases the accuracy by 12.38% and 14.14% on random test set. In addition, this study also analyzes important features in question deletion, and finds that the code segment, the question’s title, and the first paragraph of the question’s body have the most significant impacts on question deletion.
在软件问答社区Stack Overflow, 用户可以发布或回答问题、对问题或回答进行投票、发表评论以及编辑问题[
在Stack Overflow, 社区管理员或者高声誉用户人工查看并删除问题. 但是这种人工方式往往不能保证问题被及时发现、删除. Correa等人[
一些文献研究自动化预测被删除问题的方法. Correa等人[
本文的贡献主要在以下两方面.
1) 提出了一种软件问答社区的问题删除预测方法MulPredictor. 该方法不仅考虑元特征[
2) 发现了影响问题删除的重要特征, 指导用户提问. 例如, 本文发现代码段长度是重要特征, 因此建议用户在提问时详细地给出代码信息; 此外还发现标题中单词的平均长度也是一个重要因素. 建议用户在撰写问题标题时尽量选择较为简短的单词, 以便于他人理解.
Stack Overflow是目前最热门的软件问答社区之一. 从2008年投入使用以来至2020年10月12日, Stack Overflow已经积累了超过2 020万个问题、3 030万个答案以及1 320万个注册用户, 平均每月有2.621亿访问量. 目前, Stack Overflow越来越受到软件工程、人机交互、社会计算、数据挖掘等不同研究领域的关注[
Stack Overflow使用基于社区的声誉奖励机制. 如果用户发布了错误的答案或者类似垃圾邮件或广告的低质量问题, 就会导致声誉值降低; 相反, 如果用户提出高质量的问题或给出高质量的回答, 就会为其赢得声誉. 虽然声誉机制引导用户发布高质量内容, 但仍然存在大量低质量或者脱离主题的问题. 因此, Stack Overflow采用人工方式删除问题. 社区管理员可以直接删除问题. 声誉值超过10 000的用户可以投票删除问题. 这种人工删除低质量问题的方法可以有效地维护网站内容质量, 然而这种方式既会导致不合格问题存活时间过长, 还因为需要社区管理员的参与而加重了社区管理员的负担.
在Stack Overflow网站, 用户可以发布软件开发相关的问题帖. 以ID为64525237的问题帖为例(How to calculate the size of blocks of values in a list?
Composition of a Question on Stack Overflow
Stack Overflow网站问题帖的结构
1) 标题, 即问题的题目. 图中问题的标题为“ How to calculate the size of blocks of values in a list? ”.
2) 浏览量, 即该问题被浏览的次数. 图中问题的浏览量为61.
3) 得分, 标志着问题的质量. 浏览者可以对问题的质量进行评分. 图中问题的得分为4.
4) 正文, 问题的主体部分, 包括自然语言描述和代码段.
5) 标签, 概括了问题所属的范畴, 由问题发布者设置. 图中问题的标签包括“Python”“arrays”“pandas”“list”和“numpy”.
6) 提问者, 显示提问者的一些基本信息, 例如图中提问者的用户名是“NonSleeper”.
近年来, 一些研究人员针对Stack Overflow问题的关闭或删除预测进行了相关研究. Correa等人[
除了对问题关闭预测和问题删除预测的研究之外, 研究者们还对Stack Overflow问题开展其他研究[
针对Stack Overflow面临的问题删除问题, 本文提出了自动化预测问题删除的方法MulPredictor. 本节将对MulPredictor的设计思路和特征进行介绍.
一个新问题被发布后可能被删除或者保留, 因此问题删除预测问题可以被转化为机器学习的二分类问题, 即问题的类型标记分别为“删除”和“不删除”. 本文提出自动化预测问题删除的方法MulPredictor, 整体架构如
Composition of a Question on Stack Overflow
MulPredictor的框架
MulPredictor分为两个阶段: 训练阶段和预测阶段. 在训练阶段, 本文参考Stack Overflow给出的提问指南, 提出了影响问题删除预测的特征, 即语义内容特征、语义统计特征和元特征. 本文将在第3.2 节详细介绍特征含义, 解释采用这些特征的理由.
MulPredictor从3个维度提取问题的特征, 包括问题的语义内容特征、语义统计特征和元特征, 共计67个特征. 其中, 问题的语义内容特征、语义统计特征由本文提出, 问题的元特征由Correa等人[
脱离社区主题是问题删除的重要原因. 例如, Stack Overflow上ID为52584464的问题是: “如果使用PAL拍摄电影, 那么该电影可以在NTSC中播放吗?”该问题的提问内容与编程和软件开发无关, 不符合Stack Overflow的社区主题, 因此被网站删除. 可以推理得知, 如果新问题和被删除问题的主题更相似, 那么新问题更可能被删除; 如果新问题和被保留问题的主题更相似, 那么新问题更可能被保留. 为了分析问题语义是否符合主题, 本文分别针对被删除和被保留两种情况, 计算新问题的语义内容删除概率和语义内容保留概率.
被删除问题和被保留问题是两类问题. 文本卷积神经网络模型(text convolutional neural networks)是由Kim[
问题描述主要包括标题和正文两部分. 标题概述问题内容, 正文详细介绍问题. 为了指导用户提问, Stack Overflow网站为用户制定了一个详细的提问指南. 提问指南首先强调标题的重要性, 即“The title is the first thing potential answerers will see, and if your title isn’t interesting, they won’t read the rest.” 此外, 提问指南也强调正文第1段的重要性, 即“The first paragraph in your question is the second thing most readers will see, so make it as engaging and informative as possible.” 因此, 本文从标题、正文和正文第1段3个方面提取问题的语义统计特征.
(1) 标题特征
问题标题是用户对该问题的第一印象, 如果用户对标题不感兴趣, 可能就不会仔细阅读问题的具体内容. 问题标题的可读性、可理解性、语法正确性都会影响用户对问题的印象. 基于以上分析, 本文提取了下列标题特征.
① 标题音节数. 音节数可以一定程度上反映英文单词的难度, 通常情况下单词越简单音节数越少, 超过3个音节的单词可能会带来阅读困难.
② 标题flesch易读性指数. flesch易读性指数(flesch reading ease)一般被用于评估文档或表格的可读性, 其值越高表示越容易阅读, 它的计算方式如公式(1)所示[
③ 标题文化水平等级. 标题文化水平等级反映读懂一段特定文字需要的文化水平等级(automated readability index,
④ 标题涵盖标签的比例. 标签是对问题主题的极简概括. 若标题含有标签中文本, 则有助于用户快速抓住问题主题. 标题涵盖标签的比例表示标题中含有的标签个数与该问题给出的标签个数的比例.
⑤ 标题语法错误数. 标题语法错误数反映标题中存在的语法错误数量. 该值越大表示标题语法错误越多.
(2) 正文特征
除标题外, 正文的可读性、可理解性等也会影响问题质量. 参考标题特征的选取, 本文也考虑: ① 正文的音节数、② flesch易读性指数、③ 文化水平等级、④ 语法错误数.
除此之外, 本文还考虑⑤正文的情感倾向. 它分为消极和积极两种, 可能对阅读者的心理产生影响, 从而影响阅读者对问题的评价, 因此本文也加以考虑. 正文中不仅包含自然语言段, 也有可能包含代码段. 本文还考虑⑥正文代码段与自然语言段比例, 一般情况下, 比例大说明提供问题包含详细的代码信息, 有助于用户理解问题.
(3) 正文第1段特征
正文第1段通常是除标题外用户最先看到的部分. Stack Overflow的提问指南建议: “In the body of your question, start by expanding on the summary you put in the title. Explain how you encountered the problem you're trying to solve, and any difficulties that have prevented you from solving it yourself.” 正文第1段通常概述问题内容, 其写作尤为重要. 因此, 本文单独考虑正文第1段特征. 参考标题, 本文提取: ① 正文第1段音节数、② 正文第1段flesch易读性指数、③ 正文第1段文化水平等级、④ 正文第1段语法错误数.
正文第1段一般用于对问题内容进行总体介绍. 如果正文第1段直接呈现代码, 而不是描述文字, 可能对用户理解该问题产生负面影响. 因此, 本文考虑: ⑤ 正文第1段是否为自然语言. 另外, 本文还考虑: ⑥ 正文第1段单词数、⑦ 正文第1段单词平均长度, 用以描述正文第1段的复杂程度. 如果正文第1段过于详细, 单词数量太多, 读者可能难以快速了解问题内容.
除了本文新提出语义内容特征和语义统计特征之外, 本文还采用了Correa等人[
(1) 档案特征
档案特征包含了提问者以往的提问情况、回答情况、获得的徽章数等特征. 档案信息反映提问者的历史提问水平. 提问者的档案特征包括以下内容: 提问者的注册时长, 提问者以往发布的得分为负、为零、为正的问题和回答数量, 提问者以往的提问总数量、回答总数量, 提问者获得的徽章数, 以及提问者的提问频率(即提问者以往的提问总数量/提问者的注册时长)和回答频率(即提问者以往的回答总数量/提问者的注册时长).
(2) 社区特征
提问者的社区特征度量其历史提问或者回答情况, 主要包括: 问题的平均得分, 回答的平均得分, 平均问题浏览量, 平均问题评论数, 平均问题喜欢票数, 以及平均接受回答数.
(3) 内容特征
问题的内容特征是根据问题的文本内容定义的. 在提取部分内容特征时, 本文用到了LIWC (linguistic inquiry and word count)分析工具, 分析问题中自然语言文本的心理计量特性[
(4) 句法特征
句法特征主要度量问题文本的写作风格. 句法特征包括: 功能词、连词和介词的LIWC得分, 正文中的字符数、字母字符数、大写字母数、小写字母数、数字字符数、空格字符数、特殊字符数、标点符号数、单词数、短单词数、唯一单词数、单词的平均长度, 以及标题中的字符数、单词数和单词的平均长度.
为了获取问题的特征数据, 本文使用了Stack Overflow网站的转储文件, 包括Posts文件、Users文件和Badges文件. 本文从这3个文件中提取相应字段的信息并计算特征. 例如, 使用Posts文件中的标题和正文等字段构建语义内容特征; 使用Posts文件中的标题、正文和标签等字段构建语义统计特征; 使用Posts文件中的问题发布时间、问题得分、回答发布时间、回答得分、标题、正文、标签、(问题或回答的)拥有者ID、浏览量、评论数、喜欢人数、问题接受的答案ID, 以及Users文件中的用户注册日期、用户ID, 以及Badges文件中的用户ID、用户获得勋章的时间等字段构建元特征.
Stack Overflow的转储文件每隔一段时间就会更新, 例如2018年1月1日的Posts文件记录了从2008年网站投入使用以来至2018年1月1日期间发布的问题中未被删除的问题. 为了尽可能保证实验中使用的问题的类别正确性, 本文使用一定时间内保持稳定状态的问题构建数据集. 具体来讲, 使用2019年1月的转储文件以及2020年1月的转储文件构建数据集. 如果一个问题存在于2019年1月的Posts文件中, 却不在2020年1月的Posts文件中, 就认为这个问题被删除了; 如果该问题仍存在于2020年1月的Posts文件中, 也就是说截至2020年1月仍未被删除, 那么其后续被删除的概率也低, 本文认为它是保留问题. 通过上述方法, 本文从2018年10月1日–2018年12月31日期间发布的问题中获取了共76 745个被删除问题和449 769个未被删除问题. 为了防止出现使用晚发布的问题预测早发布的问题是否会被删除的情况, 本文以2018年10月1日–2018年11月15日作为训练集获取区间, 使用这期间发布的问题构建训练集; 以2018年11月16日–2018年12月31日作为测试集获取区间, 使用这期间发布的问题构建测试集.
构建训练集时, 考虑到未被删除问题的数量远大于被删除问题, 为了防止过拟合现象的发生, 根据平衡训练集的思想, 本文从训练集获取区间中随机抽取了10 000个被删除问题和10 000个未被删除问题组成训练集. 在构建测试集时, 考虑到平衡测试集适用于反映方法的有效性, 而随机测试集适用于反映方法的真实使用情况, 本文分别构建了这两种测试集, 从测试集获取区间发布的问题中随机抽取10 000个被删除问题和10 000个未被删除问题组成平衡测试集, 然后随机抽取20 000个问题组成随机测试集.
对于预测问题, 常用的评估指标是准确率(
准确率指标由公式(2)定义.
精确率指标由公式(3)和公式(4)定义.
上式中不同下标的精确率含义不同,
召回率指标由公式(5)和公式(6)定义.
此外, 为了比较不同方法的性能差异, 本文定义了增益值(gain)来计算方法
本文研究以下3个问题.
RQ1: MulPredictor预测问题删除的效果如何?
本文将MulPredictor方法与Xia等人提出的DelPredictor方法[
RQ2: MulPredictor应该采用哪种分类算法?
MulPredictor使用机器学习分类算法来预测问题是否被删除. 本文尝试4种常见的分类算法——支持向量机、随机森林、逻辑回归和XGBoost, 通过实验比较不同算法的预测效果, 将效果最好的分类算法应用于MulPredictor.
RQ3: MulPredictor使用的哪些特征对问题删除预测发挥重要作用?
MulPredictor使用scikit-learn库实现预测模型. scikit-learn库除了提供多种分类算法之外, 还支持分析各输入特征的重要性, 从而可以找出对问题删除预测影响较大的特征. 通过对这些特征进行分析, 本文还为用户如何在Stack Overflow社区提问给出指导意见.
Xia等人[
实验结果如
Performance Comparison Between MulPredictor and Existing Methods(Based on Balanced Test Set)
MulPredictor与现有方法的性能比较(基于平衡测试集)(%)
方法 | |||||||
DelPredictor | 53.85 | 53.98 | 52.20 | 53.72 | 53.72 | 55.50 | 54.59 |
NLPPredictor | 55.55 | 55.27 | 58.20 | 55.86 | 55.86 | 52.90 | 54.34 |
MulPredictor |
Performance Comparison Between MulPredictor and Existing Methods(Based on Random Test Set)
MulPredictor与现有方法的性能比较(基于随机测试集)(%)
方法 | |||||||
DelPredictor | 57.04 | 20.77 | 40.80 | 27.53 | 80.50 | 61.10 | 69.47 |
NLPPredictor | 56.16 | 24.22 | 56.00 | 33.81 | 56.20 | 67.22 | |
MulPredictor | 80.37 |
本文还对各个评估指标进行了增益计算, 用各评估指标的
Calculation Results of Gain Value(Based on Balanced Test Set)
gain值计算结果(基于平衡测试集)(%)
方法 | |||||||
DelPredictor | 16.34 | 17.12 | 15.90 | 15.10 | 15.66 | 16.76 | 16.21 |
NLPPredictor | 12.78 | 14.38 | 3.95 | 10.69 | 11.22 | 22.50 | 16.75 |
Calculation Results of Gain Value(Based on Random Test Set)
gain值计算结果(基于随机测试集)(%)
方法 | |||||||
DelPredictor | 12.38 | 91.38 | 40.93 | 70.72 | −0.16 | 9.05 | 4.88 |
NLPPredictor | 14.14 | 64.12 | 2.68 | 39.01 | −3.90 | 18.56 | 8.39 |
综上所述, 无论在平衡测试集上还是随机测试集上, MulPredictor方法的预测效果都优于对比方法DelPredictor和NLPPredictor.
尽管MulPredictor在问题删除预测效果上相比两个对比方法更出色, 但是在一些情况下, MulPredictor也会预测失效. 我们人工查看预测失败的问题, 发现一些典型例子, 指导我们未来改进方法.
(1)问题的真实类别为“删除”, 预测结果为“不删除”. 例如ID 8861969的问题正文提到“I know this question has been asked severally. I need someone to check why the application displays a success message but no mail was received in my mail. Here is my code”. 提问者知道这个问题已经被询问过多次但是自己找不到答案, 所以又问了一次. 这种问题很可能会被管理员删除, 以防止社区充斥大量内容重复的问题.
(2) 问题的真实类别为“不删除”, 预测结果为“删除”. 例如ID 3220999的问题标题是“xlim in ggplot with POSIXct dates”. Stack Overflow不支持带格式的标题文本, 因此不能在编写标题时把“POSIXct” “.AspNetCore.Identity.Application”等词块标注为代码块, 故自动分析工具判断该问题的标题有4处语法错误, 进而预测该问题会被删除. 实际上, 该问题的标题描述准确, 所以没有被管理员删除.
RQ1: 与现有方法DelPredictor和NLPPredictor相比, MulPredictor在平衡测试集和随机测试集上都具有更好的效果.
MulPredictor使用机器学习分类算法来预测问题删除. 本文尝试了4种机器学习分类算法, 包括支持向量机、随机森林、逻辑回归和XGBoost. 支持向量机的原理是寻找一个最优分类超平面, 既能保证分类准确度, 又能最大化超平面两侧的空白区域. 随机森林利用重采样方法, 从原始样本中抽取多个样本, 并对每一个样本进行决策树建模, 然后组合所有树的分类投票结果, 输出得票最多的类别. 逻辑回归根据现有数据对分类边界线建立回归公式, 从而解决二分类问题. XGBoost是一种基于梯度提升树的集成学习算法.
为了选择合适的分类算法, 本文评估4种分类算法在平衡测试集和随机测试集的问题预测效果. 实验结果如
Performance Comparison of Different Classification Models(Based on Balanced Test Set)
不同分类算法性能比较(基于平衡测试集)(%)
分类算法 | |||||||
支持向量机 | 58.60 | 58.74 | 57.80 | 58.27 | 58.46 | 59.40 | 58.93 |
随机森林 | 60.50 | 61.83 | 62.13 | ||||
逻辑回归 | 60.55 | 61.53 | 56.30 | 58.80 | 59.72 | 62.16 | |
XGBoost | 61.35 | 60.62 | 57.90 | 59.97 |
Performance Comparison of Different Classification Models(Based on Random Test Set)
不同分类算法性能比较(基于随机测试集)(%)
分类算法 | |||||||
支持向量机 | 61.42 | 37.17 | 56.98 | 44.99 | 79.31 | 63.12 | 70.29 |
随机森林 | 39.75 | 57.50 | 47.00 | 80.37 | 66.63 | ||
逻辑回归 | 63.02 | 38.05 | 53.46 | 44.46 | 78.91 | 72.28 | |
XGBoost | 66.42 | 72.79 |
RQ2: 基于随机森林算法的问题删除预测方法在平衡测试集和随机测试集都取得最高的准确率.
本文提取了问题的2个语义内容特征、18个语义统计特征和47个元特征, 共计67个特征, 采用随机森林分类器作为分类算法实现MulPredictor方法. 由于scikit-learn库提供的随机森林算法提供了“feature_importances_”接口, 可以获得每个特征对问题删除预测的影响大小. 第
如
Top 10 Most Influential Features on Question Deletion Prediction
对问题删除预测影响最大的10个特征
特征 | 影响因子比例 | 是否由本文提出 |
语义内容删除概率 | 1.0000 | 是 |
语义内容保留概率 | 0.5310 | 是 |
代码段长度 | 0.0239 | 否 |
代码段与自然语言段比例 | 0.0191 | 是 |
功能词的LIWC得分 | 0.0188 | 否 |
正文第一段单词数 | 0.0178 | 是 |
介词的LIWC得分 | 0.0171 | 否 |
标题中单词的平均长度 | 0.0152 | 否 |
第一人称奇异代词的LIWC得分 | 0.0141 | 否 |
正文第一段语法错误数 | 0.0133 | 是 |
除了上述两个语义内容特征之外, 代码段的写作对问题是否被删除也有较大的影响. 从
Mean and Median Values of Typical Features on Different Question Sets
典型特征在不同问题集的均值和中位数
特征 | 均值 | 中位数 | |||
删除问题集 | 未删除问题集 | 删除问题集 | 未删除问题集 | ||
代码段长度 | 442.35 | 549.79 | 27.50 | 178.00 | |
代码段与自然语言段比例 | 0.35 | 0.43 | 0.29 | 0.40 | |
正文第一段单词数 | 35.10 | 28.80 | 30.00 | 24.00 | |
正文第一段语法错误数 | 4.42 | 3.23 | 2.00 | 2.00 | |
标题中单词的平均长度 | 5.49 | 5.27 | 5.25 | 5.00 |
除了代码段的相关特征之外, 正文第1段的相关特征对问题删除影响也很大. 从
此外, 从
RQ3: 语义内容删除概率、语义内容保留概率、代码段长度和代码段与自然语言段比例等特征在问题删除预测发挥重要作用.
内部有效性威胁与研究中使用的度量和实验中的设置有关. 首先, 本文的问题删除预测方法考虑语义内容特征、语义统计特征和元特征. 在未来工作中, 我们计划参考Stack Overflow提问指南, 尝试更多的特征并分析其对问题删除预测的影响. 其次, 本文在测试4种常见分类模型的分类效果时均使用了默认参数. 在未来的工作中, 我们计划分析参数设置对模型效果的影响, 尝试改进方法. 此外, 本方法使用的问题标签是由提问者设置的, 反映了提问者对问题的理解. 可能个别提问者设置的标签不准确. 在未来工作中, 我们计划分析标签设置准确性对问题删除预测的影响.
外部有效性主要体现在研究方法的普遍性上. 本文选取了Stack Overflow进行研究和实验评估, 但不确定该方法在其他平台的效果. 在今后的工作中我们将扩展实验中的数据来源, 进一步验证并调整方法.
本文针对Stack Overflow网站人工删除耗时费力的问题, 提出了自动化预测问题删除方法MulPredictor. 该方法提取问题的语义内容特征、语义统计特征和元特征, 使用随机森林来分析得到问题是否会被删除的概率. 实验结果表明, 相比现有方法DelPredictor和NLPPredictor, MulPredictor在平衡测试上的准确率分别提升了16.34%和12.78%, 在随机测试集上的准确率分别提升了12.38%和14.14%. 此外, 本文还分析了特征重要性并进行解释, 为用户提问提供指导.
Wu YH, Wang SW, Bezemer CP, Inoue K. How do developers utilize source code from stack overflow? Empirical Software Engineering, 2019, 24(2): 637–673.
Barua A, Thomas SW, Hassan AE. What are developers talking about? An analysis of topics and trends in stack overflow. Empirical Software Engineering, 2014, 19(3): 619–654.
Zhou JY, Wang SW, Bezemer CP, Hassan AE. Bounties on technical Q&A sites: A case study of Stack Overflow bounties. Empirical Software Engineering, 2020, 25(1): 139–177.
Beyer S, Macho C, Di Penta M, Pinzger M. What kind of questions do developers ask on Stack Overflow? A comparison of automated approaches to classify posts into question categories. Empirical Software Engineering, 2020, 25(3): 2258–2301.
Zhang HX, Wang SW, Chen TH, Zou Y, Hassan AE. An empirical study of obsolete answers on Stack Overflow. IEEE Trans. on Software Engineering, 2021, 47(4): 850–862.
et al. Stackoverflow tag prediction using tag associations and code analysis. Journal of Discrete Mathematical Sciences and Cryptography, 2020, 23(1): 35–43.]]>
Tausczik YR, Pennebaker JW. The psychological meaning of words: LIWC and computerized text analysis methods. Journal of Language and Social Psychology, 2010, 29(1): 24–54.
McHaney R, Tako A, Robinson S. Using LIWC to choose simulation approaches: A feasibility study. Decision Support Systems, 2018, 111: 1–12.