基于CNN-SVM的护理不良事件文本分类研究*

2020-03-04 08:15葛晓伟李凯霞
计算机工程与科学 2020年1期
关键词:字符结构化卷积

葛晓伟,李凯霞,程 铭

(郑州大学第一附属医院,河南 郑州 450052)

1 引言

随着信息化技术的快速发展,医院信息化系统的不断更新,当前护理数据呈现爆炸性增长,医院护理不良事件记录,数据类型复杂、结构化数据以及文本等非结构化数据大量并存,如何利用大数据技术整合护理不良事件数据并进行处理,获得全面、高效、精确的分析或预测结果,成为现在护理不良事件研究迫切的需求[1 - 3]。

近些年来,医疗及护理安全越来越受到广泛关注,不良事件发生率高、影响大、后果严重,不仅可能导致患者伤残或死亡,也可能影响医务及护理人员人身安全,延长患者住院时间,增加医疗成本及社会经济负担[4]。在临床工作中,护理人员与患者接触机会多、时间长,且护理工作繁重、繁琐,容易出现差错[5]。目前护理不良事件发生数量已接近全部医疗不良事件的一半[6,7],因此,注重护理安全的管理和预防,控制护理不良事件发生至关重要。

当前大部分医院已经引入护理不良事件上报系统,能够实现护理不良事件的上报、审核与简单统计功能,然而在上报阶段,护理不良事件上报的内容未形成规范,不能统一化和制度化。各家医疗机构的上报标准不统一,导致上报的内容多以叙述和描述事件发生的流程等非结构化文本信息为主,缺乏合理明确的分类特征,出现人工分析难度大、人为因素多等问题[8,9]。另外,护理不良事件侧重于找出并分析问题,护理人员因多种因素,可能存在漏报、瞒报、人为降低不良事件级别等问题。

针对如何智能化地对护理不良事件中的非结构化文本进行有效分析,降低人为因素影响的问题,Cao等人[10]基于系统开发的生命周期,开发并实施了医院护理不良事件上报系统,但系统中的护理不良事件分析主要针对结构化数据;Clark[11]利用贝叶斯算法分析非临床不良事件观察与临床试验中对大量批准药物的相同事件的观察之间的关联性。Tomita等人[12]利用Text Mining Studio工具对护理服务中电子健康档案等相关医疗文本数据进行不良事件分析;Roy等人[13]提出了一种机器学习模型,来改进目前用于评估和预测多种慢性病相关的不良事件风险的技术。Dev等人[14]通过将传统的机器学习与深度学习方法进行对比,来对药物警戒中不良事件进行自动分类;宋杰等人[15]通过验证自然语言处理对于分析护理不良事件非结构化文本的可行性,证实自然语言处理技术可以对护理不良事件非结构化文本进行有效识别;Kim[16]通过设计TEXTCNN模型,将CNN(Convolutional Neural Network)用在文本分类上,简单高效;Yin等人[17]经过对比实验发现CNN在文本分类上与RNN(Recurrent Neural Network)相比,训练时间比较短,文本分类效果良好。

根据上述研究,目前基于护理不良事件的研究仍然在于实现结构化数据的统计分析,而非结构化文本信息描述了不良事件发生的起因、经过与结果,信息非常重要,对于护理不良事件中非结构化文本信息的研究目前还比较少[18]。为充分利用护理不良事件中非结构化文本中的有效信息,避免对特征的依赖,提高不良事件级别预测的准确性,考虑利用深度学习的方法来处理自然语言任务。因此,本文提出一种基于字符级的CNN-SVM中文文本分类模型,该模型不需要使用预先训练好的词向量和语法结构等信息,并在解决非线性问题时能够避免维度灾难的问题,且容易实现对多种语言的快速分类,有更好的分类效果。

2 基于CNN-SVM的中文文本分类

首先,通过训练集构建字符级文本词汇表,并对分类的类别以及文本数据进行向量化,利用卷积神经网络CNN[19]提取文本的抽象特征,然后通过1对1(One-against-One)的支持向量机SVM(Support Vector Machine)[20]多分类器对提取的文本特征进行分类。

2.1 构建文本词汇表

由于中文文本复杂度较高,采用传统的向量空间模型表示文本信息时会出现特征向量维度过高和数据稀疏的问题,因此造成计算复杂度的增加,从而导致计算时长急剧上升;同时,传统文本向量化方法忽略了词在文本中的位置信息和相关语义信息,从而导致分类精度下降。因此,本文采用文本字符来构造词汇表。

若设置词汇表W的大小为n,按照训练集(Train Set)文本中各中文字符出现的次数排序,选择出现较多的前n-1个中文字符构造词汇表W,并设置1个特殊值来表示不在词汇表W出现的字符。

W={c1:0,c2:1,…,cn:n}

(1)

