CN110188781A - 一种基于深度学习的古诗文自动识别方法 - Google Patents
一种基于深度学习的古诗文自动识别方法 Download PDFInfo
- Publication number
- CN110188781A CN110188781A CN201910492084.8A CN201910492084A CN110188781A CN 110188781 A CN110188781 A CN 110188781A CN 201910492084 A CN201910492084 A CN 201910492084A CN 110188781 A CN110188781 A CN 110188781A
- Authority
- CN
- China
- Prior art keywords
- sentence
- size
- sample
- ancient poetry
- text
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/951—Indexing; Web crawling techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/214—Generating training patterns; Bootstrap methods, e.g. bagging or boosting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/30—Semantic analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/40—Extraction of image or video features
- G06V10/44—Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components
- G06V10/443—Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components by matching or filtering
- G06V10/449—Biologically inspired filters, e.g. difference of Gaussians [DoG] or Gabor filters
- G06V10/451—Biologically inspired filters, e.g. difference of Gaussians [DoG] or Gabor filters with interaction between the filter responses, e.g. cortical complex cells
- G06V10/454—Integrating the filters into a hierarchical structure, e.g. convolutional neural networks [CNN]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Computation (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Databases & Information Systems (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- Biodiversity & Conservation Biology (AREA)
- Biomedical Technology (AREA)
- Molecular Biology (AREA)
- Multimedia (AREA)
- Machine Translation (AREA)
Abstract
本发明公开了一种基于深度学习的古诗文自动识别方法,其特征在于,包括收集训练语料、数据预处理、特征向量嵌入、神经网络训练和古诗文自动识别的步骤。本发明构建文本分类形式的深度神经网络模型,自动识别文本句子是否为古诗文类型,同时能有效避免错别字降低识别准确率。能满足作诗质量检测、文学作品分类管理、自动采集古诗文等应用场景对古诗文自动识别技术的需求。
Description
技术领域
本发明涉及自然语言处理领域,特别是涉及一种基于深度学习的古诗文自动识别方法。
背景技术
近年来自然语言处理技术与语言学、文学的结合日趋紧密,文本分类已有效应用于人类语言的情感、意图的自动识别,但鲜有应用于古诗文自动识别上。诸多应用场景都有着对古诗文自动识别技术的需求,如作诗质量检测:对人工作诗、程序作诗的古诗文作品质量进行检测;文学作品分类管理:对古诗文作品和现代文学作品进行自动分类;程序自动采集海量网络古诗文作品等。由于传统文本分类方法极大依赖于人工进行特征工程,而深度学习自动获取特征表达的能力既避免了繁杂的人工特征工程,也能有效解决大规模文本分类问题。
基于深度学习的文本分类任务通常按照下列步骤实施:(1)收集语料,构建语料库(2)标注语料类别,构建训练集、验证集和测试集(3)构建神经网络模型,用数据集训练模型(4)用训练好的模型预测未知文本的类别。然而应用于中文文本分类的深度学习模型存在以下缺陷:(1)文本中错别字会降低分类准确率。在古诗文自动识别这一任务上尤为明显,古诗文用词出现错别字容易被误识别为现代汉语;(2)文本长度特征容易误导文本分类器给出错误结果,如古诗文识别任务中古诗文长度通常在五至十字左右,文本分类器容易误将该长度的语句通通判别为古诗文类型;(3)通常文本分类模型需要学习词向量的特征分布,而分词器准确度、分词粒度限制了文本分类模型的表现,况且古诗文不适合分词;(4)在小数据集上非常容易过拟合导致准确率的降低;(5)难以训练一个有效的深度神经网络模型,训练过程中容易出现梯度爆炸、梯度消失问题,导致模型无法收敛。因此如何发挥深度学习的优势,实现对古诗文的自动识别是当前兹待解决的技术问题。
发明内容
本发明所要解决的技术问题是克服现有技术的不足,提供一种基于深度学习的古诗文自动识别方法。
为解决上述技术问题,本发明提供一种基于深度学习的古诗文自动识别方法,其特征在于,包括收集训练语料、数据预处理、特征向量嵌入、神经网络训练、古诗文自动识别的步骤,具体为:
步骤1,收集训练语料:利用爬虫程序爬取互联网网站提供的古诗文作为正样本集;收集现代汉语句子语料作为负样本集;统计正样本集中古诗文句子长度,根据正样本集中句子长度的集中分布范围,选择95%以上句子的句长分布值,以此数值修改负样本集中的句子长度的分布;
统计正样本集与负样本集中句子数量,如数量不等,则以数量较少的一方样本数量为准,保持正负样本数量比例为1:1;
步骤2,数据预处理:使用拼音生成工具标注正、负样本集中每个句子的拼音,以标签“0”和“1”标注句子类别,其中标签“0”代表现代汉语,标签“1”代表古诗文;将句子与相应的拼音、类别标签合并为训练样本,即Samplei(S,P,T)由句子(S)、拼音(P)、类别标签(T)组成,随机打散样本集合中的样本顺序,并按8:1:1的比例划分成训练集、验证集、测试集;
步骤3,特征向量嵌入:统计样本集中古诗文短句的字数,选择最长句包含的字数作为样本集中句子和拼音长度值,记为L,将数据集中每个样本的句子与拼音分别固定为该长度L,然后将二者拼接,转化成固定长度为2L的特征向量,向量中每一维度代表单个汉字或单个拼音;
步骤4,神经网络训练:构建神经网络结构,网络结构依次包含Embedding层、CNN卷积层、Bactch Normalization层、激活层、CNN最大池化层和全连接层;
所述embedding层用于将古诗文的文本编码成数值向量;
所述CNN卷积层用于提取古诗文诗句的文本特征;
所述Batch Normalization层用于提升模型训练效率,加速模型拟合;
所述激活层用于加入非线性因素提高模型表达能力;所述CNN最大池化层用于提取古诗文诗句文本中最重要的特征;
所述全连接层用于将文本特征转换成类别预测的概率;
初始化神经网络中的权重和超参数,输入训练数据集,迭代训练神经网络至损失函数收敛;
步骤5,古诗文自动识别:加载步骤4中训练得到的用于古诗文识别的深度学习模型,输入待识别语句,运行模型预测语句是否为古诗文类型。
所述步骤1中,负样本集中包含数量在50%以上的长度小于10字的句子。
所述步骤1中,统计负样本集中每个句子句长,增加负样本的方法包括:(1)对于负样本集中的句子,判断句子成分中是否存在动词名词短语或者名词动词短语,若存在,则将句中的动词名词组合提取成单独的短句子并加入负样本集中;(2)针对负样本集中每一个句子长度大于10的句子,随机从[5,10]的区间内取一个整数值,从原始句子截取该数值长度的子句并加入负样本集中。
所述步骤2中,检测句子中的多音字,如果有,则保留多音字的每种读音。
所述步骤3中,特征向量嵌入过程具体包括:
步骤301:判断S和P的长度是否大于L,“是”则分别将S和P中超出L的后续部分截断,“否”则用‘<PAD>’字符分别填充S和P直至长度等于L;
步骤302:拼接S和P,每个样本变为Samplei(S+P,T),其中S+P是长度固定为2L的输入;
步骤303:统计Sample集合中所有汉字与拼音的类型数量为dict_size,为每个汉字与拼音赋予[0,dict_size-1]整数空间内的唯一整数值作为其位置;构造字典Dict,将所有汉字和拼音映射至字典空间Dict,该字典空间Dict的键值对分别为{keyi:Positioni},其中,keyi是一个汉字或拼音,Positioni是keyi在字典空间中的位置序号,根据字典空间中的键值对映射关系,将Samplei中的“S+P”映射成一个由Positioni组成的特征向量,维度为(1,2L)。
所述步骤4神经网络训练过程具体包括:
步骤401:Embedding层随机初始化一个以dict_size×embed_size为维度且满足均匀分布的随机权重向量W,其中dict_size是字典空间中的汉字和拼音的总数;embed_size为128;该权重向量W的作用是将字典空间Dict中的每个汉字或拼音随机初始化成一个长度为embed_size的一维均匀分布向量,根据特征向量各维度代表单个汉字或拼音的位置Positioni,匹配W中对应位置的以embed_size为长度的向量;最终,以batch_size×2L为维度的原始输入,经过Embedding层后被转换为成三维向量输出,维度为:batch_size×2L×embed_size;其中batch_size为每次数据的样本数;
步骤402:将Embedding层的输出向量送入一维卷积层,设置卷积层超参数,包括卷积核个数H、卷积核尺寸及种类数M、卷积步长;其中,卷积核个数H为256;卷积核尺寸根据词语通常包含的字数及经统计的诗句中的字数集中分布值进行确定,以捕捉一句话中连续N个字的N元语法特征和语序特征;卷积步长设为1,卷积层最终输出M个特征图,其中M是设置的卷积核尺寸的种类数,每个特征图的维度为(batch_size,2L-M+1,1,H);
对卷积后的输出进行dropout优化,让输出神经元在达到指定概率值时停止工作,所述指定概率值(dropout_prob)为0.5,即随机选择一半神经元不进行学习,剩余神经元在被激活之前,经过Batch Normalization,将值被规范成满足均值为0方差为1的标准正态分布;Batch Normalization的具体操作流程如403;
步骤403:经dropout优化后的输出定义为神经元集合B={x1…batch_size},通过BatchNormalization处理,将输入的神经元集合B转换为预期输出Y{yi=BNγ,β(xi)},其中γ,β是待学习的参数,BNγ,β(xi)是一种对神经元xi进行规范化的操作:先将初始神经元分布转换为满足均值μB和方差的正态分布,再以γ,β为权重和偏置对神经元进行线性变换得到yi,即
根据模型收敛速度,选择收敛最快的ReLU激活函数对经Batch Normalization后的神经元进行激活;激活后的神经元进入最大池化层,取池化区域内神经元最大值后,输出每个特征图的维度仍为(batch_size,2L-M+1,1,H),将M个尺寸的特征图拼接为一个向量,维度变为(M,batch_size,2L-M+1,1,H),然后将其调整成二维向量(batch_size,H*4)做droupout优化,得到输出值pooled_output,维度仍为二维向量(batch_size,H*4);
步骤404:在全连接层中,pooled_output经线性变换转化为2维向量output,维度为(64,2),即表示为反应在2个类别(即古诗文语句和现代汉语语句)上的得分;利用Softmax公式将output转换成第0类和第1类的预测概率,利用交叉熵损失函数作为衡量预测概率y和真实概率yt差异的Loss函数;
步骤405:训练模型:对Loss函数求梯度按照梯度下降的原则反向传播梯度,以α为学习率调整神经网络中所有可训练参数θ,迭代训练模型直至Loss函数收敛;
步骤406:模型验证评估:在训练模型的同时,输入验证集对模型效果进行实时评估,多次调整模型所需超参数的值训练不同模型,对比不同超参数设定下模型的验证集准确率,根据准确率最高的原则确定最优模型,最后输入测试集将测试集准确率,得到对模型真实效果的评估,即
所述步骤402中,所述一维卷积层的卷积核滤波器filter有四种尺寸,分别为2,3,4,5,即用于捕捉一个句子中的连续N(N=2,3,4,5)个字的N元语法特征和词序特征。
所述步骤5中,经训练完成的深度学习模型根据保存成ckpt和pb两种格式。
本发明所达到的有益效果:
(1)本发明通过在原有的文字特征基础上,增加拼音特征作为深度学习模型训练的输入特征,防止因打错字降低模型识别准确率;并有针对性地根据古诗文句长构建与古诗文长度相近的现代汉语语句加入训练数据集,减少语句长度特征对模型的干扰;
(2)本发明考虑到古诗文句并不适合分词,通过搭建一维CNN模型,利用深度卷积网络自动学习古诗文语句的语意表征及字向量特征分布,减少以往文本分类中的分词操作,能满足诗句质量检测、文学作品分类管理、自动采集古诗文等应用场景对古诗文自动识别技术的需求;
(3)本发明通过对卷积层和池化层输出出进行多次dropout优化,对激活函数输入执行batch normalization转换为满足标准正态分布的规范形式,以防止止梯度消失、梯度爆炸的发生,加快模型收敛过程,提高训练效果。
附图说明
图1为本发明的示例性实施例中一种基于深度学习的古诗文自动识别方法流程图;
图2为本发明的示例性实施例中的特征向量嵌入流程示意图;
图3为本发明的示例性实施例中的神经网络模型结构示意图;
图4为本发明的示例性实施例中的神经网络的训练流程示意图。
具体实施方式
一种基于深度学习的古诗文自动识别方法,其特征在于,包括收集训练语料、数据预处理、特征向量嵌入、神经网络训练、古诗文自动识别的步骤,具体为:
步骤1,收集训练语料:利用爬虫程序爬取互联网网站提供的古诗文作为正样本集;收集现代汉语句子语料作为负样本集;统计正样本集中古诗文句子长度,根据正样本集中句子长度的集中分布范围,选择95%以上句子的句长分布值,以此数值修改负样本集中的句子长度的分布;
统计正样本集与负样本集中句子数量,如数量不等,则以数量较少的一方样本数量为准,保持正负样本数量比例为1:1;
步骤2,数据预处理:使用拼音生成工具标注正、负样本集中每个句子的拼音,以标签“0”和“1”标注句子类别,其中标签“0”代表现代汉语,标签“1”代表古诗文;将句子与相应的拼音、类别标签合并为训练样本,即Samplei(S,P,T)由句子(S)、拼音(P)、类别标签(T)组成,随机打散样本集合中的样本顺序,并按8:1:1的比例划分成训练集、验证集、测试集;
步骤3,特征向量嵌入:统计样本集中古诗文短句的字数,选择最长句包含的字数作为样本集中句子和拼音长度值,记为L,将数据集中每个样本的句子与拼音分别固定为该长度L,然后将二者拼接,转化成固定长度为2L的特征向量,向量中每一维度代表单个汉字或单个拼音;
步骤4,神经网络训练:构建神经网络结构,网络结构依次包含Embedding层、CNN卷积层、Bactch Normalization层、激活层、CNN最大池化层和全连接层;
所述embedding层用于将古诗文的文本编码成数值向量;
所述CNN卷积层用于提取古诗文诗句的文本特征;
所述Batch Normalization层用于提升模型训练效率,加速模型拟合;
所述激活层用于加入非线性因素提高模型表达能力;所述CNN最大池化层用于提取古诗文诗句文本中最重要的特征;
所述全连接层用于将文本特征转换成类别预测的概率;
初始化神经网络中的权重和超参数,输入训练数据集,迭代训练神经网络至损失函数收敛;
步骤5,古诗文自动识别:加载步骤4中训练得到的用于古诗文识别的深度学习模型,输入待识别语句,运行模型预测语句是否为古诗文类型。
所述步骤1中,负样本集中包含数量在50%以上的长度小于10字的句子。
所述步骤1中,统计负样本集中每个句子句长,增加负样本的方法包括:(1)对于负样本集中的句子,判断句子成分中是否存在动词名词短语或者名词动词短语,若存在,则将句中的动词名词组合提取成单独的短句子并加入负样本集中;(2)针对负样本集中每一个句子长度大于10的句子,随机从[5,10]的区间内取一个整数值,从原始句子截取该数值长度的子句并加入负样本集中。
所述步骤2中,检测句子中的多音字,如果有,则保留多音字的每种读音。
所述步骤3中,特征向量嵌入过程具体包括:
步骤301:判断S和P的长度是否大于L,“是”则分别将S和P中超出L的后续部分截断,“否”则用‘<PAD>’字符分别填充S和P直至长度等于L;
步骤302:拼接S和P,每个样本变为Samplei(S+P,T),其中S+P是长度固定为2L的输入;
步骤303:统计Sample集合中所有汉字与拼音的类型数量为dict_size,为每个汉字与拼音赋予[0,dict_size-1]整数空间内的唯一整数值作为其位置;构造字典Dict,将所有汉字和拼音映射至字典空间Dict,该字典空间Dict的键值对分别为*keyi:Positioni},其中,keyi是一个汉字或拼音,Positioni是keyi在字典空间中的位置序号,根据字典空间中的键值对映射关系,将Samplei中的“S+P”映射成一个由Positioni组成的特征向量,维度为(1,2L)。
所述步骤4神经网络训练过程具体包括:
步骤401:Embedding层随机初始化一个以dict_size×embed_size为维度且满足均匀分布的随机权重向量W,其中dict_size是字典空间中的汉字和拼音的总数;embed_size为128;该权重向量W的作用是将字典空间Dict中的每个汉字或拼音随机初始化成一个长度为embed_size的一维均匀分布向量,根据特征向量各维度代表单个汉字或拼音的位置Positioni,匹配W中对应位置的以embed_size为长度的向量;最终,以batch_size×2L为维度的原始输入,经过Embedding层后被转换为成三维向量输出,维度为:batch_size×2L×embed_size;其中batch_size为每次数据的样本数;
步骤402:将Embedding层的输出向量送入一维卷积层,设置卷积层超参数,包括卷积核个数H、卷积核尺寸及种类数M、卷积步长;其中,卷积核个数H为256;卷积核尺寸根据词语通常包含的字数及经统计的诗句中的字数集中分布值进行确定,以捕捉一句话中连续N个字的N元语法特征和语序特征;卷积步长设为1,卷积层最终输出M个特征图,其中M是设置的卷积核尺寸的种类数,每个特征图的维度为(batch_size,2L-M+1,1,H);
对卷积后的输出进行dropout优化,让输出神经元在达到指定概率值时停止工作,所述指定概率值(dropout_prob)为0.5,即随机选择一半神经元不进行学习,剩余神经元在被激活之前,经过Batch Normalization,将值被规范成满足均值为0方差为1的标准正态分布;Batch Normalization的具体操作流程如403;
步骤403:经dropout优化后的输出定义为神经元集合B={x1…batch_size},通过BatchNormalization处理,将输入的神经元集合B转换为预期输出Y{yi=BNγ,β(xi)},其中γ,β是待学习的参数,BNγ,β(xi)是一种对神经元xi进行规范化的操作:先将初始神经元分布转换为满足均值μB和方差的正态分布,再以γ,β为权重和偏置对神经元进行线性变换得到yi,即
根据模型收敛速度,选择收敛最快的ReLU激活函数对经Batch Normalization后的神经元进行激活;激活后的神经元进入最大池化层,取池化区域内神经元最大值后,输出每个特征图的维度仍为(batch_size,2L-M+1,1,H),将M个尺寸的特征图拼接为一个向量,维度变为(M,batch_size,2L-M+1,1,H),然后将其调整成二维向量(batch_size,H*4)做droupout优化,得到输出值pooled_output,维度仍为二维向量(batch_size,H*4);
步骤404:在全连接层中,pooled_output经线性变换转化为2维向量output,维度为(64,2),即表示为反应在2个类别(即古诗文语句和现代汉语语句)上的得分;利用Softmax公式将output转换成第0类和第1类的预测概率,利用交叉熵损失函数作为衡量预测概率y和真实概率yt差异的Loss函数;
步骤405:训练模型:对Loss函数求梯度按照梯度下降的原则反向传播梯度,以α为学习率调整神经网络中所有可训练参数θ,迭代训练模型直至Loss函数收敛;
步骤406:模型验证评估:在训练模型的同时,输入验证集对模型效果进行实时评估,多次调整模型所需超参数的值训练不同模型,对比不同超参数设定下模型的验证集准确率,根据准确率最高的原则确定最优模型,最后输入测试集将测试集准确率,得到对模型真实效果的评估,即
所述步骤402中,所述一维卷积层的卷积核滤波器filter有四种尺寸,分别为2,3,4,5,即用于捕捉一个句子中的连续N(N=2,3,4,5)个字的N元语法特征和词序特征。
所述步骤5中,经训练完成的深度学习模型根据保存成ckpt和pb两种格式。
下面结合附图和示例性实施例对本发明作进一步的说明:
图1为本发明实施例中一种基于深度学习的古诗文自动识别方法流程图,具体流程包括:
步骤S1:训练语料的收集,具体为:首先,利用爬虫程序爬取古诗文网站的所有古代文学作品,将每篇文学作品根据标点符号进行分割,得到句长一般为5字到10字的古诗文短句Si,组成正样本集D+={S1…m}。收集维基百科新闻语料、微博语料,将篇章级的新闻语料和段落级的微博语料按标点符号分割成句子Nj,组成负样本集D-={N1…n};
其次,统计D-中每个句子的句长,若长度小于10的句子在D-中所占比例很小,为避免神经网络模型将这类短句子误判别为古诗文类型,采用下述方法增加负样本:(1)对于D-中的句子,判断句子成分中是否存在动词名词短语或者名词动词短语,若存在,则将句中的动词名词组合提取成单独的短句子并加入D-中。(2)每次随机从[5,10]的区间内取一个整数值,选择D-中的一个句子,截取该数值长度的子句并加入D-中;
最后,统计D+与D-中句子数量,以数量少的一方样本数量为准,删除部分数量多的样本集句子,使D+与D-中的句子数量持平;
步骤S2:数据预处理,对D+中的每个句子赋予1标签,标识为古诗文语句。对D-中的每个语句赋予0标签,标识为现代汉语语句;
利用拼音生成工具例如python的pypinyin库,将D+和D-中的每个句子转换成拼音。若句中存在多音字,则保留多音字的每种读音;例如句子“乃是朝天客”经转换后的拼音为“nai shi zhao chao tian ke”。字形结合拼音的形式可以有效避免打字错误带来的误判。上例拼音打字可能错打为“乃是超甜可”,若不加入拼音训练模型,单从字形上易被判断为现代汉语句子,由于拼音为“nai shi chao tian ke”,模型仍会判别为古诗文句子;
将D+和D-中的句子样本预处理成如下形式Samplei=(S,P,T),其中S表示句子、P表示拼音,T表示标签,得到全量训练样本集合Sample。随机打乱Sample中Samplei排列顺序,以8:1:1的比例划分Sample为训练集、验证集、测试集。
步骤S3:特征向量嵌入,对Samplei分别将句子S和拼音P转换成长度为固定值L的S′与P′,由于古诗文句子长度通常小于10,设置L值为10;转换规则为:若S或P的长度大于10,则从长度为10的位置截断S或P,保留长度小于10的部分;若小于10,则用‘<PAD>’作为一个占位符填充S或P至长度等于10;将S′与P′拼接成一个特征,如图2中关于诗句“金秋少雨冬不雪”的文本特征,即是将Samplei转换为(S′+P′,T)的形式,其中S′+P′是模型输入特征Inputj,其长度固定为20,T是该样本的标签;
统计Sample集合中所有汉字与拼音的类型数量为dict_size,为每个汉字与拼音赋予[0,dict_size-1]整数空间内的唯一整数值作为其位置;构造字典Dict,Dict中的Key为单个汉字或拼音,值为该汉字或拼音对应的位置,表示为Dict={keyi:Positioni};
将Samplei中对应的汉字和拼音根据Dict转换成对应的位置。自此,Samplei中的特征向量(S′+P′)转换为长度为20的一维整数向量,维度为(1,20),可表示为Inputj=[Positionj(1)…Positionj(20)],如图2中关于诗句“金秋少雨冬不雪”的数值特征;
步骤S4:训练神经网络模型:构造一个神经网络,网络结构依次为Embedding层、卷积层、Batch Normalization层、激活层、池化层、全连接层,如图3所示为发明实施例中神经网络模型结构示意图;所述Embedding层用于将古诗文的文本编码成数值向量;所述CNN卷积层提取古诗文诗句的文本特征;所述Batch Normalization层用于提升模型训练效率,加速模型拟合;所述激活层用于加入非线性因素提高模型表达能力;所述最大池化层maxpooling用于提取文本最重要的特征;所述全连接层用于将文本特征转换成类别预测的概率;
初始化神经网络中的权重和超参数,输入训练集,迭代训练神经网络至损失函数收敛,图4为本发明实施例中神经网络的训练流程示意图,具体流程有:
步骤S4-1:在Embedding层中,随机初始化一个均匀分布的可训练权重变量W,W的两个维度分别是字典大小dict_size和人为设定的超参数embed_size。该权重变量W的作用是为Dict中的每个汉字或拼音随机初始化一个长度为embed_size的一维均匀分布向量。在接收到一批batch_size数量的输入Inputj后,将Inputj中每个维度的位置Positionj(1)…Positionj(20)映射至W中对应位置的一维均匀分布向量。最终,以batch_size×20为维度的原始输入Input,经过embedding层后被转换为成三维batch_size×20×embed_size的embed_output;
步骤S4-2:Embedding层后紧接一个1维卷积层。该卷积层的卷积核滤波器filter有四种尺寸,分别为2,3,4,5。每种尺寸设置的主要思想是捕捉一句话中的连续N(N=2,3,4,5)个字的N元语法特征和词序特征,可理解为学习句子中二字和三字词语,四字成语,五字诗句的语法特征;每种filter的个数均为256,同时设置步长为1,将embed_output输入卷积层后,通过这些filter提取出4组不同的特征,得到4个更小的特征图feature map。每个feature map的维度可表示为(batch_size,seq_length-filter_size+1,1,num_filters),本例中batch_size=64,seq_length是固定句长20,filter_size的值见上述定义的四种filter尺寸,卷积核个数num_filters=256,第三维度上的1代表1个通道,可理解为通道类比于三维图像中的第三维,而文本是二维特征没有第三维度,故通道为1。为增强模型泛化能力,对每个feature map进行dropout,让其中的神经元参数以一定概率dropout_prob(如0.5)停止工作。
步骤S4-3:剩余神经元通过ReLU激活函数激活。因为激活函数能增强模型对非线性的表达能力。在ReLU,Sigmoid,Tanh三种激活函数中选择收敛速度最快的ReLU作为激活函数。当x<0时,Relu函数输出恒为0,神经元落入硬饱和区,对应的权重无法更新,因此卷积层剩余神经元在进入激活函数之前,采用Batch Normalization的方法将神经元分布转换成满足均值为0、方差为1的标准正态分布,避免神经元一直落入硬饱和区。具体操作流程如下:定义一个batch_size范围内值为x的神经元集合:B={x1…m},待学习参数γ,β;预期输出Y为{yi=BNγ,β(xi)};求x的均值μB和方差将xi标准化为以μB为均值为方差的标准正态分布最后经过线性变换转换为yi。
步骤S4-4:对于每个Feature Map,Y经过激活层的Relu函数激活后,仍与前述卷积后的feature map维度保存一致,随后进入最大池化层,取池化区域内神经元的最大值后每个feature map的池化输出尺寸变为(64,1,1,256)。将4个池化输出拼接为一个向量,维度为(4,64,1,1,256),4指代卷积核的4种尺寸,然后调整形状变成二维向量(64,256*4),再次进行dropout后得到池化层输出值pooled_output,每次dropout不会改变输入的形状。步骤S4-5:
将pooled_output输入全连接层,随机初始化一个满足正态分布的权重变量weight维度为(256*4,2),偏置变量bias通常初始化为0向量维度为(64),对pooled_output进行线性变换pooled_output*weight+bias,转换为在两个类别上的得分output,维度为(64,2)。
步骤S4-6:利用Softmax公式将output转换成模型预测输入句子为第0类和第1类的概率y。将训练样本的真实标签(0或1)转换成one-hot概率yt,标签为0则对应yt为[1,0],反之为[0,1]。定义损失函数为与模型预测概率y和真实概率yt有关的交叉熵Loss函数。
步骤S4-7:定义神经网络模型后,开始模型训练。训练过程如下:
将训练集输入神经网络模型,根据Loss函数计算损失和梯度按照梯度下降的原则反向传播梯度,调整神经网络的参数θ(参数指网络中定义的可训练的权重和偏置等变量),更新θ后迭代训练模型直至Loss函数收敛。
训练模型的同时,输入验证集对模型效果进行实时评估。多次调整模型所需超参数如学习率、dropout_prob、embed_size、batch_size的值训练不同模型,对比不同超参数设定下模型的验证集准确率,根据准确率最高的原则确定最优模型。最后输入测试集将测试集准确率,得到对模型真实效果的评估。
步骤S5,加载并调用模型识别古文,将模型的图结构、节点、变量值等存储为ckpt格式或者pb格式。加载模型,将一个句子预处理成图3所示的特征向量嵌入形式,作为输入传入古诗文识别模型,模型最终输出该句子为古诗文还是现代汉语类型的预测标签。
本发明主要用于提供一种基于深度学习的古诗文自动识别方法,自动识别文本句子是否为古诗文类型,同时能有效避免错别字降低识别准确率,能满足作诗质量检测、文学作品分类管理、自动采集古诗文等应用场景对古诗文自动识别技术的需求。
以上实施例不以任何方式限定本发明,凡是对以上实施例以等效变换方式做出的其它改进与应用,都属于本发明的保护范围。
Claims (8)
1.一种基于深度学习的古诗文自动识别方法,其特征在于,包括收集训练语料、数据预处理、特征向量嵌入、神经网络训练、古诗文自动识别的步骤,具体为:
步骤1,收集训练语料:利用爬虫程序爬取互联网网站提供的古诗文作为正样本集;收集现代汉语句子语料作为负样本集;统计正样本集中古诗文句子长度,根据正样本集中句子长度的集中分布范围,选择95%以上句子的句长分布值,以此数值修改负样本集中的句子长度的分布;
统计正样本集与负样本集中句子数量,如数量不等,则以数量较少的一方样本数量为准,保持正负样本数量比例为1:1;
步骤2,数据预处理:使用拼音生成工具标注正、负样本集中每个句子的拼音,以标签“0”和“1”标注句子类别,其中标签“0”代表现代汉语,标签“1”代表古诗文;将句子与相应的拼音、类别标签合并为训练样本,即Samplei(S,P,T)由句子(S)、拼音(P)、类别标签(T)组成,随机打散样本集合中的样本顺序,并按8:1:1的比例划分成训练集、验证集、测试集;
步骤3,特征向量嵌入:统计样本集中古诗文短句的字数,选择最长句包含的字数作为样本集中句子和拼音长度值,记为L,将数据集中每个样本的句子与拼音分别固定为该长度L,然后将二者拼接,转化成固定长度为2L的特征向量,向量中每一维度代表单个汉字或单个拼音;
步骤4,神经网络训练:构建神经网络结构,网络结构依次包含Embedding层、CNN卷积层、Bactch Normalization层、激活层、CNN最大池化层和全连接层;
所述embedding层用于将古诗文的文本编码成数值向量;
所述CNN卷积层用于提取古诗文诗句的文本特征;
所述Batch Normalization层用于提升模型训练效率,加速模型拟合;
所述激活层用于加入非线性因素提高模型表达能力;所述CNN最大池化层用于提取古诗文诗句文本中最重要的特征;
所述全连接层用于将文本特征转换成类别预测的概率;
初始化神经网络中的权重和超参数,输入训练数据集,迭代训练神经网络至损失函数收敛;
步骤5,古诗文自动识别:加载步骤4中训练得到的用于古诗文识别的深度学习模型,输入待识别语句,运行模型预测语句是否为古诗文类型。
2.如权利要求1所述的一种基于深度学习的古诗文自动识别方法,其特征在于:所述步骤1中,负样本集中包含数量在50%以上的长度小于10字的句子。
3.如权利要求2所述的一种基于深度学习的古诗文自动识别方法,其特征在于:所述所述步骤1中,统计负样本集中每个句子句长,增加负样本的方法包括:(1)对于负样本集中的句子,判断句子成分中是否存在动词名词短语或者名词动词短语,若存在,则将句中的动词名词组合提取成单独的短句子并加入负样本集中;(2)针对负样本集中每一个句子长度大于10的句子,随机从[5,10]的区间内取一个整数值,从原始句子截取该数值长度的子句并加入负样本集中。
4.如权利要求3所述的一种基于深度学习的古诗文自动识别方法,其特征在于:所述所述步骤2中,检测句子中的多音字,如果有,则保留多音字的每种读音。
5.如权利要求4所述的一种基于深度学习的古诗文自动识别方法,其特征在于:所述步骤3中,特征向量嵌入过程具体包括:
步骤301:判断S和P的长度是否大于L,“是”则分别将S和P中超出L的后续部分截断,“否”则用‘<PAD>’字符分别填充S和P直至长度等于L;
步骤302:拼接S和P,每个样本变为Samplei(S+P,T),其中S+P是长度固定为2L的输入;
步骤303:统计Sample集合中所有汉字与拼音的类型数量为dict_size,为每个汉字与拼音赋予[0,dict_size-1]整数空间内的唯一整数值作为其位置;构造字典Dict,将所有汉字和拼音映射至字典空间Dict,该字典空间Dict的键值对分别为{keyi:Positioni},其中,keyi是一个汉字或拼音,Positioni是keyi在字典空间中的位置序号,根据字典空间中的键值对映射关系,将Samplei中的“S+P”映射成一个由Positioni组成的特征向量,维度为(1,2L)。
6.如权利要求5所述的一种基于深度学习的古诗文自动识别方法,其特征在于,所述步骤4神经网络训练过程具体包括:
步骤401:Embedding层随机初始化一个以dict_size×embed_size为维度且满足均匀分布的随机权重向量W,其中dict_size是字典空间中的汉字和拼音的总数;embed_size为128;该权重向量W的作用是将字典空间Dict中的每个汉字或拼音随机初始化成一个长度为embed_size的一维均匀分布向量,根据特征向量各维度代表单个汉字或拼音的位置Positioni,匹配W中对应位置的以embed_size为长度的向量;最终,以batch_size×2L为维度的原始输入,经过Embedding层后被转换为成三维向量输出,维度为:batch_size×2L×embed_size;其中batch_size为每次数据的样本数;
步骤402:将Embedding层的输出向量送入一维卷积层,设置卷积层超参数,包括卷积核个数H、卷积核尺寸及种类数M、卷积步长;其中,卷积核个数H为256;卷积核尺寸根据词语通常包含的字数及经统计的诗句中的字数集中分布值进行确定,以捕捉一句话中连续N个字的N元语法特征和语序特征;卷积步长设为1,卷积层最终输出M个特征图,其中M是设置的卷积核尺寸的种类数,每个特征图的维度为(batch_size,2L-M+1,1,H);
对卷积后的输出进行dropout优化,让输出神经元在达到指定概率值时停止工作,所述指定概率值(dropout_prob)为0.5,即随机选择一半神经元不进行学习,剩余神经元在被激活之前,经过Batch Normalization,将值被规范成满足均值为0方差为1的标准正态分布;Batch Normalization的具体操作流程如403;
步骤403:经dropout优化后的输出定义为神经元集合B={x1…batch_size},通过BatchNormalization处理,将输入的神经元集合B转换为预期输出Y{yi=BNγ,β(xi)},其中γ,β是待学习的参数,BNγ,β(xi)是一种对神经元xi进行规范化的操作:先将初始神经元分布转换为满足均值μB和方差的正态分布,再以γ,β为权重和偏置对神经元进行线性变换得到yi,即
根据模型收敛速度,选择收敛最快的ReLU激活函数对经Batch Normalization后的神经元进行激活;激活后的神经元进入最大池化层,取池化区域内神经元最大值后,输出每个特征图的维度仍为(batch_size,2L-M+1,1,H),将M个尺寸的特征图拼接为一个向量,维度变为(M,batch_size,2L-M+1,1,H),然后将其调整成二维向量(batch_size,H*4)做droupout优化,得到输出值pooled_output,维度仍为二维向量(batch_size,H*4);
步骤404:在全连接层中,pooled_output经线性变换转化为2维向量output,维度为(64,2),即表示为反应在2个类别(即古诗文语句和现代汉语语句)上的得分;利用Softmax公式将output转换成第0类和第1类的预测概率,利用交叉熵损失函数作为衡量预测概率y和真实概率yt差异的Loss函数;
步骤405:训练模型:对Loss函数求梯度按照梯度下降的原则反向传播梯度,以α为学习率调整神经网络中所有可训练参数θ,迭代训练模型直至Loss函数收敛;
步骤406:模型验证评估:在训练模型的同时,输入验证集对模型效果进行实时评估,多次调整模型所需超参数的值训练不同模型,对比不同超参数设定下模型的验证集准确率,根据准确率最高的原则确定最优模型,最后输入测试集将测试集准确率,得到对模型真实效果的评估,即
7.如权利要求6所述的一种基于深度学习的古诗文自动识别方法,其特征在于,所述步骤402中,所述一维卷积层的卷积核滤波器filter有四种尺寸,分别为2,3,4,5,即用于捕捉一个句子中的连续N(N=2,3,4,5)个字的N元语法特征和词序特征。
8.如权利要求7所述的一种基于深度学习的古诗文自动识别方法,其特征在于,所述步骤5中,经训练完成的深度学习模型根据保存成ckpt和pb两种格式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910492084.8A CN110188781B (zh) | 2019-06-06 | 2019-06-06 | 一种基于深度学习的古诗文自动识别方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910492084.8A CN110188781B (zh) | 2019-06-06 | 2019-06-06 | 一种基于深度学习的古诗文自动识别方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110188781A true CN110188781A (zh) | 2019-08-30 |
CN110188781B CN110188781B (zh) | 2022-07-22 |
Family
ID=67720860
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910492084.8A Active CN110188781B (zh) | 2019-06-06 | 2019-06-06 | 一种基于深度学习的古诗文自动识别方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110188781B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111476028A (zh) * | 2020-04-02 | 2020-07-31 | 言图科技有限公司 | 一种汉语短语识别方法、系统、存储介质及电子设备 |
CN111538840A (zh) * | 2020-06-23 | 2020-08-14 | 基建通(三亚)国际科技有限公司 | 一种文本分类方法及装置 |
CN111539437A (zh) * | 2020-04-27 | 2020-08-14 | 西南大学 | 基于深度学习的甲骨文偏旁的检测与识别方法 |
CN111626067A (zh) * | 2020-06-01 | 2020-09-04 | 北京世纪好未来教育科技有限公司 | 语言类型判别方法、装置、设备及存储介质 |
CN111897958A (zh) * | 2020-07-16 | 2020-11-06 | 邓桦 | 基于自然语言处理的古诗词分类方法 |
CN111930947A (zh) * | 2020-08-26 | 2020-11-13 | 施建军 | 一种现代汉语文字作品作者鉴别系统和方法 |
CN112348073A (zh) * | 2020-10-30 | 2021-02-09 | 北京达佳互联信息技术有限公司 | 一种多音字识别方法、装置、电子设备及存储介质 |
CN113159013A (zh) * | 2021-04-28 | 2021-07-23 | 平安科技(深圳)有限公司 | 基于机器学习的段落识别方法、装置、计算机设备和介质 |
CN113821618A (zh) * | 2021-08-30 | 2021-12-21 | 山东健康医疗大数据有限公司 | 一种电子病历是否类细项提取方法与系统 |
US11586925B2 (en) * | 2017-09-29 | 2023-02-21 | Samsung Electronics Co., Ltd. | Neural network recogntion and training method and apparatus |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107301246A (zh) * | 2017-07-14 | 2017-10-27 | 河北工业大学 | 基于超深卷积神经网络结构模型的中文文本分类方法 |
CN109086408A (zh) * | 2018-08-02 | 2018-12-25 | 腾讯科技(深圳)有限公司 | 文本生成方法、装置、电子设备及计算机可读介质 |
CN109543084A (zh) * | 2018-11-09 | 2019-03-29 | 西安交通大学 | 一种建立面向网络社交媒体的隐蔽敏感文本的检测模型的方法 |
-
2019
- 2019-06-06 CN CN201910492084.8A patent/CN110188781B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107301246A (zh) * | 2017-07-14 | 2017-10-27 | 河北工业大学 | 基于超深卷积神经网络结构模型的中文文本分类方法 |
CN109086408A (zh) * | 2018-08-02 | 2018-12-25 | 腾讯科技(深圳)有限公司 | 文本生成方法、装置、电子设备及计算机可读介质 |
CN109543084A (zh) * | 2018-11-09 | 2019-03-29 | 西安交通大学 | 一种建立面向网络社交媒体的隐蔽敏感文本的检测模型的方法 |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11586925B2 (en) * | 2017-09-29 | 2023-02-21 | Samsung Electronics Co., Ltd. | Neural network recogntion and training method and apparatus |
CN111476028A (zh) * | 2020-04-02 | 2020-07-31 | 言图科技有限公司 | 一种汉语短语识别方法、系统、存储介质及电子设备 |
CN111539437A (zh) * | 2020-04-27 | 2020-08-14 | 西南大学 | 基于深度学习的甲骨文偏旁的检测与识别方法 |
CN111539437B (zh) * | 2020-04-27 | 2022-06-28 | 西南大学 | 基于深度学习的甲骨文偏旁的检测与识别方法 |
CN111626067B (zh) * | 2020-06-01 | 2022-04-19 | 北京世纪好未来教育科技有限公司 | 语言类型判别方法、装置、设备及存储介质 |
CN111626067A (zh) * | 2020-06-01 | 2020-09-04 | 北京世纪好未来教育科技有限公司 | 语言类型判别方法、装置、设备及存储介质 |
CN111538840A (zh) * | 2020-06-23 | 2020-08-14 | 基建通(三亚)国际科技有限公司 | 一种文本分类方法及装置 |
CN111897958B (zh) * | 2020-07-16 | 2024-03-12 | 邓桦 | 基于自然语言处理的古诗词分类方法 |
CN111897958A (zh) * | 2020-07-16 | 2020-11-06 | 邓桦 | 基于自然语言处理的古诗词分类方法 |
CN111930947A (zh) * | 2020-08-26 | 2020-11-13 | 施建军 | 一种现代汉语文字作品作者鉴别系统和方法 |
CN112348073A (zh) * | 2020-10-30 | 2021-02-09 | 北京达佳互联信息技术有限公司 | 一种多音字识别方法、装置、电子设备及存储介质 |
CN112348073B (zh) * | 2020-10-30 | 2024-05-17 | 北京达佳互联信息技术有限公司 | 一种多音字识别方法、装置、电子设备及存储介质 |
CN113159013A (zh) * | 2021-04-28 | 2021-07-23 | 平安科技(深圳)有限公司 | 基于机器学习的段落识别方法、装置、计算机设备和介质 |
CN113159013B (zh) * | 2021-04-28 | 2024-05-07 | 平安科技(深圳)有限公司 | 基于机器学习的段落识别方法、装置、计算机设备和介质 |
CN113821618A (zh) * | 2021-08-30 | 2021-12-21 | 山东健康医疗大数据有限公司 | 一种电子病历是否类细项提取方法与系统 |
CN113821618B (zh) * | 2021-08-30 | 2024-03-22 | 山东浪潮智慧医疗科技有限公司 | 一种电子病历是否类细项提取方法与系统 |
Also Published As
Publication number | Publication date |
---|---|
CN110188781B (zh) | 2022-07-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110188781A (zh) | 一种基于深度学习的古诗文自动识别方法 | |
CN110309305A (zh) | 基于多任务联合训练的机器阅读理解方法及计算机存储介质 | |
CN111966812B (zh) | 一种基于动态词向量的自动问答方法和存储介质 | |
CN108549658A (zh) | 一种基于语法分析树上注意力机制的深度学习视频问答方法及系统 | |
CN108804608A (zh) | 一种基于层次attention的微博谣言立场检测方法 | |
CN106611055A (zh) | 基于层叠式神经网络的中文模糊限制信息范围检测方法 | |
CN110321563A (zh) | 基于混合监督模型的文本情感分析方法 | |
CN106844349A (zh) | 基于协同训练的垃圾评论识别方法 | |
CN107977345A (zh) | 一种通用文本信息抽取方法以及系统 | |
CN109299251A (zh) | 一种基于深度学习算法的异常垃圾短信识别方法及系统 | |
CN109033321B (zh) | 一种图像与自然语言特征提取及基于关键词的语言指示图像分割方法 | |
CN114818717A (zh) | 融合词汇和句法信息的中文命名实体识别方法及系统 | |
CN113051887A (zh) | 一种公告信息元素抽取方法、系统及装置 | |
CN115630653A (zh) | 一种基于BERT与BiLSTM的网络流行语情感分析方法 | |
CN111061873B (zh) | 一种基于Attention机制的多通道的文本分类方法 | |
CN109325125A (zh) | 一种基于cnn优化的社交网络谣言方法 | |
CN110610006B (zh) | 基于笔画和字形的形态学双通道中文词嵌入方法 | |
CN110232121A (zh) | 一种基于语义网的管制指令分类方法 | |
CN113535960A (zh) | 一种文本分类方法、装置和设备 | |
CN116522165B (zh) | 一种基于孪生结构的舆情文本匹配系统及方法 | |
CN111368524A (zh) | 一种基于自注意力双向gru和svm的微博观点句识别方法 | |
CN114357166B (zh) | 一种基于深度学习的文本分类方法 | |
CN112131879A (zh) | 一种关系抽取系统、方法和装置 | |
CN115983266A (zh) | 用于银行征信数据审核的拼音变体文本识别方法及系统 | |
CN115952284A (zh) | 一种融合密度聚类与ernie的医疗文本关系抽取方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |