System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种基于深度学习的工业软件故障报告判别方法技术_技高网

一种基于深度学习的工业软件故障报告判别方法技术

技术编号:41790736 阅读:2 留言:0更新日期:2024-06-24 20:17
本发明专利技术属于软件测试技术领域,涉及一种用于提高软件故障报告处理效率的技术,具体为一种基于深度学习的工业软件故障报告判别方法,包括:按照关键词筛选收集GitHub上指定项目的故障报告、对导出的数据集进行预处理、数据扩充、数据清洗、模型训练和故障报告预测。本发明专利技术可用于不同工业软件项目的故障报告类型判别如开源项目Kratos、Dealii等;亦可根据特定软件项目的标准故障报告信息内容,对本发明专利技术的相关步骤进行适配,从而对该特定软件项目的故障报告进行判别分类。

【技术实现步骤摘要】

本专利技术属于软件测试,涉及一种用于提高软件故障报告处理效率的技术,具体为一种基于深度学习的工业软件故障报告判别方法


技术介绍

1、在现代工业软件开发中,软件故障报告是开发和维护团队重要的信息来源。故障报告通常包含了用户在软件使用过程中遇到的问题、异常行为、以及相关的软件环境信息。这些报告对于软件开发者来说是极为宝贵的反馈,可以帮助识别和解决软件中存在的问题,提高软件的质量和稳定性。然而,随着软件规模和复杂性的增加,故障报告的数量也呈指数级增长。处理大量的故障报告变得非常耗时且具有挑战性,尤其是在工业软件等复杂系统中。此外,有一类故障报告其实并非一个真正的故障,是由于用户自身的种种原因导致的程序出错,但又需要开发人员进行人工判别,大量的“虚假”故障报告会严重影响开发者对错误的处理效率。

2、为了提高软件故障报告处理的效率和准确性,基于深度学习的故障报告判别方法应运而生。深度学习技术通过对大量故障报告的学习,能够自动学习其中的模式和规律,实现对报告的智能分类和判别。与目前应用在故障报告分类领域的深度学习研究大多集中在对故障报告进行去重,或是用不同的深度学习方法通过故障报告信息对故障代码定位,专注于故障报告本身的判别的研究较少。


技术实现思路

1、为解决上述问题,本专利技术提供了一种基于深度学习的工业软件故障报告判别方法。本专利技术可用于不同工业软件项目的故障报告类型判别如开源项目kratos、dealii等;亦可根据特定软件项目的标准故障报告信息内容,对本专利技术的相关步骤进行适配,从而对该特定软件项目的故障报告进行判别分类。

2、本专利技术技术方案:

3、一种基于深度学习的工业软件故障报告判别方法,包括如下步骤:

4、步骤1:按照关键词筛选收集github上指定项目的故障报告

5、通过关键字筛选法,使用github提供的项目仓库api收集状态为关闭的故障报告,这些故障报告需要与工业软件常见错误相关,即在标题或是标签中出现需要检索的关键字;然后使用代码将提取的数据以结构化格式存储并导出至csv文件。

6、步骤2:对导出的数据集进行预处理

7、首先对步骤1收集到的故障报告进行标记与分类,统一修改每条数据的标记名,标记名包括错误类别名、症状名和标签名;经过初步分类后判断是否为非程序错误并做出标记,继续提取故障报告内容中的日志信息,确定项目的标准日志输出格式。由于提取的数据可能包含噪音、非结构化文本或其他非期望的特征,使用正则表达式并按照确定的标准日志格式进行数据清洗,最后获得每条故障报告中标准日志信息,并使用json文件操作模块将筛选后的数据输出为json文件。

8、步骤3:数据扩充

9、对步骤2中得到的json文件进行数据扩充,数据扩充目标:根据提取出的日志信息中的文件名以及提示的错误的函数名,获取对应函数的具体实现以及注释。将数据集中涉及的所有项目源文件从github克隆到本地,通过编程获取文件路径和扩展名,然后遍历项目目录中的文件以查找指定源文件,判断查找的目标源文件是否存在,若不存在则跳过此条数据继续往下检索,若存在则使用正则表达式解析项目源代码,从中提取注释、函数名和函数实现扩充写入进json文件。

10、步骤4:数据清洗

11、对步骤3中获取的数据扩充文件进行数据清洗,输出为模型训练的输入数据集。预定义一个停用词表,其中包含了在文本分析中通常被忽略的常见词语,如“the”、“and”等;使用正则表达式或其他字符串处理技术,去除文本中的特殊符号,例如标点符号、括号、引号等;将经过清洗的数据输出为csv文件并分为两列,存储数据列和标签信息列。

12、步骤5:模型训练

13、a:选用预训练好的开源bert-base-uncased模型进行微调,bert-base-uncased是通过大规模无监督学习预训练的模型,学到了通用的语言表示。通过在特定任务上微调,模型可以将先前学到的知识迁移到新任务上,从而在相对较小的数据集上也能取得更好的效果。为此,首先模型微调构建,在bert的顶部添加两个线性层,用于分类目的,并设置dropout=0.1和relu作为激活函数。使用步骤4中输出的数据集,通过与预训练模型对应的分词器,使用encode_plus方法将文本数据编码成模型能接受的输入格式,并将编码后的数据以字典形式返回,其中包括token ids、attention mask和token type ids以及对应判断标签。

14、b:为了弥补训练数据集中可能存在的数据量少的问题,选用k折训练法,将数据集分成k个大小相等的子集。对于每个子集,将其作为验证集,其余k-1个子集作为训练集,训练模型并在验证集上评估性能,重复上述步骤k次并计算k次验证结果的平均值作为最终评估结果。进行模型微调训练并保存,同时输出模型训练日志。

15、步骤6:故障报告预测

16、使用步骤5中微调好的bert-base-uncased模型进行故障报告的分类预测,输入新获取的故障报告中的信息,模型输出对该报告是否为一个真正的错误的预测,预测结果为y或者n。

17、本专利技术的有益效果:

18、(1)数据扩充:本专利技术的判别方法不仅依赖于故障报告提供的日志信息,同时使用日志信息通过对报错的源代码搜索后进行数据扩充。根据错误聚集,即一个错误被发现时,可能会发现更多相关或类似的错误的观点关联日志中提示的函数信息,从而丰富了训练数据,可以进一步提高模型的泛化能力和判别性能。

19、(2)用户角度判别:与其他深度学习方法相比,本专利技术方法着重从用户角度进行判别。目前深度学习的研究在故障报告判别这方面的研究大多专注于筛选重复提交的故障报告以及根据故障报告定位出错的程序代码行,而没有研究和专利技术专注于判别这个故障报告究竟本身是否代表了一个真实故障还是用户本身的使用问题。通过本专利技术判别开发者可以更快的对一个错误报告进行处理,而不是每次都按部就班的重新运行审查,节省了时间并提高了错误处理效率。

本文档来自技高网...

【技术保护点】

1.一种基于深度学习的工业软件故障报告判别方法,其特征在于,包括如下步骤:

【技术特征摘要】

1.一种基于深度学习的工业软件故障报告...

【专利技术属性】
技术研发人员:李晓晨朱佑成郭世凯江贺
申请(专利权)人:大连理工大学
类型:发明
国别省市:

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

1