掌桥专利:专业的专利平台
掌桥专利
首页

基于LDA和Bert的特定类别文本标题二分类方法

文献发布时间:2023-06-19 09:51:02


基于LDA和Bert的特定类别文本标题二分类方法

技术领域

本发明涉及基于LDA和Bert的特定类别文本标题二分类方法。

背景技术

近年来,随着人工智能的发展,人们开始不断地尝试对文本这类非结构化的数据进行分析和利用,其中文本分类是自然语言处理应用领域中最常见也最重要的任务类型。该任务的目标是实现根据文本内容即可对文本类型进行判断的功能。

文本二分类的方法可以根据是否使用深度学习分为两大类,基于传统机器学习的方法和基于深度学习的文本分类。在传统机器学习方法中,整个分类问题拆分成为特征工程和分类器两部分。特征工程是将文本表示为计算机可以识别的、能够代表该文档特征的特征矩阵的过程。特征工程可以再细分为文本预处理、特征提取、文本表示等三个阶段。传统机器学习方法的主要缺点是忽略了文本的上下文关系,每个特征词之间彼此独立,无法表征语义信息,另外还需要人工进行特征工程,成本比较高。

基于深度学习的文本分类方法首先使用词向量或句向量解决文本表示问题,再利用卷积神经网络(CNN)或循环神经网络(RNN)等网络结构自动获取特征,去除了繁杂的特征工程阶段,端到端地解决问题。比较典型的方法有FastText和Test-CNN算法。FastTest算法首先使用word2vec和n-grams机制将词袋向量化,接着对所有词向量进行平均,最后通过softmax和哈夫曼树得到分类的结果。这种方法适合类别数目特别多的应用场景,类别较少的情况下容易出现过拟合问题。此处引用文献为:Joulin A ,Grave E,Bojanowski P,etal.Bag of Tricks for Efficient Text Classification[J].2016。Test-CNN将卷积神经网络应用到了文本分类任务中,在FastText的基础上增加了对词序信息的考虑,不过这种方法的缺点在于不能够很好地表达上下文信息。此处引用文献为:Kim Y.Convolutionalneural networks for sentence classification[J].arXiv preprint arXiv:1408.5882,2014。近来,二分类方法也逐渐有一些新的尝试,例如使用RNN网络,更好地表达上下文信息,或者向网络中添加注意力机制,建立长时间记忆机制,直观地给出每个词对结果的贡献。

但是,当面对特殊类型的数据时,如果直接采用基于深度学习的二分类方法,并不能够得到很好地分类效果,这是由于数据的紊乱性会导致神经网络在学习的过程中不能够准确地提取到数据中的特征。

发明内容

发明目的:克服只使用传统机器学习方法的不准确性,降低直接使用基于深度学习方法进行特殊文本二分类时的数据不适应性;考虑将特征工程与深度学习相融合的方法,使用特征工程和Latent Dirichlet Allocation(LDA)文档主题生成模型提取文档关键词,使用语言表示模型Bidirectional Encoder Representations from Transformers(Bert)和深度神经网络Deep Neural Networks(DNN)进行特征处理,得到最终的分类结果。避免特殊类型数据的特征处理困难问题,充分利用数据的关键词特征,增加分类准确性,提高算法的鲁棒性。此处引用文献为:Blei D M,Ng AY,Jordan M I,et al.Latentdirichlet allocation[J].Journal of Machine Learning Research,2003:993-1022。

为了解决上述技术问题,本发明公开了一种基于LDA模型和Bert模型的文本二分类方法,该方法能够对特定类型的文本数据进行处理,之后处理其他类别的数据时可按照本方法的大致思路进行微调后使用,包括如下步骤:

步骤1,爬取得到招标网站的公告标题样本数据集A,样本数据集A中包含招标公告和非招标公告,人工对样本数据集A每条数据的类别信息进行标注,根据每条公告的内容判断其是否属于招标公告,并对其进行类别信息标注,使用0和1来区分,0表示非招标公告,1表示招标公告;

