基于BERT的语音又本二分类方法

2022-04-29 19:22宋冠谕程登张森刘威丁晓雯
计算机应用文摘 2022年18期

宋冠谕 程登 张森 刘威 丁晓雯

关键词:二分类;脚本标注;BERT预训练模型;逻辑回归

1引言

随着智能语音系统的不断发展,用户可以享受到越来越多的语音服务,包括语音点歌、语音控制家居、语音查询天气等,而语音系统中用户说法的不断更新也让用户感受到自己彷佛在与真人对话一般——有问必答。关于用户说法库的管理方式,目前的语音系统大多是通过更新后台的说法话术及相应词库来实现用户说法库的迭代。

在互联网新词喷涌而出的当下,面对每日数以万计的用户交互数据,通过传统方式刷新的用户说法库并不能及時满足用户需求,从而导致用户体验下降。因此,为了提高用户说法库的刷新效率,便需要通过搭建算法模型,对收集的语音日志进行二分类,将无意义的文本数据剔除,仅留下有利于后续优化用户说法的文本数据,让服务方对输入的用户说法快速反应,做出针对性的话术优化,及时有效地更新用户说法库,为用户提供更人性化、更精准的语音交互服务。

2文本分类概述

文本分类是指用计算机对文本集(或其他实体或物件)按照一定的分类体系或标准进行自动分类标记。它从原始文本数据中提取相关特征,并通过训练文本数据和文本特征之间的关系模型,最终构建可预测类别标签的分类模型。

文本分类任务应用广泛,根据任务类型可以划分为二分类、三分类以及多分类,涉及的任务包括问答、垃圾邮件检测、情感分析、新闻分类、用户意图分类、内容审核等。文本数据可以来自不同的来源,如网络数据、电子邮件、聊天、社交媒体、票据、保险索赔、用户评论、客户服务的问题和答案等。

如今,人们通过发明各种各样的方法来使文本分类过程自动化,以产生结果更可靠、判定更少主观的结果,并通过从文本中定位所需信息,可以用来帮助提高信息检索效率并缓解信息过载的问题。谷歌公司AI团队在2018年发布了预训练语言表示模型-BERT, Bidirectional Encoder Representationsfrom Transformers模型[1],并刷新了11项自然语言处理任务的精度,引起了人们的广泛重视。与其他语言表征模型不同的是,BERT的设计目的是通过对标记的文本上进行预训练,调节各个层的参数,学习上下文表示[2]。通过大规模通用语料和预训练任务学习通用的语言表示,该预训练模型可以为下游自然语言处理任务提供丰富的语言表示信息[3]。而Adhkari A等首次将BERT用于文本分类,通过对BERT模型进行微调以获取分类结果,并证实BERT在文本分类中依然可以取得较好的结果。

3二分类思路

3.1二分类框架

本文对收集的脱敏合法语音文本数据先进行数据预处理,包括筛除空值、数据去重及脚本标注等步骤,得到样本数据后进行人工标注,并通过BERT预训练模型完成中文文本语句的处理,提取特征信息并构建数据集。将数据集按一定比例划分为训练集和测试集后,传递至逻辑回归模型进行模型训练测试,最后将二分类测试结果与人工标注环节的内容进行对比分析。具体的二分类框架如图1所示。

3.2数据预处理

本文用于二分类分析的脱敏合法文本数据来源于某语音数据平台,共计10000条文本数据。再对收集的文本数据进行数据清洗,清除文本中的空值并去重后,本文针对用户在使用特定语音服务的需求,如语音点歌、语音控制家居等具有定向性名词的服务,需要将清洗后的文本数据做进一步的处理,避免此类服务数据参与后续的模型训练测试中。

在筛除具有定向性名词的文本数据过程中,由于语音文本的特殊性,即用户通过”我想听”“帮我打开”等句式发起特定请求时,这类文本基本趋向于“代词+动词+动词”或“动词+代词+动词”结构,且结构中存在“代词”等于“我”这一特性。因此,本文基于Python第三方库Jieba编写脚本程序,通过抓取上述结构来对文本数据进行标注,并提取标注的文本数据中“代词+动词+动词”或“动词+代词+动词”结构后接的文本信息,作为歌曲名、应用名等语音系统词库的更新语料。

在完成脚本标注的步骤后,本文对剩余的文本进行人工标注,用于后续验证二分类方法的测试结果。针对文本信息“有/无意义”类别的区分,本文基于语音业务使用场景,将句式结构完整、语义明晰等语音文本则划分至“有意义”的范畴中,而识别错误、缺词断句等语音文本划分至“无意义”的范畴中。在完成上述处理之后,数据预处理工作告一段落。

