一种基于汉语拼音的词表征方法及装置与流程

文档序号:18526065发布日期:2019-08-24 10:14阅读:257来源:国知局
一种基于汉语拼音的词表征方法及装置与流程

本申请涉及语言处理技术,尤其涉及一种基于汉语拼音的词表征方法及装置。



背景技术:

中文语言模型是各种中文相关的自然语言处理任务的基石,语言模型的优劣直接影响到相关任务的表现。现有的大部分中文语言模型都是采用与英语相同的方法训练的。但是,与英语这样的表音文字不同,中文属于表意文字,其信息密度远高于表音文字。



技术实现要素:

为解决上述技术问题,本申请实施例提供了一种基于汉语拼音的词表征方法及装置。

本申请实施例提供的基于汉语拼音的词表征方法,所述方法包括:

将中文序列转化为拼音形式,得到拼音序列;

基于所述拼音序列,训练语言模型;

利用训练好的语言模型,预测目标文本序列中每个汉字的词向量。

在一实施方式中,所述将中文序列转化为拼音形式,得到拼音序列,包括:

为中文序列中的每一个汉字生成对应的拼音形式,将生成的拼音以空格为间隔拼接在一起,得到拼音序列。

在一实施方式中,对于所述中文序列中的非汉字或者非拼音字母的字符,如果该字符出现在字典中,则在拼音序列中保留原来的形式,如果该字符未出现在字典中,则在拼音序列中作为未知字符处理。

在一实施方式中,所述基于所述拼音序列,训练语言模型,包括:

将输入语言模型中的拼音序列中的每一个字符编码成隐藏状态;

将字符的隐藏状态通过线性变换后得到分值,采用softmax函数将所述分值映射到(0,1)区间作为所述字符的概率分布;

将所述概率分布中的最大值所对应的标签,作为所述字符的预测标签;

基于所述字符的预测标签和真实标签计算损失函数;

基于所述损失函数迭代训练所述语言模型的参数,直到满足特定条件时停止训练。

在一实施方式中,所述利用训练好的语言模型,预测目标文本序列中每个汉字的词向量,包括:

将目标中文序列转化为拼音形式,得到目标拼音序列;

将目标拼音序列中的每一个字符编码成隐藏状态;

对于目标汉字,该目标汉字的正向向量为其最后一个字符之后的隐藏状态输出,反向向量为其第一个字符之前的隐藏状态输出;所述目标汉字的词向量包括所述正向向量和所述反向向量。

本申请实施例提供的基于汉语拼音的词表征装置,包括:

预处理单元,用于将中文序列转化为拼音形式,得到拼音序列;

训练单元,用于基于所述拼音序列,训练语言模型;

预测单元,用于利用训练好的语言模型,预测目标文本序列中每个汉字的词向量。

在一实施方式中,所述预处理单元,用于为中文序列中的每一个汉字生成对应的拼音形式,将生成的拼音以空格为间隔拼接在一起,得到拼音序列。

在一实施方式中,对于所述中文序列中的非汉字或者非拼音字母的字符,如果该字符出现在字典中,则在拼音序列中保留原来的形式,如果该字符未出现在字典中,则在拼音序列中作为未知字符处理。

在一实施方式中,所述训练单元,用于:

将输入语言模型中的拼音序列中的每一个字符编码成隐藏状态;

将字符的隐藏状态通过线性变换后得到分值,采用softmax函数将所述分值映射到(0,1)区间作为所述字符的概率分布;

将所述概率分布中的最大值所对应的标签,作为所述字符的预测标签;

基于所述字符的预测标签和真实标签计算损失函数;

基于所述损失函数迭代训练所述语言模型的参数,直到满足特定条件时停止训练。

在一实施方式中,所述预测单元,用于:

将目标中文序列转化为拼音形式,得到目标拼音序列;

将目标拼音序列中的每一个字符编码成隐藏状态;

对于目标汉字,该目标汉字的正向向量为其最后一个字符之后的隐藏状态输出,反向向量为其第一个字符之前的隐藏状态输出;所述目标汉字的词向量包括所述正向向量和所述反向向量。