步骤2,创建针对样本数据集A的自定义词典,自定义词典包括有用词典useful_dict和无用词典unuseful_dict;

步骤3,使用中文分词组件包jieba对样本数据集A进行分词,再使用哈工大停用词表和无用词典unuseful_dict对样本数据集A进行处理,得到去除停用词和无用词之后的标题数据集B;

步骤4,将标题数据集B输入LDA(Latent Dirichlet Allocation)文档主题生成模型进行训练,得到每个标题数据的10个关键词,所有数据的关键词构成标题数据集C,并将训练好的LDA模型保存为结果文件LDA_model。此处引用文献为:Blei D M,Ng AY,Jordan MI,et al.Latent dirichlet allocation[J].Journal of Machine Learning Research,2003:993-1022。

步骤5,使用语言表示模型Bidirectional Encoder Representations fromTransformers (Bert)将标题数据集C中的每个词转换为对应的词向量,得到数据集D。此处引用文献为:Devlin J,Chang M W,Lee K,et al.BERT:Pre-training of DeepBidirectional Transformers for Language Understanding[J].2018。

步骤6,将数据集D输入深度神经网络模型DNN(Deep Neural Networks)中进行训练,将训练好的网络模型保存成结果文件model;

步骤7,在实际应用时,对于新的文档标题数据,进行分词、去除停用词和去除无用词之后,得到分词结果数据X;

步骤8,使用结果文件LDA_model,对分词结果数据X进行处理,得到对应的关键词数据KX;

步骤9,使用Bert将关键词数据KX转换为对应的词向量矩阵后,输入训练好的神经网络模型model进行处理,得到最终的分类结果Y。

步骤2中,由于使用语境和数据内容的特殊,本发明在设计过程中构建了自定义词典以达到更好地效果,具体方法是人为分析任务数据,将经常出现的并且对文本类别有重要标识意义的词汇聚在一起,构成有用词典,例如“中标”、“终止”、“候选人”等词,这些词都明确表示了相应公告的结束状态,另外还有“更正”、“变更”等词,这些词都明确表明了相应公告的修改状态。同时,本发明也将具有鲜明特征的,但是不能对分类结果带来明确指向意的词汇聚,构成无用词典,以便后续使用,例如“公司”、“单位”等专有词和地名、时间等。

步骤3中,首先使用jieba加载有用词典useful_dict,再利用jieba对样本数据集A进行分词,保证具有标识意义的词语正确分取出来。分词后,样本数据集A中的每条文本数据都转换为对应的字符串数组。之后,使用停用词表和无用词词典去除字符串数组中的停用词和无用词。与此同时,本发明根据字符串的长度限制,将长度小于2的字符串进行删除,去除单个字符串的干扰。另外,本发明也对字符串的内容进行限制,如若某个字符串只由数字组成,则去除该字符串,排除到数字的干扰。经过上述处理后,最终标题得到数据集B。

步骤3中,对分词后的结果进行去除无用词操作的具体步骤为:循环遍历分词后得到的每一个词组并进行判断,如果该词组满足如下四个条件(1)不在停用词表中,(2)不在无用词字典中,(3)词组的长度大于1,(4)词组不为全数字字符串,则将该词组作为可用词组添加到去词后的结果数据中,最终所有样本的结果构成标题数据集B。

步骤4中,为了使得LDA模型能够更加全面地描述训练文本的主题,本发明设置LDA模型的主题数目为10,并以此为标准来训练LDA模型。训练结束后,根据主题与词组之间的关系,构造出主题-词组字典并保存。标题数据集B中的每个训练文本能够根据训练好的LDA模型得到主题分布,再根据主题-词组字典,将主题分布中所有主题对应的词组拼接,得到对应的候选关键词列表candidate_keywords_old。

步骤4中,为了保证关键词提取的更加准确,同时也为了避免LDA分词效果的不理想,利用步骤2中定义的有用词典useful_dict再次对标题数据集B进行判断,当有用词典useful_dict中的一个词在标题数据集B中原始文本里出现的次数超过3次时,便将该词作为特殊关键词special keyword添加到该文本的候选关键词列表最前端,得到新的候选关键词列表candidate keywords_new。再以是否出现在对应原始训练文本中作为判断条件,对候选关键词进行筛选,得到最终的关键词列表,并将所有样本的关键词列表组成标题数据集C:

