论文部分内容阅读
摘 要: 几年前,机器学习在司法方面的应用被提出并得到迅速发展。本文通过对判决文书的学习,将训练出的模型以文本分类的方式,用于协助办案人员进行罪名预测:1、在权威网站爬取大量判决文书,进行信息预处理后,提炼出较为精炼的文本数据和罪名标签;2、对文本进行分词、结构化处理、构成词汇表并与相应的词向量进行1对1映射;3、应用谷歌的Tensorflow搭建卷积神经网络,设置参数,训练模型并测试;4、反复调整参数后,改进优化算法,使分类效果理想。最终分类准确率在95%以上。
关键词: 卷积神经网络;文本分类;罪名预测;分词;优化算法
中图分类号: TP183 文献标识码: A DOI:10.3969/j.issn.1003-6970.2019.04.049
本文著录格式:李昊泉,史梦凡,陈舒楠,等. 卷积神经网络在案件分类上的应用[J]. 软件,2019,40(4):222225
【Abstract】: Several years ago, application of machine learning in judicial field was proposed and developed rapidly. Through judgment documents study, the article applies trained model for assisting case handlers in crime prediction with text categorization: 1. collect a large number of judgment documents on authoritative websites, after preprocessing information, extract refined text data and accusation labels; 2. carry on word segmentation and structural processing of texts to form vocabulary, map with corresponding word vectors 1 to 1; 3. construct convolution neural network with Google's Tensorflow, set parameters, train model and test; 4. after adjusting parameters repeatedly, improve and optimize algorithm to make classification effect ideal, and final classification accuracy is over 95%.
【Key words】: Convolutional neural network; Text classification; Crime prediction; Word segmentation; Optimization algorithm
0 引言
近年来,机器学习飞速发展,尤其在自然语言处理、文本分类方面,人工智能应用广泛。其中,卷积神经网络(CNN)不仅在图像领域取得了很大的成就,近年来在文本分类方向也大放异彩[1]。
当前对案件的定性普遍由人工进行,使用机器学习搭建经济类犯罪案件侦查系统后,有利于增强调查者的能力,可以有效缩短侦查程序的过程,从而提高案件处理效率。
我们计划选取近年来频发的经济类案件作为训练数据,在中国裁判文书网上爬取判决文书作为训练材料,训练完成的模型可以对输入的案件陈述进行快速分类,达到罪名预测的目的。执法机关可以在案件定性时结合相关人员的意见进行快速且准确的判断。为此,我们将设想付诸实现。
1 相关技术介绍
1.1 中文分词
中文分词在自然语言处理中的重要作用不言而喻,主要包含三个过程:文本预处理、文本特征提取、分类模型构建。判决文书具有严谨、准确等特征,因此本项目将重点放在文本预处理上。预处理过程中最重要的是分词,我们选择使用基于统计的分词方法[2-3]。该方法主要统计上下文中字符与字符相邻出现的概率,两字符相邻出现的概率越高,它们联合起来恰好组成一个词语的概率也越大。中文中组成词汇的几个字常一同出现,由此来达到分词的效果。
迄今为止,中文分词已经有许多较为成熟的工具包,如jieba、pynlpir、scseg等。本文选取的jieba工具具有多种分词模式,对案件文书分词有良好的效果[4]。
1.2 文档、词项矩阵
分词完成后需将数据结构化处理才能进行下一步分析,本项目中所采用的结构化处理方式为文档、词项矩阵法,即Document-Term Matrix。以项目中的文档为例,我们在众多案件类型中选取信用卡诈骗和合同诈骗两种类型的案件,文本一[经济,犯罪,信用卡,诈骗,调查],文本二[经济,犯罪,合同诈骗,研究],则基于这两个文本构建出的词典包含7个不同的特征词汇,{1:经济,2:犯罪,3:信用卡,4:诈骗,5:调查,6:合同诈骗。7:研究},经過转化即可显示为(1,1,1,1,1,0,0,)和(1,1,0,0,0,1,1),其中向量元素表示对应词汇出现的次数,两向量合并则获得文档-词项矩阵。本项目中我们选用的转化库为scikit-learn库。
1.3 优化算法
优化是指改变 x 以最小化或最大化某个函数 f(x)的任务。对其进行最小化时,也称为损失函数。 优化算法的作用和选择在文献中有详细介绍。它被用来更新、计算神经网络模型参数的最优值[5]。
2 模型的设计与实现
2.1 初步实现
因本项目的重点在于卷积神经网络在案件分类上的应用,我们将素材选取为经济类犯罪中的两种:信用卡诈骗和合同诈骗。这两种类型具有较为明显的语义区别,又不至于过分无关导致分类过程过于简单。两种分类文本各2000条,其中训练集1600条、测试集200条、验证集200条,正负样本各一半。分类文档本身被划分为标签(label),内容(content)兩个方面[6]。
在文本预处理函数中,我们首先用Jieba库针对文档进行了分词,并以分词结果构建词汇表。构建词汇表的过程运用了停用词处理,并去除多余的标点符号。为保证所有样本使用的词向量空间相同,我们在验证集、测试集遇到训练集中未遇到的词汇时会舍弃遇到的新词(由于训练集中未出现的新词并不会对分类结果有较大影响)。后续的词汇表使用时将词转化为id的形式,并从训练集和验证集中选取前面提到的案件类别固定分类目录并进行id转换。至此文本预处理已初步完成[7]。
接下来涉及到卷积神经网络模型的设计。需要设置的主要是卷积层、池化层和全连接层。所涉及的卷积神经网络结构大致如下:
嵌入层(Embedding)将数据降维,进行词向量转化,所输入的向量长度被限制为64。我们将结构化处理后的矩阵宽度设置为文本的特征向量个数,即人为设置为600个,多于600的舍弃,少于600的由0补齐。这一过程标志每个案件由600个特征向量构成,结构化处理完成的矩阵格式为:[案件样本数,序列长度]。
其次为卷积层(CNN),卷积层负责使用卷积核进行特征提取和特征映射。其具体含义及原理在此省略,我们将卷积核设置为128个,卷积核大小为5。
池化层(Pooling),主要目的为降低维度,缓解可能到来的过拟合问题。池化层具体操作与卷积层类似。只不过下采样的卷积核为只取对应位置的最大值(本项目中选取的Max Pooling,亦有选取平均值的平均池化)。
全连接层(Fully Connected),全连接层中的每个神经元与其前一层的所有神经元进行全连接,可以整合卷积层或者池化层中具有类别区分性的局部信息,每个神经元的激励函数采用ReLU函数。本项目设置两个全连接层,每个全连接层设置为128个神经元,学习率设置为1e-2,每批训练大小设置为64。每批次的计算都经过dropout方法处理,该方法会暂时禁用掉一部分神经元,保证每个神经元学习的特征都是单独且有用的,此方法可以提升计算速度并避免过拟合的出现,保留比例设置为0.5。随后用ReLU函数进行激活,激活后生成的预测值用soFtmax函数进行处理,生成标准值。卷积神经网络设置完成后进行模型的训练,设置训练轮次为10轮,若准确率长时间没有提升则中断训练。模型训练完成后验证集的准确率仅达到84%,远低于预期。本次训练的准确率和损失函数变化如图2所示。
可以看到,验证集的准确率徘徊在相对较低的位置,并且波动很大,损失函数最终也没有下降到理想的位置[8]。
随后使用测试集的结果显示,模型正确率在87%~90%浮动。本模型没有达到理想的训练结果。经过分析,我们决定改进以上训练中使用的梯度下降优化算法。
2.2 优化模型
针对模型初步实现中存在的问题,我们对优化器的选择进行了改进,分别使用两种自适应学习率算法:Adagrad优化器与Adam优化器对模型进行训练。使用测试集进行测试后,结果表明,使用Adagrad算法优化的模型,其测试结果的准确率有明显提升,达到0.96。进一步使用Adam算法优化后,准确率接近1.00。两种算法的准确率和损失函数变化分别如图3、图4所示。
可以看到准确率在短时间内迅速提升,之后随着轮次的增加,在0.99~1.00浮动,准确率长时间不再提升后,训练停止。模型出现了一定的过拟合,但对结果的影响无关紧要[9]。
准确率方面,我们认为由于测试样本只有200条,出现接近1.00的准确率只是偶然事件,如果增大样本个数,准确率可能会有所下降。其次,所选取的案件种类为信用卡诈骗与合同诈骗,在这两种案件文书中,“信用卡”和“合同”两个词出现的频率非常高,若针对一些难以用特征词分辨的案件类型可能会存在困难(例如受贿罪和协助受贿罪,两者核心特征词都为受贿二字)。因此,若存在提升准确率或是扩充分类种类个数的必要,预处理方面可以首先提升分词的准确性,增加停用词的数量,若设备配置允许,可以增加CNN层和pooling层的个数或是扩充卷积核的个数。使用更复杂的模型一定程度上可以获得更好的分类效果(需注意过拟合问题)[10]。
3 结语
本项目通过搭建卷积神经网络,对经济类案件文本进行分类,使用了文本处理等手段,并在测试模型的基础上改进了优化算法,使最终的分类结果较为理想。
综合多组测试结果,本文得出结论:卷积神经网络在案件分类以及罪名预测方面应用的想法可行,且具有良好的效果,达到我们的预期,在未来司法方面有广泛的应用前景。
参考文献
[1] 侯小培, 高迎. 卷积神经网络CNN算法在文本分类上的应用研究[J]. 科技与创新, 2019(04): 158-159.
[2] 李康康, 龙华. 基于词的关联特征的中文分词方法[J]. 通信技术, 2018, 51(10): 2343-2349.
[3] 费洪晓, 康松林, 朱小娟. 基于词频统计的中文分词 的研究[J]. 计算机工程与应用, 2005, 41(07): 67-68.
[4] Ian Goodfellow, Yoshua Bengio, Deep Learning, [M], Aaron Courville, Beijing: Posts & Telecom Press, 2017-190
[5] 吴旭阳. 法律与人工智能的法哲学思考——以大数据深度学习为考察重点[J]. 东方法学, 2018(03): 18-26.
[6] 邴庆禹. 计算机网络病毒防御技术方案设计[J]. 中国管理信息化, 2019, 22(06): 163-164.
[7] 凌妍艳. 论网络信息安全技术优化与防范措施[J]. 网络安全技术与应用, 2019(03): 1+3.
[8] 叶俊民, 赵丽娴, 罗达雄, 等. 基于学习者求助行为的论坛回答者推荐研究[J]. 小型微型计算机系统, 2019, 40(03): 493-498.
[9] 王子牛, 陈娅先, 高建瓴, 等. 基于神经网络的词义消歧[J]. 软件, 2019(02): 11-15.
[10] 杜冠军, 佟国香. 一种新的混合演化多目标优化算法[J]. 软件, 2019(02): 6-10.
关键词: 卷积神经网络;文本分类;罪名预测;分词;优化算法
中图分类号: TP183 文献标识码: A DOI:10.3969/j.issn.1003-6970.2019.04.049
本文著录格式:李昊泉,史梦凡,陈舒楠,等. 卷积神经网络在案件分类上的应用[J]. 软件,2019,40(4):222225
【Abstract】: Several years ago, application of machine learning in judicial field was proposed and developed rapidly. Through judgment documents study, the article applies trained model for assisting case handlers in crime prediction with text categorization: 1. collect a large number of judgment documents on authoritative websites, after preprocessing information, extract refined text data and accusation labels; 2. carry on word segmentation and structural processing of texts to form vocabulary, map with corresponding word vectors 1 to 1; 3. construct convolution neural network with Google's Tensorflow, set parameters, train model and test; 4. after adjusting parameters repeatedly, improve and optimize algorithm to make classification effect ideal, and final classification accuracy is over 95%.
【Key words】: Convolutional neural network; Text classification; Crime prediction; Word segmentation; Optimization algorithm
0 引言
近年来,机器学习飞速发展,尤其在自然语言处理、文本分类方面,人工智能应用广泛。其中,卷积神经网络(CNN)不仅在图像领域取得了很大的成就,近年来在文本分类方向也大放异彩[1]。
当前对案件的定性普遍由人工进行,使用机器学习搭建经济类犯罪案件侦查系统后,有利于增强调查者的能力,可以有效缩短侦查程序的过程,从而提高案件处理效率。
我们计划选取近年来频发的经济类案件作为训练数据,在中国裁判文书网上爬取判决文书作为训练材料,训练完成的模型可以对输入的案件陈述进行快速分类,达到罪名预测的目的。执法机关可以在案件定性时结合相关人员的意见进行快速且准确的判断。为此,我们将设想付诸实现。
1 相关技术介绍
1.1 中文分词
中文分词在自然语言处理中的重要作用不言而喻,主要包含三个过程:文本预处理、文本特征提取、分类模型构建。判决文书具有严谨、准确等特征,因此本项目将重点放在文本预处理上。预处理过程中最重要的是分词,我们选择使用基于统计的分词方法[2-3]。该方法主要统计上下文中字符与字符相邻出现的概率,两字符相邻出现的概率越高,它们联合起来恰好组成一个词语的概率也越大。中文中组成词汇的几个字常一同出现,由此来达到分词的效果。
迄今为止,中文分词已经有许多较为成熟的工具包,如jieba、pynlpir、scseg等。本文选取的jieba工具具有多种分词模式,对案件文书分词有良好的效果[4]。
1.2 文档、词项矩阵
分词完成后需将数据结构化处理才能进行下一步分析,本项目中所采用的结构化处理方式为文档、词项矩阵法,即Document-Term Matrix。以项目中的文档为例,我们在众多案件类型中选取信用卡诈骗和合同诈骗两种类型的案件,文本一[经济,犯罪,信用卡,诈骗,调查],文本二[经济,犯罪,合同诈骗,研究],则基于这两个文本构建出的词典包含7个不同的特征词汇,{1:经济,2:犯罪,3:信用卡,4:诈骗,5:调查,6:合同诈骗。7:研究},经過转化即可显示为(1,1,1,1,1,0,0,)和(1,1,0,0,0,1,1),其中向量元素表示对应词汇出现的次数,两向量合并则获得文档-词项矩阵。本项目中我们选用的转化库为scikit-learn库。
1.3 优化算法
优化是指改变 x 以最小化或最大化某个函数 f(x)的任务。对其进行最小化时,也称为损失函数。 优化算法的作用和选择在文献中有详细介绍。它被用来更新、计算神经网络模型参数的最优值[5]。
2 模型的设计与实现
2.1 初步实现
因本项目的重点在于卷积神经网络在案件分类上的应用,我们将素材选取为经济类犯罪中的两种:信用卡诈骗和合同诈骗。这两种类型具有较为明显的语义区别,又不至于过分无关导致分类过程过于简单。两种分类文本各2000条,其中训练集1600条、测试集200条、验证集200条,正负样本各一半。分类文档本身被划分为标签(label),内容(content)兩个方面[6]。
在文本预处理函数中,我们首先用Jieba库针对文档进行了分词,并以分词结果构建词汇表。构建词汇表的过程运用了停用词处理,并去除多余的标点符号。为保证所有样本使用的词向量空间相同,我们在验证集、测试集遇到训练集中未遇到的词汇时会舍弃遇到的新词(由于训练集中未出现的新词并不会对分类结果有较大影响)。后续的词汇表使用时将词转化为id的形式,并从训练集和验证集中选取前面提到的案件类别固定分类目录并进行id转换。至此文本预处理已初步完成[7]。
接下来涉及到卷积神经网络模型的设计。需要设置的主要是卷积层、池化层和全连接层。所涉及的卷积神经网络结构大致如下:
嵌入层(Embedding)将数据降维,进行词向量转化,所输入的向量长度被限制为64。我们将结构化处理后的矩阵宽度设置为文本的特征向量个数,即人为设置为600个,多于600的舍弃,少于600的由0补齐。这一过程标志每个案件由600个特征向量构成,结构化处理完成的矩阵格式为:[案件样本数,序列长度]。
其次为卷积层(CNN),卷积层负责使用卷积核进行特征提取和特征映射。其具体含义及原理在此省略,我们将卷积核设置为128个,卷积核大小为5。
池化层(Pooling),主要目的为降低维度,缓解可能到来的过拟合问题。池化层具体操作与卷积层类似。只不过下采样的卷积核为只取对应位置的最大值(本项目中选取的Max Pooling,亦有选取平均值的平均池化)。
全连接层(Fully Connected),全连接层中的每个神经元与其前一层的所有神经元进行全连接,可以整合卷积层或者池化层中具有类别区分性的局部信息,每个神经元的激励函数采用ReLU函数。本项目设置两个全连接层,每个全连接层设置为128个神经元,学习率设置为1e-2,每批训练大小设置为64。每批次的计算都经过dropout方法处理,该方法会暂时禁用掉一部分神经元,保证每个神经元学习的特征都是单独且有用的,此方法可以提升计算速度并避免过拟合的出现,保留比例设置为0.5。随后用ReLU函数进行激活,激活后生成的预测值用soFtmax函数进行处理,生成标准值。卷积神经网络设置完成后进行模型的训练,设置训练轮次为10轮,若准确率长时间没有提升则中断训练。模型训练完成后验证集的准确率仅达到84%,远低于预期。本次训练的准确率和损失函数变化如图2所示。
可以看到,验证集的准确率徘徊在相对较低的位置,并且波动很大,损失函数最终也没有下降到理想的位置[8]。
随后使用测试集的结果显示,模型正确率在87%~90%浮动。本模型没有达到理想的训练结果。经过分析,我们决定改进以上训练中使用的梯度下降优化算法。
2.2 优化模型
针对模型初步实现中存在的问题,我们对优化器的选择进行了改进,分别使用两种自适应学习率算法:Adagrad优化器与Adam优化器对模型进行训练。使用测试集进行测试后,结果表明,使用Adagrad算法优化的模型,其测试结果的准确率有明显提升,达到0.96。进一步使用Adam算法优化后,准确率接近1.00。两种算法的准确率和损失函数变化分别如图3、图4所示。
可以看到准确率在短时间内迅速提升,之后随着轮次的增加,在0.99~1.00浮动,准确率长时间不再提升后,训练停止。模型出现了一定的过拟合,但对结果的影响无关紧要[9]。
准确率方面,我们认为由于测试样本只有200条,出现接近1.00的准确率只是偶然事件,如果增大样本个数,准确率可能会有所下降。其次,所选取的案件种类为信用卡诈骗与合同诈骗,在这两种案件文书中,“信用卡”和“合同”两个词出现的频率非常高,若针对一些难以用特征词分辨的案件类型可能会存在困难(例如受贿罪和协助受贿罪,两者核心特征词都为受贿二字)。因此,若存在提升准确率或是扩充分类种类个数的必要,预处理方面可以首先提升分词的准确性,增加停用词的数量,若设备配置允许,可以增加CNN层和pooling层的个数或是扩充卷积核的个数。使用更复杂的模型一定程度上可以获得更好的分类效果(需注意过拟合问题)[10]。
3 结语
本项目通过搭建卷积神经网络,对经济类案件文本进行分类,使用了文本处理等手段,并在测试模型的基础上改进了优化算法,使最终的分类结果较为理想。
综合多组测试结果,本文得出结论:卷积神经网络在案件分类以及罪名预测方面应用的想法可行,且具有良好的效果,达到我们的预期,在未来司法方面有广泛的应用前景。
参考文献
[1] 侯小培, 高迎. 卷积神经网络CNN算法在文本分类上的应用研究[J]. 科技与创新, 2019(04): 158-159.
[2] 李康康, 龙华. 基于词的关联特征的中文分词方法[J]. 通信技术, 2018, 51(10): 2343-2349.
[3] 费洪晓, 康松林, 朱小娟. 基于词频统计的中文分词 的研究[J]. 计算机工程与应用, 2005, 41(07): 67-68.
[4] Ian Goodfellow, Yoshua Bengio, Deep Learning, [M], Aaron Courville, Beijing: Posts & Telecom Press, 2017-190
[5] 吴旭阳. 法律与人工智能的法哲学思考——以大数据深度学习为考察重点[J]. 东方法学, 2018(03): 18-26.
[6] 邴庆禹. 计算机网络病毒防御技术方案设计[J]. 中国管理信息化, 2019, 22(06): 163-164.
[7] 凌妍艳. 论网络信息安全技术优化与防范措施[J]. 网络安全技术与应用, 2019(03): 1+3.
[8] 叶俊民, 赵丽娴, 罗达雄, 等. 基于学习者求助行为的论坛回答者推荐研究[J]. 小型微型计算机系统, 2019, 40(03): 493-498.
[9] 王子牛, 陈娅先, 高建瓴, 等. 基于神经网络的词义消歧[J]. 软件, 2019(02): 11-15.
[10] 杜冠军, 佟国香. 一种新的混合演化多目标优化算法[J]. 软件, 2019(02): 6-10.