一种基于支持向量机的对话语句正确性评价方法技术

技术编号:25950198 阅读:54 留言:0更新日期:2020-10-17 03:42
本发明专利技术公布了一种基于支持向量机的对话语句正确性评价方法,包括以下步骤:步骤一、获取训练数据;步骤二、从待标注数据进行人工标注;步骤三、对训练数据进行标准化,构建支持向量机的训练集;步骤四、通过调节参数和利用所获得的训练数据,训练支持向量机;步骤五、根据对话中明确的引用关系和关键词共享,获取对话历史中的评价关系,明确评论者语句和被评价语句;步骤六、根据评价者语句的观点分数,以及评价者语句的正确性得分,对被评价的语句正确性进行评估。本发明专利技术充分挖掘对话历史中的结构特点和语义关系在保证准确度的前提下尽可能完整的获得了对话中的评论关系;通过设定递归的评价方法,鲁棒性更强。

【技术实现步骤摘要】
一种基于支持向量机的对话语句正确性评价方法
本专利技术涉及开发者对话内容中语句正确性的评价方法,尤其针对大型软件在演化过程中,开发者的讨论与交流历史中语句的正确性,提出的一种基于支持向量机的对话语句正确性评价方法。
技术介绍
随着当今信息技术的不断发展,软件的规模在不断扩大,软件的演化需求也在不断提速。大规模软件的频繁演化使得协同开发成为了当前软件开发的主要形式。开发人员需要经常通过频繁的沟通和讨论来完成协同开发,长期运营的软件团队会将这些沟通和讨论进行记录,从而为之后软件的维护和开发提供参考。Ubuntu开发者经常使用的Lanuchpad网站,Apache相关软件团队维护的错误报告管理网站Jira,以及大多数软件开发团队维护的MailList,都记录了开发人员在软件演化过程中,以对话形式开展的,针对各种问题的讨论。这些开发者的对话历史可以帮助开发人员减少在处理类似问题时的时间与开销,同时也可以作为大量学术科研领域的数据资料。RaymondPLBuse等人的工作《Automaticallydocumentingprogramchanges》以及EiriniKalliamvakou等人的工作《Opensource-stylecollaborativedevelopmentpracticesincommercialprojectsusingGitHub》指出,诸如错误报告管理系统,以及MailList这样的开发者对话历史做为软件的重要数据资料之一,为软件的开发维护,开发人员的协同和调度提供了非常大的帮助。但是,由于这些对话历史存在着数量众多,并且结构复杂的特点,开发者在如何准确高效的利用这些对话历史上,面临着极大的挑战。开发者的对话历史的数量众多。在大规模软件频繁演化的背景下,开发人员需要频繁的进行对话讨论,从而适应软件演化的需求,这样的过程中产生了大量的对话历史。根据Launchpad网站上的统计,在过去的三年里,网站中的新增的对话讨论内容达到了上百万,包括了数十亿的对话语句。每个对话历史中都平均包含超过50条语句。同时,每个对话历史涉及的主题,都会有数十条与之类似或者相关的对话历史。这使得开发者在搜索一个主题内容时,都被迫需要去浏览大量的对话历史。这为开发者带来了极大的时间损耗。开发者的对话结构十分复杂。由于开发者的讨论过程是一个信息被提出和验证的过程,一个信息被某位开发者提出后,会被后继的开发者讨论和评价。而这些信息中,一些信息经过一系列的讨论后,被证明是错误的。这些错误的语句很容易为读者带来误导。同时,对话历史中,信息的讨论和评价并不是连续的,而是相互穿插,互相评价的。一个语句在评价其他语句的同时,可能也被其他语句评价。这样多层且复杂的结构使得人工判断语句的正确性不仅耗时巨大,同时容易产生遗漏甚至错误。在浏览过程中,为了判断一个语句的正确性,读者需要人工的浏览和阅读几乎全部的上下文,来推断某个语句的正确性。开发者对话历史庞大的数量以及其复杂的结构使得语句正确性的判断面临严峻的挑战。与被被否定的信息相关的对话语句往往会为开发者带来误导,导致时间的浪费甚至错误,进而降低对话历史对软件维护的帮助。很多开发者都被对话历史庞大的数量以及其复杂的结构所困扰,比如浏览这些对话历史所带来的时间损耗,以及由于复杂的对话结构,导致对对话内容正确性的错误判断而尝试错误的方法,进而造成更多的时间开销甚至错误。开发者对话历史的的这些特点引起了人们的广泛关注。一些维护网站比如Debian,呼吁其使用者在完成讨论后对对话内容书写摘要,读者直接从摘要中获得正确的内容,从而降低时间损耗。这样的方法由于其为摘要书写者带来的时间损耗,很多开发者不愿意进行摘要书写。同时,由于不同开发者的语言表达习惯不同,这些摘要往往非常简短甚至包含错误,往往不能起到代替阅读的作用。为了更高效准确的获取对话中的关键内容,很多工作尝试通过多种不同的方式来评价对话历史中的语句,从而来降低浏览的时间开销。DeekshaArya等人在其工作《Analysisanddetectionofinformationtypesofopensourcesoftwareissuediscussions》中,对语句的类型进行判断,比如是新增功能还是错误复现,通过为每个句子打标签的方式,令用户根据所需来浏览包含对应标签的语句。JiangHe等人的工作《Unsuperviseddeepbugreportsummarization》中,通过对单词的重要性进行评价,从而进一步给予包含更多重要的单词的语句以更高的评价。这些工作的方法可以在一定程度上降低开发者的时间,但是这些工作更多的关注在语句的重要性以及其信息量上,而没有关注语句的重要性,这使得一些包含被否定信息的语句也被筛选出来,从而导致对开发人员的误导,造成时间的浪费甚至导致错误。综上所述,如何克服对话历史多层复杂的结构,准确的对开发者对话历史中的语句进行准确的评价,是降低软件演化开销的一个关键问题。目前的评价方法由于忽略了语句本身的正确性,使其应用的效果受到限制。因此,研究准确可靠的对话语句正确性评价方法,是本领域技术人员极为关注的技术问题和难点。现有的相关研究中没有利用对话结构特点,以及支持向量机(SVM)来对开发者对话内容评价的方法。
技术实现思路
本专利技术要解决的技术问题是:如何对开发者的对话语句的正确性进行预测。本专利技术提供了一种基于支持向量机的对话语句正确性评价方法,基于名对话结构和支持向量机的对话语句评价,充分挖掘对话历史中的结构特点和语义关系,实现自动化的对语句正确性进行评价的目的。具体技术方案如下:一种基于支持向量机的对话语句正确性评价方法,包括以下步骤:步骤一、从错误报告或邮件列表管理网站上获取包含完整讨论过程的错误报告(bugreport)或邮件列表(maillist),并根据标点符号队所获得的数据进行分句,来作为待标注数据;步骤二、从待标注数据进行语气标注(肯定/否定),并获得肯定语气标注和否定语气标注两类数据各至少5000个,作为下一步处理的数据;步骤三、通过统一大小写、标点符号,停用词去除和单词词根提取对数据进行标准化,构建支持向量机的训练集;步骤四、通过调节参数,以及利用所获得的训练数据,训练支持向量机;步骤五、根据对话中明确的引用关系和关键词共享,获取对话历史中的评价关系,明确评论者语句和被评价语句;步骤六、根据评价者语句的观点分数,以及评价者语句的正确性得分,对被评价的语句正确性进行评估。作为本专利技术技术方案的进一步改进,所述获取步骤一中待标注数据方法为:(1)从错误报告管理网站https://issues.apache.org/jira/secure/Dashboard.jspa上获取关于bug的讨论过程作为待标注数据,需要获取至少10000个错误报告中的讨论内容,讨论内容包括全部的错误描述和讨论内容;(2)对所获取讨论历史进行筛选,只保留状态为“Closed”的错误报告;(3)根据符号‘,’,‘.’本文档来自技高网
...