本申请实施例的技术方案中,模型能为给定中文序列中的每一个字生成对应的拼音形式,把生成的拼音以空格为间隔,拼接在一起,然后用训练好的语言模型为文本序列中的每一个字符预测一个指定维度的隐藏状态。该隐藏状态就是字符的词向量,可用于输入所有的自然语言处理任务。

附图说明

图1为本申请实施例提供的生成向量的示意图;

图2为本申请实施例提供的lstm结构的示意图;

图3为本申请实施例提供的基于汉语拼音的词表征方法的流程示意图;

图4为本申请实施例提供的拼音转化示意图一;

图5为本申请实施例提供的生成词向量的示意图;

图6为本申请实施例提供的拼音转化示意图二;

图7为本申请实施例提供的基于汉语拼音的词表征装置的结构组成示意图。

具体实施方式

为便于理解本申请实施例的技术方案,以下对本申请实施例的相关技术进行说明。

●语言模型

很多实验表明,预训练语言模型是众多自然语言处理任务的基石。好的语言模型对自然语言处理模型的精度能有大幅提升。早期的自然语言处理任务中,研究者使用one-hot或者tf-idf算法来将词表示转化为数值形式,这样的方式在词库数量比较大的情况下效果不好。

2013年,mikolov等人提出了word2vec模型,在大规模文本上预训练语言模型,为每个单词生成了一个指定维度的静态词向量。

之后一系列类似的模型,例如glove,fasttext,bpemb等,都采用了类似的思想。这些模型的出现极大的促进了自然语言处理任务的发展。

但是,这些模型的缺陷也显而易见,其中最主要的就是忽略上下文和无法处理词的歧义。为解决这个问题,研究者开始探索利用循环神经网络结构进行语言模型的预训练,为每一个词根据前后文生成词向量。2018年,alennlp提出了elmo模型,采用lstm结构对大规模语料进行双向语言模型训练,并利用训练好的语言模型生成词向量。同年,google提出了bert模型刷新了几乎所有的自然语言处理任务的记录。

几乎所有的中文语言模型都是采用以上方法训练的,这样的缺陷也很明显,没有考虑中文的语言特性。近年来,也有一些专门针对中文而提出的语言模型,为中文的自然语言处理相关任务带来了很大帮助。

●汉语拼音语言模型

汉语拼音,简称拼音,是一种以拉丁字母为现代标准汉语标音的方案,为中文罗马拼音的国际标准规范。同时,拼音输入法也是现在最主流的中文输入方法。过去,对拼音语言模型研究的主要目的有以下几点:

1.在拼音输入时,根据已输入序列,预测接下来最可能出现的序列。

2.给定一个有错误的拼音序列,预测正确的序列,为用户拼音输入提供一定的容错能力。

3.将一段拼音序列准确地转化为中文汉字。

经过调查,未发现有将汉语拼音语言模型用于中文词向量生成的相关研究。为此,提出了本申请实施例的以下技术方案,本申请实施例的技术方案旨在通过将大规模中文语料转化为拼音形式,基于转化后的拼音语料,用循环神经网络进行双向字符级语言模型训练。训练好的语言模型可应用于所有的自然语言处理任务。例如,在序列标注任务中,一个汉字的双向向量表示分别是其拼音表示的首字母和末字母的隐藏状态输出。

该语言模型对于单个汉字生成的向量表示是根据前后语境生成的。其中,正向模型生成的向量包含了前文信息,反向模型生成的向量包含了后文信息。在实际应用中,通常把正反双向模型生成的向量连接在一起。

实验证明,该模型能够有效地为每个汉字生成符合语境的向量表示,很大程度上解决了中文歧义问题。图1举例说明了模型为“北”字在不同语境下生成向量的差异。

为了能够更加详尽地了解本申请实施例的特点与技术内容,下面结合附图对本申请实施例的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本申请实施例。以下先对本申请实施例中涉及到的相关概念进行说明:

○词向量:单词或单字的向量表征。

○语言模型:语言模型是借由一个概率分布,给定词序s=w_1,w_2,…,w_k的概率p(s)模型。

○循环神经网络:循环神经网络是一种解决序列问题的网络结构,有rnn,lstm,gru等多种形态。本申请的一种可选实施方式中,模型训练使用的是lstm,其结构如图2所示,输入门决定数据是否能传入区块,遗忘门决定是否将区块中记住的信息忘掉,输出门决定是否将区块中的信息输出。其中,lstm单元在t时刻更新的公式如下:

it=σ(wiht-1+u1xt+bi)(1)

ft=σ(wfht-1+ufxt+bf)(2)

ot=σ(woht-1+uoxt+bo)(5)

ht=ot⊙tanh(ct)(6)

○反向传播:反向传播算法的作用是对网络中所有权重计算损失函数的梯度,然后将梯度会反馈给优化器,用来更新权值以最小化损失函数,从而让模型能够拟合数据的分布。

○交叉熵:交叉熵是经常在神经网络中使用的一种损失函数,给定序列p表示真实标记的分布,序列q则为训练后的模型的预测标记,交叉熵损失函数可以衡量p与q的相似性,公式如下:

○深度语言模型:深度语言模型是利用深度学习模型搭建encoder-decoder结构来训练的语言模型。其中,encoder将文字编码为隐藏状态,decoder将隐藏状态转化为字符数量长度的张量,来解码生成字符。通过反向传播算法最小化交叉熵损失来获得最优语言模型。

图3为本申请实施例提供的基于汉语拼音的词表征方法的流程示意图,如图3所示,所述基于汉语拼音的词表征方法包括以下步骤:

步骤301:将中文序列转化为拼音形式,得到拼音序列。

这里,中文序列为语言模型的训练语料。

本申请实施例中,为中文序列中的每一个汉字生成对应的拼音形式,将生成的拼音以空格为间隔拼接在一起,得到拼音序列。进一步,对于所述中文序列中的非汉字或者非拼音字母的字符,如果该字符出现在字典中,则在拼音序列中保留原来的形式,如果该字符未出现在字典中,则在拼音序列中作为未知字符处理。

具体实现时:语言模型的训练语料采用中文维基百科数据。原始数据解析后转为纯文本。对文本转为拼音的处理方式为:简体中文,繁体中文转化为带数字音调的拼音,其他字符(标点、数字等)保留原来的形式。图4是一个转化示例。在大规模的文本中,会存在很多非中文或者非拼音字母的字符。在预处理的时候,建立了一个字典,其中包括26个英文字母,常见标点符号,数字,不在词典中的字符被当作未知字符(unk)处理。

步骤302:基于所述拼音序列,训练语言模型。

本申请实施例中,采用以下方式训练语言模型:1)将输入语言模型中的拼音序列中的每一个字符编码成隐藏状态;2)将字符的隐藏状态通过线性变换后得到分值,采用softmax函数将所述分值映射到(0,1)区间作为所述字符的概率分布;3)将所述概率分布中的最大值所对应的标签,作为所述字符的预测标签;4)基于所述字符的预测标签和真实标签计算损失函数;5)基于所述损失函数迭代训练所述语言模型的参数,直到满足特定条件时停止训练。

具体实现时:lstm模型将输入的拼音序列中的每一个字符编码成隐藏状态。对于t时刻的字符xt,其条件概率p(xt|x0:t-1),可以近似等于其隐藏状态ht。在lstm中,由公式(4)可知,cellstatect,中存有之前序列的信息,当前字符的条件概率可近似写为:

其中,θ代表模型的所有参数。特别地,在t=0时刻,h-1和c-1初始化为0。

字符被编码为隐藏状态ht后,隐藏状态通过线性转换后变为分值,然后采用softmax函数将分值映射到(0,1)区间作为字符预测值的概率分布,线性层的计算可写为以下公式:

p(xt|ht;v)=softmax(vht+b)(9)

其中,v和b是权重和偏置。

在获得当前字符的概率分布后,其解码生成的字符是概率分布中最大值所对应的字符。通过计算交叉熵损失和反向传播算法优化,模型参数迭代更新,当满足特定条件时,模型停止训练。

步骤303:利用训练好的语言模型,预测目标文本序列中每个汉字的词向量。

本申请实施例中,采用以下方式预测目标文本序列中每个汉字的词向量:1)将目标中文序列转化为拼音形式,得到目标拼音序列;2)将目标拼音序列中的每一个字符编码成隐藏状态;3)对于目标汉字,该目标汉字的正向向量为其最后一个字符之后的隐藏状态输出,反向向量为其第一个字符之前的隐藏状态输出;所述目标汉字的词向量包括所述正向向量和所述反向向量。