candidate_keywords_new=special_keyword+candidate_keywords_old。

其中candidate_keywords_new表示添加特殊关键词后的关键词列表,candidate_keywords_old表示添加前的关键词列表。

步骤5中,所述语言表示模型Bert为预训练好的中文模型chinese_L-12_H-768_A-12,转换后的数据集D中每个数据的维度为10*768,其中10表示关键词个数,768为词向量维度。

步骤6中,为了能够提取到更详细的特征,深度神经网络模型DNN为4层全连接模型,其中使用到全连接层、池化层、正则化层和分类层,模型的输入数据维度为(n*10*768),其中n表示数据集D中数据的个数,由模型根据实际训练情况自动设置,10表示关键词个数,768表示词向量的特征维度。模型的输出结果为预测的类别概率y1和y2,其中y1表示为非招标数据的概率,y2表示为招标数据的概率。

其中,每个全连接层的计算公式如下所示:

y=Relu(wx+b)

其中x表示输入向量,w表示权重矩阵参数,b表示偏置矩阵参数,Relu()表示全连接层使用的非线性激活函数,y表示该层的输出向量;

使用池化层的目的是为了降低数据维度,减少网络中的参数量,从而降低信息冗余。本发明中使用的池化方法为全局平均值池化,计算公式如下所示:

其中x表示输入向量,维度为(batch_size,numbs,features),batch_size表示网络批处理数据的大小,numbs表示特征个数,features表示每个特征的维度,x

正则化层的目的是为了加快网络的训练速度,将原始批数据转换为均值等于0,方差等于1的数据,其计算过程如下所示:

其中p表示正则化层的输入向量,维度为(batch_size,features),p

在网络的训练过程中,本发明使用损失值loss和梯度下降算法,计算网络中各个权重参数对应的梯度,并使用优化器调整对应的参数。损失值loss的计算公式如下所示:

loss=2×∑(y

其中y

步骤7中,在实际应用时,对文档标题数据采用与训练数据一致的预处理方法:首先使用jieba分词,接着使用停用词表和无用词典进行处理去除无用词,最终得到数据X。

步骤8中,使用结果文件LDA_model得到数据X的预测主题分布,接着对主题分布按照概率大小进行排序,再根据主题-词组字典,从每个预测主题中抽取相同数目词组加入候选关键词列表;使用与步骤4中special keyword添加方法和候选词筛选方法一致的方法处理候选关键词列表,得到最终的关键词数据KX。

步骤9中,关键词数据KX在经过语言表示模型Bert处理后的维度为1*10*768,其中10表示关键词个数,768表示词向量的特征维度,将关键词数据KX输入模型model中,得到预测结果y1和y2,通过比较两者的大小,即能够得到原始文档标题的类别信息Y:

有益效果:本发明的显著优点是提高了针对特殊类型文本的二分类结果准确率,提高了算法的鲁棒性,同时本发明使用到的模型小,测试速度快,达到了在整个系统中判断的实时性。

附图说明

下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述或其他方面的优点将会变得更加清楚。

图1为本发明的训练流程图和实际应用流程图。

图2为本发明中数据示例截图。

图3为本发明中使用LDA提取到的文本关键词示例截图。

图4为本发明中DNN模型结构图。

图5为本发明中方法消融实验的结果。

具体实施方式

在本实施例中,本发明需要对特定类型网站上的文档标题进行二分类,并将分类结果作为后续处理的依据。所以本发明需要实现一个性能良好的、模型较小的、能够高效训练的特定类型文档二分类方法。图1左侧是本发明方法的训练流程图,包括7个步骤。

步骤1中,使用jieba工具对训练文本进行分词,再使用停用词表和无用词典去除停用词和无用词,同时排除掉单个字符串和数字的干扰,只保留下标题中的中文文本数据。

步骤2中,使用训练数据训练LDA模型,在这里本发明设置LDA模型的主题数目为10,并根据主题与词之间的对应关系,构造出主题-词组字典。

步骤3中,使用训练好的LDA模型得到每个训练数据的主题分布。

步骤4中,根据每个训练数据的主题分布和主题-词组字典,得到候选关键词列表。另外在这里,本发明利用有用词典进行special keyword的添加,如果有用词典中的某个词,在该文本中出现的次数超过3次,那么便将这个词作为special keyword添加在该文本的候选关键词列表最前端。

步骤5中,本发明根据是否出现在原始训练数据文本中对候选关键词列表进行挑选,得到关键词列表。

步骤6中,使用Bert将每个词转换为对应的词向量。

步骤7中,使用每个训练数据的词向量数据训练DNN模型,使用到的loss公式为:

loss=2×∑(y

图1右侧是本发明的实际应用流程图,主要有6个步骤。

步骤1中,使用jieba工具对测试数据进行分词,接着使用停用词表和无用词典对其进行处理。

步骤2中,使用预存的LDA_model,得到测试数据的主题分布。

步骤3中,利用排序后的主题分布和主题-词组字典,平均地从每个主题对应的词组中进行挑选并添加到候选关键词列表中。之后再利用useful_dict添加特殊关键词special keyword。

步骤4中,根据是否出现在该训练数据文本中对候选关键词列表进行筛选,得到关键词列表。

步骤5中,使用Bert模型,得到测试数据的词向量数组。

步骤6中,将词向量数组输入DNN模型,得到对应的类别信息。

实施例

为了保证分类模型的正确运行,本发明需要进行模型的训练,训练集中包含预先获得的公告标题信息和它们所述的类别。训练集的获取,本发明使用的数据需要从不同招标网站的页面中进行爬取,然后人工标注类别标签,最终本发明获得的一组带有类别信息的公告标题信息的文本集,其中包含500条左右的文本数据。

本发明在不同的网站来源,获取到了新的公告标题信息,并将其存储作为模型测试集,测试数据中同样既包含招标公告标题也包含非招标公告标题,类别信息采用人工标注的方法得到。对于每一条测试数据集使用图1所示的测试流程步骤进行处理,利用训练好的LDA模型提取文本的关键词,再使用Bert模型将所有关键词转换为对应的词向量,最后输入DNN模型得到类型预测结果,对比真实结果和预测结果之间的一致性计算模型的准确率。

利用上述的文本数据训练集和测试集,按照以下步骤进行模型的训练以及评估:1、模型训练

1.1LDA模型训练与应用

1.1.1对本训练集中的所有文本进行分词、去除停用词以及去除无用词操作。为了保证模型具有较高精准率,本发明同时去除掉了所有非中文文本的词组,包括英文和数字。同时结合实际情况考虑,本发明认为单字长度的词组并不能准确描述一类特征,所以在算法设计中去除了所有单字长度的词组。

1.1.2利用所有的训练样本,得到对应的字典D,并进行保存。并且根据字典D和每个样本内容,得到对应的文集并保存。

1.1.3设置LDA模型的主题数目为10,根据字典和文集进行LDA模型学习。

1.1.4根据学习得到的模型,得到主题-词组之间的对应字典,并进行保存。

1.1.5根据学习得到模型,求得每个样本文集的主题分布,这里的主题分布为(主题id

candidate_keywords_new=x+candidate_keywords_old

得到新的候选关键词列表candidate_keywords_new后,再根据候选关键词列表中每个词是否出现在样本内容中进行筛选,得到最终的关键词列表。

1.1.6筛选完成后,得到最终的关键词列表。为了保证之后数据的一致性,本发明在这里固定输出10个关键词。当关键词列表长度小于10时,本发明便会对现有关键词进行重复添加,直至列表长度为10。

1.2DNN模型训练

1.2.1本发明使用预训练好的Bert中文模型,将LDA提取到的关键词转换成对应的词向量。

1.2.2本发明使用到的DNN网络,由四个全连接层、一个池化层和一个正则化层组成。

1.2.2将每个样本对应的词向量数组,和它的标签输入DNN模型进行训练。使用到的损失函数loss如下所示。其中y

loss=2×∑(y

1.2.4得到DNN模型并保存。

2.测试

2.1对于测试标题文档,本发明采用与训练数据一致的预处理方法,首先利用停用词表和无用词典,对文档进行分词和去除停用词。

2.2利用LDA模型对文档进行处理;

2.2.1利用保存的LDA模型对分词后的结果进行处理,得到文档的主题分布;

2.2.2将主题分布从高到低进行排序;

2.2.3根据主题分布中预测主题个数l,计算平均抽取的词组数量num=20//l。再根据主题分布和主题-词组对应字典,平均地从每个主题对应的词中抽取前num个词,最终得到长度为20的候选关键词列表candidate_keywords_old;

2.2.4根据预先设置的有用词典useful_dict中每个词在文档中出现的次数,将出现次数超过3次的特定词作为special keyword添加到候选关键词列表中。添加公式如下所示:

candidate_keywords_new=special_keyword+candidate_keywords_old;

最终得到新的候选关键词列表candidate_keywords_new。

2.2.5根据候选关键词列表中词语是否出现在原始文档中对候选关键词进行挑选,得到最终的关键词;

2.2.6检查关键词列表长度,如若长度小于10,进行复制添加操作。

2.3利用Bert对关键词列表进行处理,得到文档对应的词向量数组;

2.4利用训练好的DNN模型对词向量数组进行处理,得到最终的分类结果。

基于上述的训练以及测试步骤,最终获得了一个可能对特定类型文档进行二分类的方法,使用这种LDA和Bert结合的方法进行特定类别分类的准确度达到了87%以上。并且这种方法解决了直接使用深度学习模型对特定文本不适用的确定。所以本发明用于特定文本类型的二分类问题,具有预测准确率高的优点。同时当处理其他类型的文本二分类问题时,也可以使用与本发明同样的步骤,只需要对特定的有用词典和无用词典进行修改即可。

图2列出了本发明使用到的样本数据示例。每个数据文本中共有3列信息,其中content表示内容,x表示在页面中的横坐标位置,y表示在页面中的纵坐标位置。在数据使用的过程中,本发明只使用了内容信息作为分类的判断依据。

图3列出了本发明使用LDA关键词提取之后的结果示例。每个数据样本对应10个关键词。其中label列为类别信息,text列为关键词内容。

图4列出了本发明使用到的神经网络模型结构。本发明中网络的输入数据维度为(n*10*768),数据经过三层全连接层提取到特征向量,之后再经过一个池化层、一个正则化层和一个softmax分类层,得到预测结果y1和y2,其中y1表示数据为非招标数据的可能性,y2表示数据为招标数据的可能性,并且满足y1+y2=1。最后,本发明通过比较y1与y2的大小,得到最终的分类结果Y:

图5是本发明采用方法的消融实验对比结果。不同的方法分别为:(1)使用LDA模型提取关键词;(2)使用Bert转换词向量;(3)Self dictionary表示使用自定义词典;(4)Topic sorting表示针对预测主题分布排序且平均抽取;(5)Special keyword表示使用特殊关键词添加策略。评价指标使用的分别是:(1)Precision,精确率,表示预测为正的样本中真正的正样本个数;(2)Recall,召回率,表示样本正例中被正确预测的个数;(3)F1-loss,是对精确率和召回率的综合衡量;(4)Acc,准确率,表示预测值与真实值之间的一致性程度。可以看出,本发明使用的算法设计,能够很好地完成特殊文本的二分类任务,在提高准确率的同时,也缩短了运行的时间。

本发明提供了基于LDA和Bert的特定类别文本标题二分类方法,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部分均可用现有技术加以实现。

相关技术
  • 基于LDA和Bert的特定类别文本标题二分类方法
  • 一种基于改进BERT模型的特定目标情感分类方法
技术分类

06120112327031