词汇表中的字符用ci(i=0,1,2,…,1 999)表示,其中,0为特殊数值,表示不在该词汇表中的字符,然后根据字符在词汇表W中的位置信息来表示该字符。

2.2 文本向量化

(1)分类类别向量化。

假设F表示分类目录,选择k个类别来进行分类,则k个类别文本的标签和对应的序号用字典形式表示如下。

F={K1:0,K2:1,…,Kk:k-1}

(2)

(2)文本数据向量化。

根据词汇表W中生成的中文字符在文本中出现的频次、位置等信息对文本数据集中的文本数据进行向量化。

将每条数据的序列长度统一设置为j,即每个词袋中词的最大个数为j,分类的类别个数为k,训练集、校验集、测试集大小分别为m1,m2,m3,则向量化后的数据格式如表1所示。

Table 1 Text data vectorization表1 文本数据向量化

2.3 CNN-SVM模型的构建

基于CNN-SVM的中文护理不良事件文本分类模型主要由2部分组成:基于字符级CNN的特征提取和利用SVM进行文本分类。通过利用字符级CNN对中文护理不良事件文本数据向量化后的内容提取深层次特征,并用提取的特征来表示一段中文护理不良事件文本信息,最后通过SVM分类器对文本进行分类,如图1所示。

Figure 1 CNN-SVM model图1 CNN-SVM模型

(1)卷积层。

中文护理不良事件文本处理使用一维卷积,矩阵的每1行代表1个分词,截断分词没有数学意义,故卷积filter的长度恒等于n,一维卷积需要多个宽度的滤波器(filter)来获得不同的感受。

文本数据向量化之后的矩阵S作为输入,卷积层有不同种类的filter(F),在卷积时,取与filter宽度相同的句子片段作为输入,则一个句子的第i个特征向量计算公式为:

ci=(S*F)i=∑ki(S[i-m+1:i,:]⊗F)ki

(3)

其中,k表示卷积层数,⊗表示卷积运算符,S[i-m+1:i,:]是宽度为m的矩阵块,每个句子的输入矩阵S与卷积核运算之后输出特征向量ci,为形成更为丰富的特征,每一个filter都有p个卷积核。

(2)池化层。

通过卷积获得文本特征后,为简化网络的计算复杂度,采用Max-Pooling,选取卷积结果计算后的最强特征,池化可自适应输入宽度,从而将不同长度的输入转换为统一长度的输出。最大池化结果cpool为:

cpool=max{ci,i=1,2,…,n-h+1}

(4)

其中,ci=1,2,…,n-h+1为卷积计算后的结果。n为一个由词组成的句子的长度,h表示窗口大小。

(3)全连接层。

经过池化后的数据按深度方向拼接成1个向量后提供给全连接层,经softmax比较预测的标签值和真实值来调整参数,当在训练集上表现稳定时,将池化层得到的高维特征表示提取出来。

如采用CNN-softmax的方式,即可将池化层的输出与softmax全连接,计算句子的标签:

(5)

其中,W为权值矩阵,B为偏移矩阵。wk和bk是第k层的权重向量和偏移向量。

(4)SVM多分类器。

本文基于CNN-SVM的中文护理不良事件分类模型,采用SVM中1对1的方式把任意的2类构造为1个分类器,因此k个类别需要(k-1)*k/2个分类器,通常这种分类方法比1对多的方式所用时间更少,效果更好。

将池化层得到的测试集的高维特征表示提取出来后,放到SVM多分类器中,训练SVM模型直到准确率最高,使用训练时的参数,将测试集数据送到模型中进行分类。

3 实验与结果分析

3.1 实验数据及度量标准

护理不良事件非结构化文本数据来源于国内某大型三甲医院护理不良事件上报登记系统,该系统上线于2014年。

取系统中2014到2018年共5年的数据11 751条,设置数据整理小组(由2名主管护师、3名护师、若干名护士组成)对数据进行整理,设置数据整理规则,去掉部分不完整数据(缺乏护理不良事件级别或事件经过的数据),并对数据中已登记的事件级别进行审查,按照经验商定后进行修正,最终形成11 237条正确无误数据进行实验。

数据分布使用了其中4个候选分类类别,数据集分布如表2所示。

Table 2 Dataset level classification表2 数据集级别分类

为验证本文提出的分类模型性能,分别将不同的算法在相同的数据集上进行测试,将原始数据进行预处理后,随机分为3个数据集,其中,训练集hl_train含有9 737条数据,测试集hl_test含有1 000条数据,验证集hl_val含有500条数据。

本文选择召回率R(Recall)、F-值和准确率A(Accuracy)来评价护理不良事件中文本分类效果。召回率R计算公式如式(6)所示:

(6)