具体实现时:对于给定中文序列,第一步生成其拼音表示形式,即拼音序列,预训练模型的encoder为拼音序列中每一个字符预测一个隐藏状态。对于汉字(也称为词)w,其正向向量为其最后一个字符之后的隐藏状态输出,反向向量为其第一个字符之前的隐藏状态输出。具体地,给定拼音序列spinyin=p1,p2…pt,对于第i个汉字wi,li表示其拼音长度,si∈[1,t-li]为wi拼音形式在拼音序列中的起始位置,模型对wi生成的向量表示为:

其中,hf和hb分别代表正向模型和反向模型生成的隐藏状态。图5所示是“春眠不觉晓,”中的“不”字向量生成的示意。

在实际应用中,为了让生成的词向量包含前后文的信息,可以把正反模型生成的隐藏状态连接在一起,可表示为以下公式:

例如,对于单字wi,其正向模型和反向模型的输出分别为rf(wi)和rb(wi),纬度都为h=1024,则其正向反向连接表示为[rf(wi),rb(wi)],纬度为2048。这样生成的词向量可应用与各种自然语言处理任务,例如命名实体识别,机器翻译,智能对话,文本情感分析,文本分类等。

需要说明的是,在准备语言模型的训练语料时,需要先将中文序列转化为拼音序列。其中,转化方法不限于上述列举的形式,也包括其他形式,例如图6给出的形式。

本申请实施例的技术方案,首先将大规模中文语料转化为拼音形式,利用循环神经网络结构搭建encoder-decoder模型,来训练基于汉语拼音的语言模型,然后将训练完成的语言模型中的encoder的输出作为对于中文汉字的向量表示。其中,在用拼音训练语言模型时,可选的神经网络结构不限于具体网络结构,不限于具体的模型参数。训练好的语言模型可用于各种中文相关的自然语言处理任务。

图7为本申请实施例提供的基于汉语拼音的词表征装置的结构组成示意图,如图7所示,所述基于汉语拼音的词表征装置包括:

预处理单元701,用于将中文序列转化为拼音形式,得到拼音序列;

训练单元702,用于基于所述拼音序列,训练语言模型;

预测单元703,用于利用训练好的语言模型,预测目标文本序列中每个汉字的词向量。

在一实施方式中,所述预处理单元701,用于为中文序列中的每一个汉字生成对应的拼音形式,将生成的拼音以空格为间隔拼接在一起,得到拼音序列。

在一实施方式中,对于所述中文序列中的非汉字或者非拼音字母的字符,如果该字符出现在字典中,则在拼音序列中保留原来的形式,如果该字符未出现在字典中,则在拼音序列中作为未知字符处理。

在一实施方式中,所述训练单元702,用于:

将输入语言模型中的拼音序列中的每一个字符编码成隐藏状态;

将字符的隐藏状态通过线性变换后得到分值,采用softmax函数将所述分值映射到(0,1)区间作为所述字符的概率分布;

将所述概率分布中的最大值所对应的标签,作为所述字符的预测标签;

基于所述字符的预测标签和真实标签计算损失函数;

基于所述损失函数迭代训练所述语言模型的参数,直到满足特定条件时停止训练。

在一实施方式中,所述预测单元703,用于:

将目标中文序列转化为拼音形式,得到目标拼音序列;

将目标拼音序列中的每一个字符编码成隐藏状态;

对于目标汉字,该目标汉字的正向向量为其最后一个字符之后的隐藏状态输出,反向向量为其第一个字符之前的隐藏状态输出;所述目标汉字的词向量包括所述正向向量和所述反向向量。

本领域技术人员应当理解,图7所示的基于汉语拼音的词表征装置中的各单元的实现功能可参照前述基于汉语拼音的词表征方法的相关描述而理解。图7所示的基于汉语拼音的词表征装置中的各单元的功能可通过运行于处理器上的程序而实现,也可通过具体的逻辑电路而实现。

本申请实施例所记载的技术方案之间,在不冲突的情况下,可以任意组合。

在本申请所提供的几个实施例中,应该理解到,所揭露的方法和智能设备,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。

上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。

另外,在本申请各实施例中的各功能单元可以全部集成在一个第二处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1