文本分类方法、智能终端及计算机可读存储介质
技术领域
本发明涉及人工智能领域,尤其涉及文本分类方法、智能终端及计算机可读存储介质。
背景技术
随着工业化进程的不断发展,人工智能特别是深度学习也在飞速发展。其中深度学习在图像文字识别以及分类领域,例如网页内容分析和电商评论挖掘上有广泛应用。目前基于深度学习的文本分类方法由于其对于词这一构成文本最小的有意义的单元做了嵌入式向量表示,使分类模型的分类性能得到了很大提升。但这些方法存在如下问题:同一个词汇在不同用法和含义上会产生很大变化,甚至意思完全不同,进而导致文本分类不准确,模型分类性能明显下降。
发明内容
本发明的主要目的在于提供一种文本分类方法、智能终端及计算机可读存储介质,旨在解决目前分类时词语含义多样所导致的分类性能下降的技术问题。
为实现上述目的,本发明提供一种文本分类方法,包括以下步骤:
获取预设训练语料中每个文本对应的文本类别以及预设训练语料中所有文本唯一对应的词汇表;
通过预测模型和每个文本对应的文本类别对所述词汇表中的每个词对应的词向量进行训练,得到训练好的每个词在用于体现类别时的类别向量和在用于表示环境信息时的环境向量;
根据训练好的每个词的类别向量和环境向量构建分类器,并通过所述分类器获取待分类文本中的词在不同文本类别对应的分类概率,以通过所述待分类文本中的词在不同文本类别对应的分类概率进行分类。
可选地,所述通过预测模型和每个文本对应的文本类别对所述词汇表中的每个词对应的词向量进行训练,得到训练好的每个词在用于体现类别时的类别向量和在用于表示环境信息时的环境向量的步骤包括:
在每个文本中通过滑动窗口以选择窗口区域;
在每选择到窗口区域时,获取选择的窗口区域内包含的环境词对应的环境向量,并将获取的环境向量作为输入向量输入至所述预测模型中,以预测出与所述环境词相关的中心预测词在体现类别时的类别向量;
通过每个文本对应的文本类别、每个文本对应每个窗口区域的环境词对应的环境向量以及对应预测出的类别向量计算损失函数,并在所述损失函数优化后从优化好的损失函数中获取训练好的每个词在用于体现类别时的类别向量和用于表示环境信息时的环境向量。
可选地,所述根据训练好的每个词的类别向量和环境向量构建分类器,并通过所述分类器获取待分类文本中的词在不同文本类别对应的分类概率的步骤包括:
在构建分类器时,基于注意力机制,根据训练好的每个词的环境向量获取每个词在用于形成上下文时的注意力向量;
根据训练好的每个词的类别向量和获取的注意力向量评估每个词在所述预设训练语料中的平均分类区分度,并筛除平均分类区分度小于预设阈值的词,以根据筛除后的词构建分类器中的分类词汇表;
根据所述分类器中的分类词汇表查找出所述待分类文本中与当前文本分类有关的词,并通过分类器获取所述与当前文本分类有关的词在不同文本类别对应的分类概率。
可选地,所述基于注意力机制,根据训练好的每个词的环境向量获取每个词在用于形成上下文时的注意力向量的步骤包括:
将训练好的每个词的所有环境向量对应相加,得到每个词在用于形成上下文时的注意力向量。
可选地,所述根据训练好的每个词的类别向量和获取的注意力向量评估每个词在所述预设训练语料中的平均分类区分度的步骤包括:
依次使用Softmax和交叉熵函数对训练好的每个词的类别向量和获取的注意力向量进行处理,得到每个词在给定不同上下文时对应的分类区分度;
对每个词在给定不同上下文时对应的分类区分度进行求和,以获取每个词在所有上下文时对应的分类区分度,并获取每个词在所述预设训练语料中的出现次数,以将每个词在所有上下文时对应的分类区分度与对应出现次数相除的结果作为评估出的每个词在所述预设训练语料中的平均分类区分度。
可选地,所述依次使用Softmax和交叉熵函数对训练好的每个词的类别向量和获取的注意力向量进行处理,得到每个词在给定不同上下文时对应的分类区分度的步骤包括:
通过公式:计算每个词在给定不同上下文时的分类概率,其中pl为第i个词在给定上下文所属文本类别为l时的分类概率,l∈[1,K],K为文本类别总数,i为词汇表中词的序号,vs(wi)为第i个词的注意力向量,vt(wi)为训练好的第i个词的所有类别向量中属于第t个类别时的类别向量,vl(wi)为第i个词在第l个文本类别的文本中时的实际类别向量;
将每个词在给定不同上下文时的分类概率以及不同上下文对应不同文本时的文本类别作为交叉熵函数的参数输入至公式中,以计算每个词在给定不同上下文时对应的分类区分度,其中l(wi)为第i个词在给定上下文所属文本类别为l时的分类区分度,cd(l)为文本cd的第l维分量,u(pi)为该词的分类概率。
可选地,所述根据所述分类器中的分类词汇表查找出所述待分类文本中与当前文本分类有关的词的步骤包括:
将同时在所述待分类文本和所述分类词汇表中的词作为与当前文本分类有关的词。
可选地,所述通过所述待分类文本中的词在不同文本类别对应的分类概率进行分类的步骤包括:
根据待分类文本中的词在不同文本类别对应的分类概率获取待分类文本在不同文本类别的分类概率;
选择最大分类概率对应的文本类别作为待分类文本的分类结果。
此外,为实现上述目的,本发明还提供一种智能终端,所述智能终端包括:通信模块、存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上所述的文本分类方法的步骤。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的文本分类方法的步骤。
本发明实施例提出的一种文本分类方法、智能终端及存储介质,通过获取预设训练语料中每个文本对应的文本类别以及预设训练语料中所有文本唯一对应的词汇表;通过预测模型和每个文本对应的文本类别对所述词汇表中的每个词对应的词向量进行训练,得到训练好的每个词在用于体现类别时的类别向量和在用于表示环境信息时的环境向量;根据训练好的每个词的类别向量和环境向量构建分类器,并通过所述分类器获取待分类文本中的词在不同文本类别对应的分类概率,以通过所述待分类文本中的词在不同文本类别对应的分类概率进行分类。其中提出了同一个词在进行类别区分时的类别向量的概念,能够评估待分类文本中的词在给定环境信息的情况下对应的概率,因此考虑了同一个词的不同含义,使得模型的分类结果更为准确。此外还结合了注意力机制进行分类器的构建,能够保证模型能够找到与分类密切相关的词,减少了噪声干扰。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的结构示意图;
图2为本发明文本分类方法一实施例的流程示意图;
图3为本发明文本分类方法另一实施例中步骤S30的细化流程示意图;
图4为本发明文本分类方法基于注意力机制获取平均分类区分度的过程示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
请参看图1,图1为本发明所提供的智能终端的硬件结构示意图。所述智能终端可以是服务器,可以是设备终端,例如计算机,所述智能终端可以包括通信模块10、存储器20以及处理器30等部件。在所述智能终端中,所述处理器30分别与所述存储器20以及所述通信模块10连接,所述存储器20上存储有计算机程序,所述计算机程序同时被处理器30执行,所述计算机程序执行时实现下述方法实施例的步骤。
通信模块10,可通过网络与外部通讯设备连接。通信模块10可以接收外部通讯设备发出的请求,还可以发送请求、指令及信息至所述外部通讯设备。所述外部通讯设备可以是其他功能设备或其他智能终端,例如其他服务器等等。
存储器20,可用于存储软件程序以及各种数据。存储器20可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如预设训练语料的获取或者分类器的构建)等;存储数据区可包括数据库,存储数据区可存储根据智能终端的使用所创建的数据或信息等。此外,存储器20可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
处理器30,是智能终端的控制中心,利用各种接口和线路连接整个智能终端的各个部分,通过运行或执行存储在存储器20内的软件程序和/或模块,以及调用存储在存储器20内的数据,执行智能终端的各种功能和处理数据,从而对智能终端进行整体监控。处理器30可包括一个或多个处理单元;可选地,处理器30可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器30中。
尽管图1未示出,但上述智能终端还可以包括电源控制模块,用于与电源连接,保证其他部件的正常工作。上述智能终端还可以包括显示模块,用于提取存储器20中的数据,并显示出智能终端的系统界面、与用户的交互界面以及分类器分类情况和/或预测模型训练过程中产生的数据信息。本领域技术人员可以理解,图1中示出的智能终端结构并不构成对智能终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
基于上述硬件结构,提出本发明方法各个实施例。
参见图2,在本发明文本分类方法的一实施例中,所述方法包括:
步骤S10,获取预设训练语料中每个文本对应的文本类别以及预设训练语料中所有文本唯一对应的词汇表;
其中预设训练语料中包括多个文本,每个文本以向量序列的形式进行表示,其中的向量是指文本中的词转化为的词向量。每个文本还对应有一个文本类别,该文本类别可以以K维的one-hot向量的形式进行表示,K为文本类别总数,文本类别与文本所属的类标签有关,两者表示的内容一致,例如该类标签表示文本属于新闻类或者科技类。可以设定文本类别C={c1,c2,…,ck},给定的训练语料为D={dn,cdn},其中dn是文本,cdn是该文本的文本类别。
可以理解的是,文本由多个词构成,不同文本中词可以存在相同的也可能存在不同的,同时同一个词在同一个或不同文本中表示的含义也可以不同,为此可以预先收集预设训练语料中涉及的所有的词以形成唯一一份词汇表,帮助后续进行分析处理。
步骤S20,通过预测模型和每个文本对应的文本类别对所述词汇表中的每个词对应的词向量进行训练,得到训练好的每个词在用于体现类别时的类别向量和在用于表示环境信息时的环境向量;
在本实施例中,预测模型以改造后的词向量skipgram模型进行详细说明,其他预测模型训练和使用情况类似,可以参考执行在此不再展开。以步骤S10中的设定为基础,同时还可以设定W是语料D的词汇表,词汇w∈W,对此可以设定w对应的2类词向量分别是v(w),vl(w),l=1,……K,K是文本类别数,其中v(w)为词汇w的环境向量,用来表示某个词在训练语料中出现的上下文环境,该词与文本类别无关。vl(w)为类别向量,用来表示词w在文本类别l中对应的向量表示。实际训练时可以将环境向量作为模型的输入向量输入至预测模型中,得到在指定环境向量对应的环境信息的情况下文本的中心预测词和其对应在不同文本类别时的类别向量。然后将得到的类别向量与给定环境信息的中心实际词或者实际结果比对计算损失函数,以损失函数最小化进行优化训练。具体优化训练过程可以通过从文本中移动窗口得到每次训练优化所需的环境向量和类别向量实现。
可选地,所述步骤S20的步骤可以包括:
步骤S21,在每个文本中通过滑动窗口以选择窗口区域;
步骤S23,在每选择到窗口区域时,获取选择的窗口区域内包含的环境词对应的环境向量,并将获取的环境向量作为输入向量输入至所述预测模型中,以预测出与所述环境词相关的中心预测词在体现类别时的类别向量;
步骤S23,通过每个文本对应的文本类别、每个文本对应每个窗口区域的环境词对应的环境向量以及对应预测出的类别向量计算损失函数,并在所述损失函数优化后从优化好的损失函数中获取训练好的每个词在用于体现类别时的类别向量和用于表示环境信息时的环境向量。
可以设S(wi)=w-m+i,w-m+1+i,…wm-1+i,wm+i是文本以向量序列进行表示中的以wi为中心的一个窗口长度为m的窗口区域,其中可以称中心wi为中心实际词或目标词,窗口区域的其他词或者说中心实际词两端的词为wi的环境词。需要说明的是,wi的环境词也可以包含wi本身。在每进行一次训练时可以通过滑动窗口来替换中心词和环境词,达到更新模型输入输出的目的。通过改造后的词向量skipgram模型输出词对应在不同文本类别时的类别向量能够表示某个词在给定某一具体文本类别的上下文环境的情况下相应类别的概率。上述通过环境向量和类别向量计算损失函数以同步训练优化的过程中计算得到的损失函数如下:
其中f(wj)是通过负采样方法,针对wj获得的负样本词汇集合,这里通常可以取f(wj)为按频次成正比从词汇表中随机抽取5个非wj的词,vcd(wi)为词汇wi的环境向量,vs(wj)为预测出的词汇wj的类别向量,vs(wr)为词汇wr属于实际文本类别的类别向量。
在得到损失函数后可以基于每个词的2类词向量(环境向量和类别向量)和每篇文本对应的文本类别,通过随机梯度下降方法来使损失函数最小化,以优化损失函数中的参数,即2类词向量参数。当达到优化条件,例如训练迭代次数达到或损失范围在预设值内时可以停止训练,确定完成参数训练,从而将最终训练好的损失函数中的因子输出为训练好的用于体现类别时的类别向量和用于表示环境信息时的环境向量。
步骤S30,根据训练好的每个词的类别向量和环境向量构建分类器,并通过所述分类器获取待分类文本中的词在不同文本类别对应的分类概率,以通过所述待分类文本中的词在不同文本类别对应的分类概率进行分类。
可以理解的,在获取训练好的每个词的类别向量和环境向量后,即可上述2类向量构建的分类器找到待分类文本中的每个词在用于文本分类时的概率,然后通过不同词在同一文本分类时的概率的叠加,选取最大的分类概率对应的文本类别即是待分类文本的分类结果。由于引入了2类向量,特别是类别向量能够给出不同上下文下每个词汇和文本类别的相关度和相应文本类别,能够帮助快速找到对应待分类文本的类别,考虑到了同一词的多重含义,分类结果准确性提高。
还需要说明的是,前述方案虽然通过词汇不同含义实现了文本分类,但根据实际统计数据可以发现文本中真正体现类别的词一般只占10%左右,如果不加区分地全部用于分类,会引入大量无关信息,这些无关信息对分类造成了很大干扰,从而导致分类性能明显下降。因此在此基础上,还可以结合注意力机制以筛选出当前文本分类相关的词,使得既能选出与文本分类相关的词,又能根据上下文词向量来判别这些类应选择哪个类别词向量,进而给出了一种科学高性能的文本分类方法。
参见图3,在另一实施例中,结合注意力机制和2类向量进行文本分类时,步骤S30的实现过程包括以下步骤:
步骤S31,在构建分类器时,基于注意力机制,根据训练好的每个词的环境向量获取每个词在用于形成上下文时的注意力向量;
步骤S32,根据训练好的每个词的类别向量和获取的注意力向量评估每个词在所述预设训练语料中的平均分类区分度,并筛除平均分类区分度小于预设阈值的词,以根据筛除后的词构建分类器中的分类词汇表;
步骤S33,根据所述分类器中的分类词汇表查找出所述待分类文本中与当前文本分类有关的词,并通过分类器获取所述与当前文本分类有关的词在不同文本类别对应的分类概率,以通过得到的分类概率进行分类。
请一并参看图4,在构建分类器的过程中,设定的当前文档和其类别分别是d,cd,文档中词汇wi前后m个词分别是w-m+i,w-m+1+i,…wm-1+i,wm+i,还需要说明的是,当前后不足m个词时,其环境向量和类别向量可以用0向量表示,在模型中其本身也可以用“φ”代替。基于上下文的注意力机制得到注意力向量的过程是将训练得到的2类向量中的与类别无关的所有环境向量叠加作为注意力向量,以公式表示详见下方:
其中vs(wi)表示词汇wi的注意力向量,v(wk+i)表示词汇wi的前后第k个环境向量,k∈[-m,m]。然后即可利用词汇wi的注意力向量和wi的带有类信息的用于体现类别时的类别向量,通过softmax和交叉熵函数做为计算方法,来计算当前上下文条件下,词汇wi的分类能力,其中词汇wi的分类能力评估就是注意力的力度,在本方案中即是每个词在给定不同上下文环境时的分类区分度。
在本方案中,依次使用Softmax和交叉熵函数对训练好的每个词的类别向量和获取的注意力向量进行处理,得到每个词在给定不同上下文时对应的分类区分度的过程可以是:通过公式:计算每个词在给定不同上下文时的分类概率,其中pl为第i个词在给定上下文所属文本类别为l时的分类概率,l∈[1,K],K为文本类别总数,i为词汇表中词的序号,vs(wi)为第i个词的注意力向量,vt(wi)为训练好的第i个词的所有类别向量中属于第t个类别时的类别向量,vl(wi)为第i个词在第l个文本类别的文本中时的实际类别向量;然后将每个词在给定不同上下文时的分类概率以及不同上下文对应不同文本时的文本类别作为交叉熵函数的参数输入至公式中,以计算每个词在给定不同上下文时对应的分类区分度,其中l(wi)为第i个词在给定上下文所属文本类别为l时的分类区分度,cd(l)为文本cd的第l维分量,u(pi)为该词的分类概率。
其中,如前所述,cd作为文本d的文本类别是一个K维的one-hot向量,其中1元素的维数位置m给出了文档d属于m类,一个one-hot向量只会存在一个1元素所在的维数位置。可以发现,l(wi)的大小代表了词汇wi的分类能力,l(wi)越大,分类能力越强,相反l(wi)越小,分类能力越弱,甚至还可能会对分类起有害作用,因此通过归一化和交叉熵得到了能够很好的区分分类能力的参数,即是给定不同上下文下的词汇wi的分类区分度。
实际在得到单个词汇不同上下文下的分类区分度时,可以发现词汇在不同上下文时分类区分度差别很大,如果在预设训练预料中出现多次,甚至可能每次上下文都不同,导致最终对应的分类区分度也可能都不同,因此需要评估词汇在整个预设训练语料中的整体分类能力,以此体现词汇对应在整个不同文本类型运用中的整体分类能力,在本方案中是通过词汇wi的平均分类区分度来表示词汇wi在预设训练预料中的平均分类能力,然后通过平均分类区分度的大小不同,删除分类能力弱的和有害于分类的词汇。对应实现过程可以是:
对每个词在给定不同上下文时对应的分类区分度进行求和,以获取每个词在所有上下文时对应的分类区分度,并获取每个词在所述预设训练语料中的出现次数,以将每个词在所有上下文时对应的分类区分度与对应出现次数相除的结果作为评估出的每个词在所述预设训练语料中的平均分类区分度。在基于上述求得分类区分度的公式的基础上,通过直观公式体现即是:
其中L(wi)是词汇wi在预设训练语料D的平均分类区分度,n(wi)表示词汇wi在训练语料D中的出现次数,l(wi)为第i个词在给定上下文所属文本类别为l时的分类区分度。
在得到平均分类区分度后,可以对预设训练语料的所有文本唯一对应的词汇表进行筛选更新,可以是预设一个阈值,将得到词汇的平均分类区分度与阈值进行比较,筛除掉平均分类区分度小于预设阈值的词汇,筛选出大于等于预设阈值的词汇认为是分类能力较强的词汇,以此构建新的分类词汇表。其中通过实验分析可以发现给定的阈值可以选取0-0.5中的一个值,具体阈值的选定可以根据具体训练数据确定在此不做赘述。
进一步地,在通过预设训练语料得到2类词向量,并结合注意力机制去除分类能力弱的词以构建分类词汇表后,可以通过包括分类词汇表的分类器对待分类文本进行分类。首先需要去除待分类文本中与当次文本分类不相关的词,保留与当前文本分类有关的词(即登录词),即可以去除待分类文本中不在分类词汇表中的词(或者叫未登录词),将筛选留下的词参照训练过程通过滑动窗口的移动选择窗口区域最终得到注意力向量,然后通过分类器得到的注意力向量、类别向量和登录词的平均分类区分度。结合前述交叉熵和softmax函数,运用公式得到每个词汇在不同文本类别的上下文时的分类概率。最后通过相同文本类别的分类概率对应叠加的结果作为待分类文本在不同文本类别的概率,以将最大的概率对应的文本类别作为最终的待分类文本的结果。
即待分类文本在不同文本类别的概率为
其中待分类文本的分类结果为
pl(wi)为词汇wi在第l个文本类别时的分类概率,词汇wi为分类词汇表和待分类文本中均存在的词汇。
本方案给出了通过2类向量结合注意力机制进行文本分类的完整过程,可自动给出与每个文本类别的最相关的词语,并给出不同上下文下每个词汇和文本类别的相关度以及和相应的文本类别,为后续对文本进行各种分析提供了准备,也给出了待分类文本的基础文本类别,降低了噪声干扰,提升了模型分类能力。
本发明还提出一种计算机可读存储介质,其上存储有计算机程序。所述计算机可读存储介质可以是图1的智能终端中的存储器20,也可以是如ROM(Read-Only Memory,只读存储器)/RAM(Random Access Memory,随机存取存储器)、磁碟、光盘中的至少一种,所述计算机可读存储介质包括若干指令用以使得一台具有处理器的终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者服务端不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者服务端所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者服务端中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。