发明内容
本发明针对实际应用中的对同音字噪声过滤的需求以及现有技术不能很好解决同音字噪声的现状,提出一种中文字符和拼音相结合的词向量表示方法。本发明方法通过在文本的表示即文本向量化阶段融合了中文字符和拼音,由此得到包含同音字信息的词向量。在后续模型的处理过程中便可根据同音字信息来识别同音字,从而降低同音字噪声的影响。
为了实现上述发明目的,本发明具体采取如下技术方案:
第一方面,本发明提供了一种中文字符和拼音相结合的词向量表示方法,其步骤如下:
S11:使用拼音转换工具将待转换为词向量表示的中文文本中每个中文字符转化为拼音;
S12:针对中文文本中每个中文字符,利用预训练的中文字符词嵌入模型,得到中文字符的词向量表示x1;
S13:针对中文文本中每个中文字符的拼音,利用预训练的拼音词嵌入模型,得到拼音的词向量表示x2;
S14:针对中文文本中每个中文字符,融合其对应的中文字符的词向量表示和拼音的词向量表示,得到字符融合表示向量x=[x1,x2]。
作为优选,所述中文字符词嵌入模型和拼音词嵌入模型各自独立进行训练,使其能分别将中文字符和拼音转换为词向量表示。
作为优选,所述中文字符词嵌入模型和拼音词嵌入模型为基于Skip-Gram的word2vec模型,模型输入数据预先转换为one-hot向量表示。
作为优选,每个中文字符可预先转换为所述字符融合表示向量,并将中文字符和字符融合表示向量关联保存于字典中;待转换为词向量表示的中文字符,通过查询字典的方法转换为字符融合表示向量。
第二方面,本发明提供了一种基于如第二方面任一方案所述词向量表示方法的不良信息文本分类方法,其步骤如下:
S21:针对包含不良信息文本和非不良信息文本两类样本的训练数据,利用所述词向量表示方法将每个样本转换为字符融合表示向量;
S22:利用训练数据对文本分类模型进行训练,使其能准确输出样本属于不良信息文本或者非不良信息文本的二分类标签;
S23:针对待分类的目标信息文本,利用所述词向量表示方法将其转换为字符融合表示向量,并输入训练后的文本分类模型中,输出其分类结果。
作为优选,所述的文本分类模型为TextCNN、TextRNN、TextRNN_Att、FastText、Transformer或DPCNN模型。
第三方面,本发明提供了一种中文字符和拼音相结合的词向量表示装置,其包括存储器和处理器;
所述存储器,用于存储计算机程序;
所述处理器,用于当执行所述计算机程序时,实现如第一方面任一项方案所述的中文字符和拼音相结合的词向量表示方法。
第四方面,本发明提供了一种计算机可读存储介质,所述存储介质上存储有计算机程序,当所述计算机程序被处理器执行时,实现如第一方面任一项方案所述的中文字符和拼音相结合的词向量表示方法。
第五方面,本发明提供了一种不良信息文本分类装置,其包括存储器和处理器;
所述存储器,用于存储计算机程序;
所述处理器,用于当执行所述计算机程序时,实现如第二方面任一方案所述的不良信息文本分类方法。
第六方面,本发明提供了一种计算机可读存储介质,其特征在于,所述存储介质上存储有计算机程序,当所述计算机程序被处理器执行时,实现如第二方面任一方案所述的不良信息文本分类方法。
本发明与现有技术相比有如下优点:
本发明可以用于但不限于不良信息的过滤,在不影响对正常使用的同音字处理的前提下,提高模型对同音字噪声的处理能力。实验证明了改进的词向量表示方法的有效性。本发明通过中文字符和拼音相合的方法,在可区分同音字的基础上,建立了同音字之间的关系信息,从而能够很好地处理同音字噪声。这是传统文本词向量方法所不具有的。
具体实施方式
下面将结合附图对本发明加以详细说明,应指出的是,所描述的实施例仅便于对本发明的理解,而对其不起任何限定作用。
本发明后续描述用到的变量如下:
x1:中文字符经过词嵌入模型训练得到的词嵌入向量表示;
x2:拼音经过词嵌入模型训练得到的词嵌入向量表示;
x:融合中文字符和拼音所得到的向量表示,即本发明提出的字符的融合表示向量x=[x1,x2]
如图1所示,一种中文字符和拼音相结合的词向量表示方法,包括步骤:
S11:使用拼音转换工具将待转换为词向量表示的中文文本中每个中文字符转化为拼音;
S12:针对中文文本中每个中文字符,利用预训练的中文字符词嵌入模型,得到中文字符的词向量表示x1;
S13:针对中文文本中每个中文字符的拼音,利用预训练的拼音词嵌入模型,得到拼音的词向量表示x2;
S14:针对中文文本中每个中文字符,融合其对应的中文字符的词向量表示和拼音的词向量表示,得到字符融合表示向量x=[x1,x2]。
由此,得到的中文文本的二维向量表示作为TextCNN模型的输入,去实现具体的文本分类工。以下详细介绍各部分的实现过程。
在本发明的一个实施例中,数据采用包含着大量同音字噪声的直播弹幕数据。平台通过用户的发帖行为模型获取了正常文本9.4万条,不良文本9.4万条,总样本18.8万条,将其中的90%作为训练样本,剩下的10%作为测试样本。由于本发明是提出了一种词向量方法,在具体的实例中将采用多个文本分类模型来验证该词向量方法,具体分类模型有:TextCNN、TextRNN、TextRNN_Att(加入Attention机制的TextRNN模型)、FastText、Transformer、DPCNN。当然,本发明在具体的应用上包括但不限于这些文本分类模型。通过本发明生成的词向量表示也可以直接作为其他文本分类模型的是输入。本实施例采用PyTorch深度学习框架实现,但是模型的构建和训练同样可以采用其它深度学习框架。
下面将参考附图进一步介绍本发明的实施例的具体实现过程。
首先,使用python中的pypinyin库可以很方便的将中文字符转化为相应的拼音。
接下来就是训练中文字符和拼音的词嵌入向量,因为数据来源是直播弹幕,所以没有选用已经训练好的模型word2vec,而是从零开始学习词嵌入。同时这里的中文字符和拼音采用相同的训练模型和参数。输入的数据需要转化为可以被神经网络识别的形式。这里用one-hot向量来表示单个字符比如,现有句子“门外有只狗在叫”,就可以分别用one-hot向量表示其中的字符为:
“门”:[1,0,0,0,0,0,0];
“外”:[0,1,0,0,0,0,0];
“有”:[0,0,1,0,0,0,0];
“只”:[0,0,0,1,0,0,0];
“狗”:[0,0,0,0,1,0,0];
“在”:[0,0,0,0,0,1,0];
“叫”:[0,0,0,0,0,0,1]。
得到的one-hot向量就可以通过Skip-Gram模型来训练。这里的Skip-Gram模型是word2vec的一种实现方法,它是通过当前输入词来预测上下文的一种方法。还是用“门外有只狗在叫”举例说明Skip-Gram模型。第一步,选择句子中间的一个词作为输入词,例如“门外有只狗在叫”中选择“狗”作为输入词;第二步,有了输入词,再定义一个叫做skip_window的参数,它代表着从当前输入词的一侧(左边或右边)选取词的数量。如果设置skip_window=2,那么最终获得窗口中的词就是[“有”,“只”,“狗”,“在”,“叫”]。在前面的步骤中得到了输入词的one-hot向量表示,这里将“狗”的向量作为输入,周围词的向量作为输出。这样,神经网络基于这些训练数据将会输出一个概率分布,这个概率代表着词典中的每个词是输出词的可能性。这里可以举例说明,在训练数据集通过神经网络之后,训练样本对(“北京”,“上海”)比(“北京”,“西瓜”)出现的次数多,那么当模型训练完成之后,给定一个输入词“北京”作为输入,输出结果中“上海”要比“西瓜”的概率更高。通过该步骤得到了中文字符和拼音的词嵌入向量x1和x2,这里的向量维度可以自行指定,这里设定为300。
然后就是融合中文字符和拼音,这也是本发明的关键。这里利用前面得到的中文字符和拼音的词嵌入向量表示x1和x2,通过拼接的方法得到融合后的向量即x=[x1,x2],在具体的实现过程中这一步骤可以通过numpy.hstack函数实现。这样就得到600维的向量x。之所以这么做,是因为如前文所说,当不良信息的发布者通过同音字噪声规避检测时,现有的检测方法和预处理方法无法很好的处理这一问题,而直接转化为拼音又会丢失掉部分信息。在本发明中通过拼接中文字符和拼音的词嵌入向量得到融合二者信息的词嵌入向量表示,从而很好地降低同音字噪声对文本分类模型的影响。
经过上述转化过程,即可得到词嵌入向量,在进行文本分类时待分类文本可经过前述的词向量表示方法转换为字符融合表示向量后输入分类模型中。另外,也可以将不同字符的词嵌入向量保存为字典的形式,即相应的词为键,其对应的词嵌入向量为值,这样通过查询字典的方法可以将整个中文文本转化为二维向量表示,该二维向量便可直接用作具体文本分类模型的输入。
基于文本分类模型进行不良信息文本分类方法的步骤如下:
S21:针对包含不良信息文本和非不良信息文本两类样本的训练数据,利用前述的词向量表示方法将每个样本转换为字符融合表示向量。
S22:利用训练数据对文本分类模型进行训练,训练时采用梯度下降优化算法,通过最小化交叉熵损失函数获得最优模型参数,使其能准确输出样本属于不良信息文本或者非不良信息文本的二分类标签。
S23:针对待分类的目标信息文本,利用前述的词向量表示方法或者字典查询方法,将其转换为字符融合表示向量,并输入训练后的文本分类模型中,输出其分类结果。
为了更好地说明该发明,在本实施例中选用了多种文本分类模型来验证本发明提出的词向量方法的作用。其中包括TextCNN、TextRNN、TextRNN_Att(加入Attention机制的TextRNN模型)、FastText、Transformer、DPCNN模型。同时本实施例中还加入了中文词向量中较好的搜狗中文词向量、自训练的单独中文字符词向量和自训练的单独拼音词向量作为对比实验,结果如图2、3所示。
图2中测试数据为一般文本,这里是为了测试本发明提出的词向量表示方法的通用性。如图2所示,所测试的六种模型,本发明提出的词向量表示方法,同自训练中文字符和拼音表现接近,甚至在大多数模型下,本发明提示的词向量表示方法的效果要好于另外几种方法。值得一提是自训练的词向量方法包括本发明提出的方法都要远远好于搜狗中文词向量。这是因为测试的输入来自特定的直播平台弹幕,像搜狗中文词向量较为通用词向量,不能完全地体现特定领域内输入词与上下文之间的关系。在这一点,自训练的词向量方法因为采用相同的数据,所以用此类方法得到的词向量在具体模型的表现上要更好。
图3中测试数据为添加同音字噪声后的数据,从图3中可以看出,在添加同音字噪声好,搜狗中文词向量和自训练中文字符词向量的预测准确率在0.6左右,而自训练拼音词向量和本发明提出的词向量方法的预测准确率在0.93左右,要远远好于前面两种方法。虽然这里自训练拼音向量和本发明的提出词向量方法在具体模型的表现上相近,但是通过图2可以知道在一般文本的在表现上,本发明提出的词向量方法表现更好。更近一步,当所采用的测试数据中完全没有同音字噪声,所以的同音字都是中文中的正常使用且大量存在,由于拼音词向量将所有同音字视为相同,必然会导致数据信息丢失,也会导致使用该词向量方法的模型的预测准确率下降,而本发明提出的词向量方法由于结合了中文字符和拼音,所以其受同音字是否大量存在或者同音字是否为噪声的影响不大,故而本发明提出的词向量方法更有效。
通过前面的两组实验分别说明了:一般文本作为输入时,本发明提出的词向量方法与其他常见自训练词向量方法表现相近且好于预训练的搜狗中文词向量;当添加同音字噪声作为输入时,本发明提出的词向量方法比其他词向量方法更灵活,更有效。综合这两组实验的结果证明的本发明的有效性。
在另一实施例中,还可以进一步提供一种中文字符和拼音相结合的词向量表示装置,其包括存储器和处理器;
所述存储器,用于存储计算机程序;
所述处理器,用于当执行所述计算机程序时,实现如前述方案中给出的中文字符和拼音相结合的词向量表示方法。
在另一实施例中,还可以进一步提供一种计算机可读存储介质,所述存储介质上存储有计算机程序,当所述计算机程序被处理器执行时,实现如前述方案中给出的中文字符和拼音相结合的词向量表示方法。
在另一实施例中,还可以进一步提供一种不良信息文本分类装置,其包括存储器和处理器;
所述存储器,用于存储计算机程序;
所述处理器,用于当执行所述计算机程序时,实现如前述方案中给出的不良信息文本分类方法。
在另一实施例中,还可以进一步提供一种计算机可读存储介质,其特征在于,所述存储介质上存储有计算机程序,当所述计算机程序被处理器执行时,实现如前述方案中给出的不良信息文本分类方法。
需要注意的是,存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital Signal Processing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。当然,还装置中还应当具有实现程序运行的必要组件,例如电源、通信总线等等。
以上显示和描述了本发明的基本原理和主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。