3.3模型选择

本文用于语音文本二分类的模型由两部分组成:BERT预训练模型中的BERT-base Chinese模型以及基本的逻辑回归模型。其中,BERT-base Chinese模型为BERT预训练模型中支持中文的单语言模型,尽管目前BERT模型的多语言模型可供研究维基百科上语料最大的前100种语言(包含中文),但根据谷歌AI团队的测试验证,对于中文而言,相较于MultilingualBERT-Base模型,Chinese-only BERT-Base模型训练的中文模型的结果要好上3%。因此,考虑到本文分析的文本数据仅限中文,采用中文的单语言模型会产生更有针对性的结果。

在BERT-base Chinese模型完成文本处理后,本文选用逻辑回归模型来接收处理结果。逻辑回归模型虽然被称为回归模型,但实际上是分类模型,并常用于二分类任务中,其不仅可以预测出相关类别,还可得到近似概率的预测,可以满足本文的中文文本二分类处理任务需求。

3.4模型参数处理

在将文本数据导人BERT-base Chinese预训练模型之前,需要进行进一步的预处理,预训练模型一般有三种输入,分别是input_ids(表示输入文本的tokenID)、token_type_ids(表示token属于第一句还是第二句)、attention_mask(表示需要屏蔽的token)。

在数据预处理的过程中,本文是利用tokenizer这一可选的BERT数据预处理的格式化工具,将文本数据处理成BERT的输人格式,即让每一个句子都变成对应的ID列表。然而.由于每个句子本身的长度都不一致,为了便于后续的BERT模型处理,需要对转换后的ID列表填充数据token 0,统一所有向量规格,生成输入张量input_ids。基于数据填充,句子原本的编码发生了改变,此时不能将输入张量直接导人至预训练模型中,需要生成attention—mask来告知预训练模型来屏蔽填充的token 0。此外,本文处理的文本数据均为单句文本,不存在句对任务处理,故无须生成token_type_ids。

在完成上述预处理后,将input_ids和attention—mask输入至预训练模型中,以生成隐藏层来保留输出结果。从输出结果来看,基于BERT模型的设计原理,隐藏层实际上是除了每个单词的token之外,还会在输入的每一个序列开头都插入特定的分类token([CLS])的三维张量,其中该分类token([CLS])对应的最后一个隐藏层输出被用来起到聚集整个序列表征信息的作用。因此,在处理文本分类问题的任务时,本文会忽略第一个向量之外的其他内容(第一个向量和token([ CLS])相關),把每个句子的第一个向量提取出来,通过定义预训练模型后接的神经网络,根据BERT默认的隐藏单元数是768,表示二分类的输出单元设定为2后,输入到线性层映射为二维张量,并把这个二维张量作为逻辑回归模型的输入。

3.5模型训练测试

在完成BERT-base Chinese预训练模型的参数处理,获得输出结果的二维张量后,便可以将其作为输入开始对逻辑回归模型进行训练。针对逻辑回归模型,可以直接采用Scikit Leam库的默认参数(C=1.0)进行训练。对二维张量的数据集进行划分,按照4:1的比例生成训练集和测试集后投入逻辑回归模型中进行训练测试,最后得出模型的准确率为76.40-/0。

由于参数C是正则化系数的倒数,其值越大,正则项的权重越小,模型越容易过拟合。为了获取更合适的正则化参数,本文将上述划分的训练集投入Scikit Leam库中的网格搜索模型(Grid Search Model)进行搜索,最终得到C= 5.26的最佳搜索结果。将该参数重新投入逻辑回归模型中进行训练测试,得出模型的准确率为81 .2%。

在这个二分类任务中,后续还可以通过进一步微调BERT-base Chinese预训练模型,定义优化器和损失函数来对模型进行不断地优化迭代,提高最终模型的准确率。同时,由于在谷歌AI团队发布的BERT-base Chinese模型中中文文本是以字为粒度进行切分,并没有考虑中文需要分词的特点,基于字粒度的模型训练将损失不少的特征信息,因此为提高中文文本二分类模型的准确率,还需要深入研究中文分词在BERT模型中的应用。

4结束语

语音文本的分类数据可以为平台运维人员深入了解用户的需求提供重要的参考信息,其关乎语音云平台的服务质量。本文基于BERT中的BERT-baseChinese预训练模型,进行了中文语音文本分类任务的研究测试,通过脚本标注来对数据进行预处理,并使用逻辑回归模型进行训练。实验结果表明,基于二分类方法的模型准确率达到令人满意的测试效果,并存在进一步优化提高的可能性。