【技术保护点】
1.一种基于支持向量机的对话语句正确性评价方法,其特征在于,包括以下步骤:/n步骤一、从错误报告或邮件列表管理网站上获取包含完整讨论过程的错误报告或邮件列表,并根据标点符号队所获得的数据进行分句,得到待标注数据;/n步骤二、从待标注数据进行语气标注肯定或者否定,并获得肯定语气标注和否定语气标注两类数据各至少5000个进行人工打标数据;/n步骤三、通过统一大小写、标点符号,停用词去除和单词词根提取对数据进行标准化,构建支持向量机的训练集;/n步骤四、通过调节参数和利用所获得的训练数据,训练支持向量机;/n步骤五、根据对话中明确的引用关系和关键词共享,获取对话历史中的评价关系,明确评论者语句和被评价语句;/n步骤六、根据评价者语句的观点分数,以及评价者语句的正确性得分,对被评价的语句正确性进行评估。/n

【技术特征摘要】
1.一种基于支持向量机的对话语句正确性评价方法,其特征在于,包括以下步骤:
步骤一、从错误报告或邮件列表管理网站上获取包含完整讨论过程的错误报告或邮件列表,并根据标点符号队所获得的数据进行分句,得到待标注数据;
步骤二、从待标注数据进行语气标注肯定或者否定,并获得肯定语气标注和否定语气标注两类数据各至少5000个进行人工打标数据;
步骤三、通过统一大小写、标点符号,停用词去除和单词词根提取对数据进行标准化,构建支持向量机的训练集;
步骤四、通过调节参数和利用所获得的训练数据,训练支持向量机;
步骤五、根据对话中明确的引用关系和关键词共享,获取对话历史中的评价关系,明确评论者语句和被评价语句;
步骤六、根据评价者语句的观点分数,以及评价者语句的正确性得分,对被评价的语句正确性进行评估。


