基于textcnn的公安诈骗案件警情分类*
2021-08-05沈强张涵周亮陈曦任艾
沈强 张涵 周亮 陈曦 任艾
上海市公安局科技处 上海 200042
引言
在警情领域,近年来数字化水平逐渐提升,很多城市将案件信息录入数据库中统一管理。然而如果各条案情的数据杂乱无章地存放,是没有意义的,因此在归档的过程中,用户需要将各条案件分门别类进行存储。同时,在数字化水平提高后,也产生了更多的需求,例如,对作案手法相同的案件进行分析,寻找其共同点,从而对预防案件发生和案件发生后的破案起到一定指导作用。因此,对于各个案件进行分类存储十分重要。若由用户人工对案件进行分类归档,是一项浩大的工程。为了节约人力成本,需要一个能将案件自动分类归档的工具。
文本分类任务是自然语言处理领域的研究热点之一。顾名思义,文本分类任务指的是对于文本集,按照规定的分类体系和分类准则,进行自动归类的过程。将文本分类任务应用于警情领域,对案件信息进行自动分类,可以有效减轻用户在将案件归档时的工作量,节约人力成本。
1 相关工作
随着自然语言处理领域的研究的不断突破,文本分类的技术也逐渐成熟,在文本分类方面的准确率也逐渐提高。传统机器学习算法中,常被用于进行文本分类的算法有:K近邻算法(K-Nearest Neighbor, KNN)、朴素贝叶斯算法和支持向量机(Support vector machine, SVM)等。可以从优化特征选择和结合关联规则优化算法模型两个角度,对KNN算法进行改进,提高文本分类的准确率[1]。也可以基于朴素贝叶斯算法和集成模型的思想,将高斯朴素贝叶斯、多项式朴素贝叶斯和伯努利朴素贝叶斯集成为深层朴素贝叶斯模型[2]。也有研究者通过引入萤火虫算法来优化支持向量机参数的选取方式,提高分类速度和分类准确率[3]。传统机器学习算法有着计算量小、可适配小训练集、可解释性强等特点,而其缺点则是在数据规模大的情况下,传统机器学习算法的效果会与深度学习算法有一定差距。
在2006年,Hinton等提出逐层训练的思想[4],深度学习开始成为研究热点。在此之前,1988年,研究者提出了一种卷积、池化结合的神经网络结构[5],是卷积神经网络(Convolutional Neural Networks, CNN)的雏形,但是在当时难以实现。2012年,Alexnet在计算机视觉领域取得了准确率的大幅突破[6],卷积神经网络逐渐成为计算机视觉领域的主流算法。与此同时,科学家也开始探索CNN在自然语言处理领域的应用。结合word2vec方法[7],可以将CNN用于文本分类,也就是textcnn方法[8]。
2 模型介绍
2.1 词嵌入层
在自然语言处理领域的算法研究中,首先要考虑的是语料数据在计算机中的表示。语料数据的表示形式和特征提取的方式会对于整体模型的效果有巨大影响。
在使用机器学习算法进行分本分类任务时,通常使用离散表示的方法进行特征提取的工作。最常用的方法有词袋模型和词频-逆文本频率指数(term frequency-inverse document frequency, TF-IDF)方法。词袋模型是统计语料库中所有出现的词语,并且去除停用词后,构成一个词袋,并对每一个文本,统计词袋中每一个词语出现的次数,从而将文本向量化。每一个文本转化的向量,其长度等于词袋中词语的总数,向量的每一个元素值为对应的词语在这个文本中出现的次数。TF-IDF方法是对词袋模型的改进方法,使用TF-IDF方法转化得到的向量,其长度也等于词袋中词语的总数,向量中每一个元素的值等于对应的词语的词频(TF)与逆文本频率指数(IDF)的乘积。
词袋模型和TF-IDF方法都是针对整个文本进行特征提取的方法,这两种方法都会忽略次序信息。而在深度学习兴起后,研究者们开始探究将每个词语向量化的方法。One-hot encoder方法是将词语向量化的方法之一。这种方法是将所有的词语都转化为只有一个位置为1,其他位置全部为0的向量。假设某种语言一共有N个词语(已去停用词),那么将这N个词语按照某种顺序排列,则第i个词语转化的向量为第i个元素为1,其他元素为0的向量。事实上,这也是一种基于词袋模型的文本特征提取方法。按照这种方法确实可以将每个词语进行向量表示,但是也有三个明显缺点,其一是向量的长度等于词语的总数,则每一个向量的长度都很大,这无论是在存储还是在计算方面,都会造成很大负担;其二是每一个向量只有一个元素非零,将所有词语的向量组合成的矩阵很稀疏;其三是在这种向量表示方法下,每个词语都相互独立(在向量空间中,这个特点体现为各个向量相互正交),但在实际的文本中,词语和词语之间是相互联系的,如近义词、反义词等。在实际工程中,会取使用率最高的一部分词语,而使用率较低的词语统一为一个向量,以降低向量的维度,规避第一个缺点。
针对One-hot encoder方法的缺点,研究者提出了word2vec的方法。该方法是一种通过无监督学习的方式,训练词与向量之间对应的矩阵。该方法可以采用CBOW(Continuous Bag-of-Word)与Skip-Gram两种方法来训练词向量矩阵[7]。在后续研究中,GloVe被提出以训练词向量[9]。
本文采用了两种方法进行词嵌入的工作。第一种是采用随机生成词向量的方式,将每个词语对应为一个词向量。首先统计所有文本中出现的词语,取出现次数最高的前10万个词,并对它们各自随机生成一个词向量,转化后词向量的长度为300。剩余出现次数较低的词语,统一转化为同一个向量。第二种是采用使用预训练词向量的方式。本文略过词向量的训练过程,使用文献[10]训练的词向量,进行词嵌入的工作。
2.2 textcnn
词语向量化的提出使卷积神经网络在文本领域的应用成为可能。Textcnn是将卷积神经网络用在自然语言处理领域的算法。
假设需要对以下文本进行分类:“我爱北京天安门。”假定为二分类。使用textcnn方法,步骤如下:
首先,对文本分词,分词结果为:“我/爱/北京/天安门/。”。分词后通过词嵌入将文本转化为矩阵。假设词向量的长度为6,则这段文本转化为形状为(5,6)的矩阵。
取形状为(3,6), (4,6), (5,6)的卷积核各2个,分别对矩阵卷积,得到形状为(3,1), (2,1), (1,1)的矩阵各2个。
对得到的每个矩阵做最大池化,得到6个形状为(1,1)的矩阵。将6个矩阵拼接成为一个形状为(6,1)的向量。
对得到的向量做全连接,并使用softmax函数激活,得到形状为(2,1)的向量,从而得出分类结果。
Textcnn基本流程图如图1所示。
图1 textcnn基本流程
以上是对textcnn基本流程的介绍,在本文实际进行实验的过程中,词向量的长度、文本的词语数量等都与上述例子不同,在处理过程中,卷积核的形状也要随之变化。除此以外,在实际实验过程中,为了取得更好的训练效果,每一种形状的卷积核的数量也要增加。
2.3 数据与模型参数
本文进行实验的数据为诈骗案件警情数据。样本总量为数十万,分类的类别数为23。
对数据进行观察后发现,警情数据中有一些类别的样本量较小,有样本不均衡的现象。训练集样本不均衡的现象会影响到最终模型的准确率。为了减轻样本不均衡对模型最终效果的影响,本文对样本量较小的类别进行了数据增强处理。文献[11]提出了Easy Data Augmentation (EDA)的文本数据增强的方法。该文献中采取了四种方法进行对英文文本数据增强,分别为同义替换(synonym replacement, SR)、随机插入词语(random insertion, RI)、随机交换词语位置(random swap, RS)、随机删除词语(random deletion, RD)。本文参考该文献,选择同义替换的方式,对样本量小于100的类别进行数据增强。进行数据增强后,样本总量增加了约1%。
2.4 模型结构
对警情分类的具体步骤如下:
对每一个警情文本分词。本文调用jieba分词工具完成分词步骤。
划分训练集、验证集与测试集。本文选取通过随机打乱警情顺序,划分训练集、验证集、测试集、数据量分别占样本总量的80%、10%、10%。
词嵌入。如前文所述,在词嵌入层,本文采取了两种词嵌入的方式:随机生成词向量和使用文献[10]预训练词向量,两种方式词向量的长度都为300。将文本转化为词向量矩阵的过程中,本文没有进行补齐的步骤,因此每一个文本转化后的矩阵宽度为300,高度与文本分词后词语的数量相同。
卷积层。卷积核形状为(3,300), (4,300), (5,300),神经元数量为256,即每一种形状的卷积核数量为256。
最大池化层。得到768个形状为(1,1)的矩阵。将得到的矩阵拼接,得到形状为(768,1)的向量。
Softmax层。用形状为(23, 768)的矩阵对上述向量做全连接,并使用softmax函数激活。
取batch-size为32、学习率为0.001、迭代次数为100、损失函数为sparse categorical entropy、模型优化方法为Adam进行训练。保存训练得到的模型,并使用测试集测试模型的准确性。
3 实验结果
本文进行了三种方法实验。第一种方法是采用TF-IDF方法进行特征提取,再使用支持向量机进行分类的传统机器学习文本分类的方法;第二种是采用随机生成词向量的方式进行词嵌入后,使用textcnn进行文本分类的方法;第三种是使用预训练词向量进行词嵌入后,使用textcnn进行文本分类的方法。三种方法在测试集上的召回率(recall)、精确率(precision)以及F1值如表1所示。
表1 不同方法在测试集上的召回率、精确率、F1值
从表中可以看出,采用textcnn方法,无论使用随机生成的词向量进行词嵌入,还是使用预训练词向量进行词嵌入,效果都较TF-IDF+SVM方法有明显提升。而采用预训练词向量进行词嵌入后,比起随机生成词向量,分类效果有进一步提升。
4 结束语
本文采用textcnn进行诈骗案件警情分类。经过实验后发现,采用textcnn模型后的分类效果比采用传统机器学习方法的SVM好,而使用预训练词向量进行词嵌入后,分类效果有进一步提升。
由于诈骗案件警情数据的特殊性,样本集中在某几个类别中,而有一些类别中样本量很少。本文采用同义替换的方式对样本量较少的类别进行了数据增强,以缓解样本不均衡对于模型分类效果的影响。但是样本不均衡对于模型的影响没有完全消除,在实验过程中,仍发现模型在训练样本较少的类别上的召回率、精确率比训练样本较多的类别低。后续实验会针对样本不均衡的问题进行进一步研究,以期模型可以达到更好的分类效果。