其中,TP是将2段相似的护理不良事件文本归为1类,FP是将2段不相似的护理不良事件文本归为1类。同理,根据不相似的护理不良事件文本归为不同类及相似的归为不同类来计算精确率P(Precision)。

F-值是精确率P和召回率R的调和平均值,计算公式如下所示:

(7)

本文取β=1,使得F-值中的精确率和召回率权重相同,则根据相似不良事件的归类与总的文本数量计算准确率A。

3.2 结果分析

基于字符级CNN-SVM分类模型通过设置不同的参数对数据集进行多次训练与测试,得到字符级CNN特征提取最优参数配置如表3所示,根据得出的参数配置可知,基于字符级CNN特征提取的方式,能够有效解决传统基于TF-IDF(Term Frequency-Inverse Document Frequency)提取特征时出现的特征向量维度过高和数据稀疏的问题。

Table 3 Character level CNN feature extraction parameter configuration list表3 字符级CNN特征提取参数配置列表

为防止网络学习过程中出现过拟合现象,利用交叉验证(Cross-validation)[21]的方法,对训练集每执行1次训练过程,在验证集上评估1次模型的性能;根据网络模型在验证集上性能的状态来判断,该方法简单有效,并且训练时间短,在实验中经常会产生很好的效果。

学习率的正确选择有利于网络模型快速收敛到最优权重,本文采用内存需求小、适应于大数据集和高维空间的AdaMax自适应学习率算法[22]来选择合适的学习率,在构建的网络模型上对不同的学习率进行实验,最终选出合适的学习率。

为验证基于字符级CNN-SVM的中文护理不良事件文本分类模型的准确性,本文设计多组实验进行对比:

实验1传统基于TF-IDF的中文分类。

针对传统的基于TF-IDF特征提取,并进行中文分类的方法,实验基于jieba中文分词模块对文本进行分词、删去停用词之后,利用TF-IDF实现文本向量化等预处理操作,然后用逻辑回归、随机森林、SVM等分类器进行分类,结果如表4所示。

Table 4 Comparison of traditional Chinese classification models based on TF-IDF表4 传统基于TF-IDF的中文分类模型对比 %

不良事件数据上的实验结果表明,SVM进行分类的效果更好,但这3种方法准确率与F-值均在70%以下,效果普遍不理想,可能跟TF-IDF提取文本特征层次以及护理不良事件非结构化文本的特性有关。

实验2基于字符级CNN的中文分类。

实验基于Tensorflow框架,利用字符级CNN实现中文护理不良事件文本特征提取,并根据CNN自身的softmax分类器或者1对1的SVM分类器实现中文护理不良事件文本的级别分类,实验结果如表5所示。

Table 5 Comparison of Chinese classification using CNN models 表5 利用CNN的中文分类模型对比 %

利用相同的数据集对比实验1与实验2的结果,算法的平均召回率、平均F-值和平均准确率的对比折线图如图2所示。

Figure 2 Comparison of various classification models图2 各分类模型比较

本文构建的基于字符级CNN-SVM的中文护理不良事件分类模型和文献[15]提出的利用字符级CNN-softmax实现文本分类的模型,在测试集上的F-值和准确率均好于传统基于TF-IDF特征提取方式的分类模型,原因在于CNN卷积神经网络能够提取出中文护理不良事件文本中更深层次的特征。基于字符级CNN-SVM分类模型的准确率最高,平均准确率达到78%。显然本文构建的基于字符级CNN-SVM的分类模型在中文护理不良事件文本分类中的性能优于传统的基于TF-IDF的分类模型及基于字符级CNN-softmax的分类模型。

4 结束语

通过自然语言处理技术对非结构化信息进行自动分析,是医院护理不良事件大数据分析的基础,由于医院护理不良事件发生时,需要记录事件发生的全部细节,非结构化文本信息在阐述医院护理不良事件上,有着结构化数据不可替代的重要作用。因此,自然语言处理技术能够成为医院护理不良事件非结构化文本数据因素识别的辅助工具。本文提出的基于字符级CNN-SVM医院中文护理不良事件文本分类模型与传统的基于TF-IDF的分类模型及基于字符级CNN-softmax的分类模型相比,准确性有较大提高,能够实现对护理不良事件中非结构化信息的有效分类。

另外,进一步形成护理不良事件智能分析预警系统,辅助临床护士进行决策是下一步研究内容。

猜你喜欢
字符结构化卷积
基于3D-Winograd的快速卷积算法设计及FPGA实现
促进知识结构化的主题式复习初探
改进的非结构化对等网络动态搜索算法
结构化面试方法在研究生复试中的应用
左顾右盼 瞻前顾后 融会贯通——基于数学结构化的深度学习
卷积神经网络的分析与设计
字符代表几
一种USB接口字符液晶控制器设计
图片轻松变身ASCⅡ艺术画
从滤波器理解卷积