2.根据权利要求1所述的基于支持向量机的对话语句正确性评价方法,其特征在于,所述获取步骤一中待标注数据方法为:
(1)从错误报告管理网站https://issues.apache.org/jira/secure/Dashboard.jspa上获取关于bug的讨论过程作为待标注数据,需要获取至少10000个错误报告中的讨论内容,讨论内容包括全部的错误描述和讨论内容;
(2)对所获取讨论历史进行筛选,只保留状态为“Closed”的错误报告;
(3)根据符号‘,’,‘.’,‘?’,‘!’对语句进行分句,其中,当‘.’作为单词的一部分出现时,不作为划分单元。


3.根据权利要求1所述的一种基于支持向量机的对话语句正确性评价方法,其特征在于,所述获取步骤二中人工打标数据方法为:
(1)对同一组数据进行标注,标注内容为肯定或者否定,标注依据为句子中包含明确的肯定或者否定词语,不能明确判断语气的语句不作标注并舍弃;
(2)根据所有标注人员的标注获得语句的标签;语句被任一人员舍弃,则舍弃该语句;语句被所有人员同时认定为肯定,则语句标签为肯定;被同时认定为否定,则标签为否定,标注人员出现意见不同的语句舍弃;
(3)具有肯定与否定标签的语句,应分别不少于5000个;如果少于,则转步骤(1),直至肯定与否定标签分别达到5000个;
(4)取肯定标签与否定标签的语句各5000个作为训练数据。


4.根据权利要求1所述的一种基于支持向量机的对话语句正确性评价方法,其特征在于,所述步骤三中数据标准化方法为:
(1)将训练数据中所有单词统一为小写;
(2)去除标点符号,保留单词内部连接号、函数调用关系符号“.”;
(3)去除停用词,停用词列表使用RankNL提供的常用英文停用词列表;
(3)统一单词时态,保持单词词根,单词时态统一采用python中,nltk扩展包中,stem函数实现。


5.根据权利要求1所述的一种基于支持向量机的对话语句正确性评价方法,其特征在于,所述步骤四中对支持向量机的参数设置与训练包括以下步骤:
(1)支持向量机使用python数据库中,sklearn扩展包中的svm组件来实现,Python版本取3.5及以上;
(2)支持向量机的参数设置如下:
C=10.0,cache_size=200,class_weight=None,coef0=0.0,decision_function_shape=None,degree=3,gamma='auto',kernel='rbf',max_iter=-1,probability=True,random_state=None,shrinking=True,tol=0.001,verbose=False;
(3)将包含肯定标签与否定标签的语句各不少于5000个的训练数据输...

【专利技术属性】
技术研发人员:李姗姗毛晓光董威刘浩然陈振邦陈立前尹良泽文艳军刘万伟贾周阳
申请(专利权)人:中国人民解放军国防科技大学
类型:发明
国别省市:湖南;43

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1