发明内容
为解决上述技术问题,本申请提供一种统计分类模型训练装置,以避免用户在不同应用场景中编写大量代码,提高训练装置的适用性。
第一方面,提供一种统计分类模型训练装置,包括分词模块、特征选择模块、分类算法模块、算法参数调整模块、训练与评估模块;
所述分词模块包括分词算法单元和分词模型单元,所述分词算法单元用于为用户提供统计分类模型训练装置所支持的分词算法,所述分词模型单元用于为用户提供统计分类模型训练装置所支持的第一分词模型,所述分词算法与所述第一分词模型具有映射关系;所述分词模块用于利用用户从分词算法单元中选择的分词算法,以及与所述分词算法对应的第一分词模型,将训练语料进行分词,得到分词结果;
所述特征选择模块用于为用户提供统计分类模型训练装置所支持的特征选择方法,以及,利用用户选择的特征选择方法从所述分词结果中筛选出第一特征集;
所述分类算法模块用于为用户提供统计分类模型训练装置所支持的分类算法;
所述算法参数调整模块用于根据用户从分类算法模块中选择的分类算法,为用户提供与所述分类算法对应的至少一个可由用户调整的分类算法参数,以及获取所述分类算法参数所对应的参数值;
所述训练与评估模块用于将分类算法参数的参数值进行全组合,得到至少一组参数值组;以及,利用用户从分类算法模块中选择的分类算法、所述参数值组、所述第一特征集以及所述训练语料的标记分类标签,从与每一组参数值组各自对应的统计分类模型中筛选出精度最高的统计分类模型。
可选地,所述分词模型单元还用于获取用户自定义的第二分词模型;
所述分词模块具体用于分析用户从分词算法单元中选择的分词算法与所述第二分词模型是否匹配;在所述分词算法与所述第二分词模型不匹配的情况下,从所述分词模型单元中选取与分词算法对应的第一分词模型;以及,利用所述分词算法和所述第一分词模型将训练语料中进行分词,得到分词结果。
可选地,所述分词模块还用于在所述分词算法与所述第二分词模型匹配的情况下,利用所述分词算法和所述第二分词模型将训练语料进行分词,得到分词结果。
可选地,所述分词模块还包括用于获取自定义词典的词典单元,所述自定义词典包括至少一个用户期望从训练语料中优先切分出的字词;
所述分词模块还用于利用所述自定义词典切分所述训练语料。
可选地,所述特征选择模块包括用于获取第一数量的特征数量自定义单元,所述第一数量为获取用户期望筛选出的第一特征集中所包含的特征数量;
所述特征选择模块具体用于利用用户选择的特征选择方法从所述分词结果中选择每一个文本所对应的第二特征集;分别计算每一个第二特征集中的特征在整个训练语料中的权重值;以及,从每一个第二特征集中选取权重值最大的第一数量个特征,作为与所述文本对应的第一特征集。
可选地,所述算法参数调整模块具体用于根据用户从分类算法模块中选择的分类算法确定与所述分类算法对应的、可由用户调整的分类算法参数;确定所述分类算法参数的类型为离散型或连续型;在所述分类算法参数的类型为离散型的情况下,获取所述分类算法参数的至少一个参数值;以及,在所述分类算法参数的类型为连续型的情况下,获取所述分类算法参数的参数值区间以及步长,或者,获取所述分类算法参数的至少一个参数值。
可选地,所述训练与评估模块具体用于将分类算法参数的参数值进行全组合,得到至少一组参数值组;将所述训练语料拆分为训练集和验证集;将每一组参数值组代入用户选择的分类算法中,使用训练集中文本的标记分类标签以及与所述文本对应的第一特征集训练所述分类算法,得到与所述参数值组对应的统计分类模型;使用所述统计分类模型将所述验证集中的文本分类,得到预测分类标签;利用所述验证集中每一个文本的预测分类标签和标记分类标签计算所述统计分类模型的精度;以及,从所有统计分类模型中筛选出精度最高的统计分类模型。
可选地,所述训练与评估模块还包括验证参数配置单元,用于获取训练语料拆分比例,所述训练语料拆分比例为训练语料中训练集与验证集的比例。
可选地,所述统计分类模型训练装置还包括分词结果预处理模块,所述分词结果预处理模块用于获取过滤分词列表和/或筛选词性列表;以及,利用所述过滤分词列表和/或筛选词性列表预处理所述分词结果,其中,所述过滤分词列表包括至少一个用户期望从分词结果中筛去的字词,所述筛选词性列表中包括至少一种用户期望从分词结果中筛选出的词性。
第二方面,提供一种统计分类模型训练方法,包括:
获取由用户选择的分词算法,所述分词算法对应一个预设的第一分词模型;
获取由用户选择的特征选择方法;
获取由用户选择的分类算法;
输出与所述分类算法对应的至少一个可由用户调整的分类算法参数;
获取由用户输入的所述分类算法参数所对应的参数值;
利用所述分词算法和所述第一分词模型将训练语料进行分词,得到分词结果;
利用所述特征选择方法从所述分词结果中筛选出第一特征集;
将分类算法参数的参数值进行全组合,得到至少一组参数值组;
利用所述分类算法、所述参数值组、所述第一特征集以及所述训练语料的标记分类标签,从与每一组参数值组各自对应的统计分类模型中筛选出精度最高的统计分类模型。
在本申请的实施例中,将分词、特征选择、分词算法、分类算法参数调整、训练与评估的方法各自封装成能够实现独立功能的模块,组合形成完整的统计分类模型训练装置,并在分词模块中为用户提供多种不同的分词算法和第一分词模型,在特征选择模块中为用户提供多种不同的特征选择方法,在分类算法模块中为用户提供多种不同的分类算法,在算法参数模块中为用户提供可调整的参数,以便在不同的应用场景中用户可以便捷快速地从多个维度来调整统计分类模型的训练方法,无需重新编写大量代码,避免耗费人力物力。此外,本领域技术人员在训练统计分类模型时大多将注意力放在调整分类算法参数方面,相比之下,本实施例中的训练装置,将不同的分词算法、分词模型、特征选择方法等影响统计分类模型的分类精度的因素引入训练装置,从而使地整个模型训练方法的调整更加灵活,提高了训练装置的适用性,有利于进一步提高统计分类模型的精度。
具体实施方式
除了前文所述的“调整分类算法和分类算法参数需要编程人员重新编写大量代码,实现难度较大”这一问题之外,发明人经过分析认为,当将一种统计分类训练方法应用到不同的应用场景中时,本领域的技术人员大多将注意力放在如何调整分类算法的参数以达到整体最优这一问题上,而忽略了文本的分词结果、特征的选择结果对训练分类模型的影响,这也会导致训练得到的统计分类模型在实际用于分类时效果并不理想。
为此,请参考图1,在本申请的第一个实施例中,提供一种统计分类模型训练装置,包括分词模块1、特征选择模块2、分类算法模块3、算法参数调整模块4和训练与评估模块5。
所述分词模块1包括分词算法单元11和分词模型单元12,所述分词算法单元11用于为用户提供统计分类模型训练装置所支持的分词算法,所述分词模型单元12用于为用户提供统计分类模型训练装置所支持的第一分词模型,所述分词算法与所述第一分词模型具有映射关系;所述分词模块1用于利用用户从分词算法单元11中选择的分词算法,以及与所述分词算法对应的第一分词模型,将训练语料中的训练集进行分词,得到分词结果。
更具体地,分词算法单元11所提供的分词算法具体可以采用基于统计的已知的分词算法,例如,最大切割算法、最短路径算法、CRF新词发现算法(条件随机场新词发现算法)等。分词模型单元12所提供的第一分词模型可以采用基于统计的分词方法所常用的统计模型,例如,隐马尔可夫模型(Hidden Markov Model,HMM模型)、条件随机场模型(conditional random field,CRF模型)等。
分词算法是求解第一分词模型的方法,在本申请中二者之间具有映射关系,以上述的分词算法和第一分词模型来举例,其映射关系如表1所示。
表1分词算法与第一分词模型的映射关系示例
|
分词算法 |
第一分词模型 |
1 |
最大切割算法 |
HMM模型 |
2 |
最短路径算法 |
HMM模型 |
3 |
CRF新词发现法 |
CRF模型 |
以HMM模型为例,HMM模型为一个五元组,包括状态值集合、观察值集合、转移概率矩阵、发射概率矩阵、初始状态分布。在已知参数观察值集合、转移概率矩阵、发射概率矩阵、初始状态分布四个参数的情况下,就可以求解HMM模型的状态集参数。对于已经训练好的HMM模型而言,转移概率矩阵、发射概率矩阵、初始状态分布是已知的,可以通过对已经分词完毕的语料进行统计计算,来计算得到;观察值集合即训练集中的文本,状态值序列即文本中每一个字的状态值。维特比算法是解码HMM模型的一类算法,其中包括了最大切割算法和最短路径算法。在一个实例中,已知训练集中的文本,然后用最大切割算法来求解该文本中每一个字的状态值,再根据每个字在词语中的位置(起始、中间、结束或单字)将文本进行分词,从而得到分词结果。
本申请中,训练语料为带标注的文本集,每一个文本均带有标记分类标签,在训练统计分类模型时,按照预设的拆分比例拆分为训练集和验证集,采用训练集来训练分类算法,得到统计分类模型,再采用验证集来评估统计分类模型的分类精度等性能。训练集中的文本按照标记分类标签分为若干个类别集合,每个类别集合包括至少一个属于该类别的文本。利用分词算法以及第一分词模型,将训练语料中的训练集进行分词,即分别对训练集中每一个类别集合下的每个文本进行分词,得到与该文本的分词结果,这些分词结果的集合,即为整个训练集的分词结果。
可选地,分词模块1具有独立的接口,所述接口可以用于获取用户自定义的第二分词模型。当分词模块1获取到第二分词模型时,分词模块1可以用于分析用户从分词算法单元11中选择的分词算法与所述第二分词模型是否匹配。这里的匹配是指用户选择的分词算法能否用于求解第二分词模型,如果能够求解第二分词模型中未知的参数,则判断为匹配;如果不能够求解第二分词模型中的未知参数,则判断为不匹配。
如果该分词算法与第二分词模型不匹配,则分词模块1用于从分词模型单元12中选取与该分词算法对应的第一分词模型,并且,利用该分词算法和与之对应的第一分词模型将训练语料中的训练集进行分词,得到分词结果。
如果该分词算法与第二分词模型匹配,则利用该分词算法和第二分词模型将训练语料中的训练集进行分词,得到分词结果。
通过这样的方法,可以验证用户自定义的第二分词模型是否能够利用用户选定的分词算法来求解,进而根据求解的结果来分词得到分词结果,从而避免用户选定的分词算法无法求解第二分词模型,导致训练装置出错的情况。
可选地,请参考图2,所述分词模块1还包括用于获取自定义词典的词典单元13,所述自定义词典包括至少一个用户期望从训练集中优先切分出的字词。用户可以将某一个应用场景中以往累积的字词集中成自定义词典,通过接口将整个自定义词典导入到分词模块1中。然后分词模块1利用该自定义词典切分所述训练集。当分词模块1中同时存在自定义词典、分词模型和分词算法时,自定义词典的优先级最高。即,分词模块1首先利用自定义词典,采用正向最大匹配法、逆向最大匹配法和双向匹配分词法等基于词典的分词算法,将训练集中的文本进行分词,得到中间结果;然后利用用户选择的分词算法和与所述分词算法对应的第一分词模型或第二分词模型对中间结果再进行分词,从而得到最终的分词结果。
可选地,请参考图3,所述统计分类模型训练装置还可以包括分词结果预处理模块6,所述分词结果预处理模块6用于获取过滤分词列表和/或筛选词性列表;以及,利用所述过滤分词列表和/或筛选词性列表预处理所述分词结果,其中,所述过滤分词列表包括至少一个用户期望从分词结果中筛去的字词,所述筛选词性列表中包括至少一种用户期望从分词结果中筛选出的词性。
根据应用场景的不同,训练语料中可能含有一些容易干扰训练结果的词汇,这些词汇经过分词后包含在分词结果中,因此,本实施例中统计分类模型训练装置还可以包括分词结果预处理模块6,分词结果预处理模块6可以获取过滤分词列表来过滤掉用户期望从分词结果中筛去的字词,从而减少这些词对训练结果的干扰,也降低了后续的筛选第一特征集时的特征选择模块2需要进行的计算量。
在分词的过程中,可以采用现有的词性标注方法标注每个分词的词性,这里的词性包括名词、动词、形容词、副词、助词等。通常,名词、动词、方位词、形容词等词性的分词相对更能够表征出文本的语义,因此,首先将这些词性的分词从分词结果中筛选出来,也降低了后续的筛选第一特征集时的特征选择模块2需要进行的计算量。
在包括分词结果预处理模块6的情况下,分词结果经过预处理后,特征选择模块2从预处理后的分词结果中筛选出第一特征集。
特征选择模块2用于为用户提供统计分类模型训练装置所支持的特征选择方法,以及,利用用户选择的特征选择方法从所述分词结果中筛选出第一特征集。
特征选择(feature selection)是指从分词结果中选择使某种评估标准最优的特征子集的方法,例如可以用于从分词结果中选择对分类贡献最大的特征集合。此处的特征选择方法可以包括已知的特征选择方法,例如卡方验证(Chi-square test)、信息增益(Kullback–Leibler divergence)、皮尔逊系数(Pearson correlation coefficient)、词频-逆向文件频率(term frequency–inverse document frequency,TF-IDF)、word2vec等。
可选地,请参考图3,所述特征选择模块2包括用于获取第一数量的特征数量自定义单元21,所述第一数量为获取用户期望筛选出的第一特征集中所包含的特征数量;
所述特征选择模块2还具体用于利用用户选择的特征选择方法从所述分词结果中选择每一个类文本所对应的第二特征集;分别计算每一个第二特征集中的特征在整个训练集中的权重值;以及,从每一个第二特征集中选取权重值最大的第一数量个特征作为第一特征集。
以使用TF-IDF来进行特征选择为例,首先,分别计算一个文本的分词结果中每个分词的词频(以TF表示)和逆向文本频率(以IDF表示),其中,词频是指某个分词w在文本d中出现次数与文本d中总词数的比值,逆向文档频率是指文本总数n与词w所出现文本数m的比值的对数。然后,将TF×IDF,即计算得到某个分词的TF-IDF值。TF-IDF值与一个分词在该文本中的出现次数成正比,与该分词在训练集的某一个类别集合中的出现次数成反比,因此,采用TF-IDF来进行特征选择倾向于过滤掉常见的词语,保留重要的词语。将一个文本中的所有分词按照其TF-IDF值排序,选取TF-IDF值最大的特定数量个分词作为该文本的第二特征集,可以表示为J。第二特征集中的特征用于表示与之对应的文本的语义。某一个类别集合中所有文本的第二特征集共同构成了第三特征集。这里的第三特征集中的特征是对与之对应的类别贡献较大的特征,第三特征集用于表示与之对应的类别的语义。所有类别的第三特征集共同构成了第四特征集,如表2所示。
表2特征选择示例
在特征选择完成以后,再分别计算每一个第二特征集中的特征在整个训练集中的权重值。具体计算的方法可以采用已知的权重值计算方法,例如还可以采用TF-IDF法等。
以使用TF-IDF来计算权重值为例,首先,分别计算一个文本的第二特征集合中每个特征的词频(以TF’表示)和逆向文本频率(以IDF’表示),其中,这里的词频是指某个第二特征集J中的特征w’在第三特征集中出现次数与该第三特征集中总特征数y的比值,逆向文档频率是指第四特征集中的第二特征集总个数z与特征w’所出现的第二特征集个数t的比值的对数。然后,计算某个特征w’在整个训练集中的权重值=TF’×IDF’。每一个第二特征集中的特征按照其权重值排序,从中选取权重值最大的第一数量个特征,作与文本对应的第一特征集。
分类算法模块3用于为用户提供统计分类模型训练装置所支持的分类算法。
这里的分类算法可以包括现有的分类算法,例如支持向量机法(Support VectorMachine,SVM)、随机森林算法(Random forest)、朴素贝叶斯法(Naive Bayesian Model,NBC)、k近邻算法(k-Nearest Neighbor,KNN)、逻辑回归法(Logistic Regression)。用户可以根据应用场景的不同,从训练装置提供的分类算法中选择合适的分类算法用于后续的步骤。
算法参数调整模块4用于根据用户从分类算法模块3中选择的分类算法,为用户提供与所述分类算法对应的至少一个可由用户调整的分类算法参数,以及获取所述分类算法参数所对应的参数值。
可选地,所述算法参数调整模块4具体用于根据用户从分类算法模块3中选择的分类算法确定与所述分类算法对应的、可由用户调整的分类算法参数;确定所述分类算法参数的类型为离散型或连续型;在所述分类算法参数的类型为离散型的情况下,获取所述分类算法参数的至少一个参数值;以及,在所述分类算法参数的类型为连续型的情况下,获取所述分类算法参数的参数值区间以及步长,或者,获取所述分类算法参数的至少一个参数值。
每一个分类算法,其对应的分类算法参数可能存在区别。以下以SVM分类算法为例来进一步说明。
与SVM分类算法对应的分类算法参数中,可由用户调整的分类算法参数包括:
1)s:SVM模型类型;
2)t:核函数类型;
3)c:损失函数惩罚因子;
4)g:核函数中的gamma函数设置(针对多项式核函数/RBF核函数/sigmoid核函数);
5)d:核函数中的degree设置(针对多项式核函数);
6)r:核函数中的coef0设置(针对多项式核函数/sigmoid核函数);
其中,SVM模型类型包括C类支持向量分类机、nu类支持向量分类机、单分类器、epsilon类支持向量回归机和nu类支持向量回归机。核函数类型包括线性核函数、多项式核函数、RBF核函数(径向基核函数,Radial Basis Function)和sigmoid核函数。SVM模型类型和核函数类型均有固定的有限个数的可选择项,这两个分类算法参数属于离散型参数,用户从训练装置所提供的有限个参数值的可选项中选择一个具体的参数值,作为对应参数的参数值。例如,参数调整模块可以获取C类支持向量分类机作为SVM模型类型的参数值;获取线性核函数作为核函数类型的参数值。
参数c、d、r、g这四个参数属于连续型参数,用户可以输入这些参数的参数值范围以及步长。例如,可以设置损失函数惩罚因子的取值区间为0-100,步长为10,则在训练与评估模块5中对参数值进行全组合时,损失函数惩罚因子的参数值取0、10、20、30……90、100共11个值。又例如,核函数中的gamma函数的参数值可以设置为1/5、1/8和1/10三个。
除了上述参数之外,SVM分类算法还有其他分类算法参数,例如,“p:e-SVR中损失函数p的值”、“m:cache内存大小”等。这些参数在使用SVM分类算法的时候也需要用到,一般可以采用预设的默认值。
所述训练与评估模块5用于将分类算法参数的参数值进行全组合,得到至少一组参数值组;以及,根据用户从分类算法模块3中选择的分类算法、所述参数值组、第一特征集以及训练集中文本的标记分类标签,从与每一组参数值组各自对应的统计分类模型中筛选出精度最高的统计分类模型。
沿用前述SVM分类算法的例子,在分类参数调整模块中,假设用户获取到的6个参数的参数值如表3所示。
表3获取到的SVM分类算法参数值示例
参数 |
参数类型 |
参数值 |
参数范围 |
步长 |
s |
离散型 |
C类支持向量分类机、nu类支持向量分类机 |
—— |
—— |
t |
离散型 |
RBF核函数 |
—— |
—— |
c |
连续型 |
—— |
0-100 |
10 |
g |
连续型 |
1/5、1/8、1/10 |
—— |
—— |
d |
连续型 |
—— |
—— |
—— |
r |
连续型 |
—— |
—— |
—— |
将表3中的4个参数的参数值进行组合,则可以得到2×1×11×3=66个参数值组。
将所述训练语料拆分为训练集和验证集。按照预设的拆分比例从全部的训练语料中随机抽取相应占比的文本作为训练集,其余的文本则作为验证集。可选地,训练与评估模块5还包括验证参数配置单元51,用于获取训练语料拆分比例。当用户输入新的拆分比例后,训练与评估模块5则按照新获取的拆分比例来拆分训练语料。
然后将每一组参数值组分别代入所述SVM分类算法中,使用训练集中文本的标记分类标签以及与所述文本对应的第一特征集训练所述分类算法,得到与参数值组对应的SVM分类模型。此处,将训练集中文本的标记分类标签作为输出值,将与之对应的第一特征集作为输入值,使SVM分类算法进行机器学习,从而得到SVM分类模型。
在训练好之后,使用所述SVM分类模型将验证集中的文本分类,每一个文本都被标注一个预测分类标签,表示预测的该文本所述的类别。此处,将验证集中的文本对应的第一特征集作为输入值,经过训练好的SVM分类模型的预测,就得到预测分类标签。将验证集中每一个文本的预测分类标签与标记分类标签比对,计算所述SVM分类模型的精度。例如,验证集中共有40个文本,其中35个文本的预测分类标签与标记分类标签相同,5个文本的预测分类标签与标记分类标签不同,则该SVM分类模型的精度为87.5%。
通常上述训练和评估SVM分类模型的精度的过程会迭代多次,得到该SVM分类模型的多组精度值,然后取平均值作为该SVM分类模型最终的精度。可选地,训练与评估模块5中的验证参数配置单元51还用于获取验证迭代次数,以便用户根据不同的应用场景来调整验证迭代的次数,避免迭代次数过多导致训练与评估模块5的计算量过大,以及避免迭代次数过少导致得到的统计分类模型的精度值不够准确。
每一个参数值组都对应一个SVM分类模型,也就是说,在本实施例中可以得到66个SVM分类模型。通过上述方法可以计算出每一个SVM分类模型的精度,最后从所有的SVM分类模型中筛选出精度最高的统计分类模型,即完成了统计分类模型的训练过程。此时,该统计分类模型的各个参数的取值达到整体最优。
除上述方法之外,本申请实施例中还可以采用网格搜索来寻找最优的分类算法的参数值。以SVM分类算法来举例,对于RBF核函数,用户可以给出c和g两个参数的取值范围,例如,c取值范围为0-100,步长为1,g的取值范围为0-8,步长为0.1。然后将两个参数的取值范围划分成网格,并遍历网格内所有的点进行取值,对于取定的c和g,利用k-CV(K-foldCross Validation)方法得到在词组c和g下分类精度,最终取使得分类精度最高的那组c和g作为最佳的参数。进行一次网格寻优之后,在网格的大部分范围内的分类精度很低,小范围内分类精度较高,这样就可以定位出一个较优的参数寻优区间。再在较优的参数寻优区间中缩小网格划分的步长,进行进一步精确的搜索,以找到最优的一组c和g的值。SVM分类算法在设定了最优的参数以后,即得到了SVM分类模型。
在本实施例中,将分词、特征选择、分词算法、分类算法参数调整、训练与评估的方法各自封装成能够实现独立功能的模块,组合形成完整的统计分类模型训练装置,并在分词模块1中为用户提供多种不同的分词算法和第一分词模型,在特征选择模块2中为用户提供多种不同的特征选择方法,在分类算法模块3中为用户提供多种不同的分类算法,在算法参数模块中为用户提供可调整的参数,以便在不同的应用场景中用户可以便捷快速地从多个维度来调整统计分类模型的训练方法,无需重新编写大量代码。此外,本领域技术人员在训练统计分类模型时大多将注意力放在调整分类算法参数方面,相比之下,本实施例中的训练装置,将不同的分词算法、分词模型、特征选择方法等影响统计分类模型的分类精度的因素引入训练装置,从而使地整个模型训练方法的调整更加灵活,提高了训练装置的适用性,有利于进一步提高统计分类模型的精度。
需要说明的是,前述的word2vec是Google开发的一款开源的用于词向量计算的工具;K-fold Cross Validation是一种交叉验证的方法。在国内,本领域技术人员未对以上英文名称进行统一的中文翻译,而普遍是引用英文原文来表述,因此,为避免翻译产生歧义,本实施例中也使用英文原文来表述,本领域技术人员能够理解这些英文名词。
此外,本申请中的统计分类模型训练装置还可以包括实现统计分类模型训练方法所需的其他部件,例如训练语料的输入端口、各个模块之间的接口、初始化以及命名信息的约定、临时的存储空间等。
请参考图4,在本申请的第二个实施例中,提供一种统计分类模型训练方法,包括:
S100:获取由用户选择的分词算法,所述分词算法对应一个预设的第一分词模型;
S200:获取由用户选择的特征选择方法;
S300:获取由用户选择的分类算法;
S400:输出与所述分类算法对应的至少一个可由用户调整的分类算法参数;
S500:获取由用户输入的所述分类算法参数所对应的参数值;
S600:利用所述分词算法和所述第一分词模型将训练语料进行分词,得到分词结果;
S700:利用所述特征选择方法从所述分词结果中筛选出第一特征集;
S800:将分类算法参数的参数值进行全组合,得到至少一组参数值组;
S900:利用所述分类算法、所述参数值组、所述第一特征集以及所述训练语料的标记分类标签,从与每一组参数值组各自对应的统计分类模型中筛选出精度最高的统计分类模型。
在S100的步骤中,由用户选择的分词算法具体可以采用基于统计的已知的分词算法,例如,最大切割算法、最短路径算法、CRF新词发现算法(条件随机场新词发现算法)等。第一分词模型可以是基于统计的分词方法所常用的统计模型,例如,隐马尔可夫模型(Hidden Markov Model,HMM模型)、条件随机场模型(conditional random field,CRF模型)等。不同的分词算法所对应的第一分词模型可以是预设的。以前述的最大切割算法、最短路径算法、CRF新词发现算法三种分词算法来举例,其对应的第一分词模型可以分别是:HMM模型、HMM模型、CRF模型。
在S200的步骤中,由用户选择的特征选择方法可以包括已知的特征选择方法,例如卡方验证(Chi-square test)、信息增益(Kullback–Leibler divergence)、皮尔逊系数(Pearson correlation coefficient)、词频-逆向文件频率(term frequency–inversedocument frequency,TF-IDF)、word2vec等。
在S300的步骤中,分类算法可以包括现有的分类算法,例如支持向量机法(Support Vector Machine,SVM)、随机森林算法(Random forest)、朴素贝叶斯法(NaiveBayesian Model,NBC)、k近邻算法(k-Nearest Neighbor,KNN)、逻辑回归法(LogisticRegression)。用户可以根据应用场景的不同,选择合适的分类算法用于后续的步骤。
在S400的步骤中,不同的分类算法其所对应的分类算法参数存在区别。对于已知的分类算法而言,其对应的分类算法参数也是已知的。而其中,具体的可以由用户调整的分类算法参数,可以通过预设来确定。
以下以SVM分类算法为例来进一步说明。与SVM分类算法对应的分类算法参数中,可由用户调整的分类算法参数可以预设为包括6个:
1)s:SVM模型类型;
2)t:核函数类型;
3)c:损失函数惩罚因子;
4)g:核函数中的gamma函数设置(针对多项式核函数/RBF核函数/sigmoid核函数);
5)d:核函数中的degree设置(针对多项式核函数);
6)r:核函数中的coef0设置(针对多项式核函数/sigmoid核函数)。
在S500的步骤中,已知分类算法参数的具体参数值可以由用户根据实际情况来设置。在一种实现方式中,S500的步骤可以包括:
S501:确定所述分类算法参数的类型为离散型或连续型;
S502:如果所述分类算法参数的类型为离散型,则获取所述分类算法参数的至少一个参数值;
S503:如果所述分类算法参数的类型为连续型,则获取所述分类算法参数的参数值区间以及步长,或者,获取所述分类算法参数的至少一个参数值。
沿用S400的步骤中SVM分类算法的例子,在6个可由用户调整的分类算法参数中,SVM模型类型包括C类支持向量分类机、nu类支持向量分类机、单分类器、epsilon类支持向量回归机和nu类支持向量回归机。核函数类型包括线性核函数、多项式核函数、RBF核函数(径向基核函数,Radial Basis Function)和sigmoid核函数。SVM模型类型和核函数类型均有固定的有限个数的可选择项,这两个分类算法参数属于离散型参数,用户可以从有限个参数值的可选项中选择一个具体的参数值,作为对应参数的参数值。例如,参数调整模块可以获取C类支持向量分类机作为SVM模型类型的参数值;获取线性核函数作为核函数类型的参数值。
c、d、r、g这四个参数属于连续型参数,用户可以输入这些参数的参数值范围以及步长。例如,可以设置损失函数惩罚因子的取值区间为0-100,步长为10,则在S800的步骤中对参数值进行全组合时,损失函数惩罚因子的参数值取0、10、20、30……90、100共11个值。又例如,核函数中的gamma函数的参数值可以设置为1/5、1/8和1/10三个。
在S600的步骤中,分词算法是求解对应的第一分词模型的方法,可以以此来对训练预料进行分词。具体地,以HMM模型为例,HMM模型为一个五元组,包括状态值集合、观察值集合、转移概率矩阵、发射概率矩阵、初始状态分布。在已知参数观察值集合、转移概率矩阵、发射概率矩阵、初始状态分布四个参数的情况下,就可以求解HMM模型的状态集参数。对于已经训练好的HMM模型而言,转移概率矩阵、发射概率矩阵、初始状态分布是已知的,可以通过对已经分词完毕的语料进行统计计算,来计算得到;观察值集合即训练集中的文本,状态值序列即文本中每一个字的状态值。维特比算法是解码HMM模型的一类算法,其中包括了最大切割算法和最短路径算法。在一个实例中,已知训练集中的文本,然后用最大切割算法来求解该文本中每一个字的状态值,即每个字在词语中的位置(起始、中间、结束或单字)。由于起始字后面只能是中间字、结束字或单字,中间字后面只能是中间字、结束字,结束字后面只能是起始字或单字,单字后面只能是起始字或单字,故而根据每个字在词语中的位置就可以对文本进行分词,从而得到分词结果。
在S700的步骤中,利用特征选择方法从分词结果中筛选出第一特征集的步骤,具体可以包括:
S701:获取用户期望筛选出的第一特征集中所包含的特征数量;
S702:利用用户选择的特征选择方法从所述分词结果中选择每一个文本所对应的第二特征集;
S703:分别计算每一个第二特征集中的特征在整个训练语料中的权重值;
S704:从每一个第二特征集中选取权重值最大的第一数量个特征,作为与所述文本对应的第一特征集。
这里可以参考特征选择模块2中筛选第一特征集的例子,此处不再赘述。
在S800的步骤中,将分类算法参数的参数值进行全组合,可以参考训练与评估模块5中的全组合的例子,此处不再赘述。
S900的步骤具体可以包括:
S901:将所述训练语料拆分为训练集和验证集;
S902:将每一组参数值组分别代入所述分类算法中,使用训练集中文本的标记分类标签以及与所述文本对应的第一特征集训练所述分类算法,得到与所述参数值组对应的统计分类模型;
S903:使用所述统计分类模型将所述验证集中的文本分类,得到预测分类标签;
S904:利用所述验证集中每一个文本的预测分类标签和标记分类标签计算所述统计分类模型的精度;
S905:从所有统计分类模型中筛选出精度最高的统计分类模型。
在S901的步骤中,训练集和验证集的拆分比例可以是随机的,也可以是预设的,此外,还可以是用户指定的。当拆分比例由用户自定义时,S901的步骤可以包括:
S9011:获取由用户输入的训练语料拆分比例,所述训练语料拆分比例为训练语料中训练集与验证集的比例;
S9012:根据所述训练语料拆分比例将所述训练语料拆分为训练集和验证集。
在S902至S905的步骤中,将训练集中文本的标记分类标签作为输出值,将与之对应的第一特征集作为输入值,使SVM分类算法进行机器学习,从而得到SVM分类模型。再将验证集中的文本对应的第一特征集作为输入值,经过训练好的SVM分类模型的预测,就得到预测分类标签。将验证集中每一个文本的预测分类标签与标记分类标签比对,计算所述SVM分类模型的精度。例如,验证集中共有40个文本,其中35个文本的预测分类标签与标记分类标签相同,5个文本的预测分类标签与标记分类标签不同,则该SVM分类模型的精度为87.5%。通常上述训练和评估SVM分类模型的精度的过程会迭代多次,得到该SVM分类模型的多组精度值,然后取平均值作为该SVM分类模型最终的精度。每一个参数值组都对应一个SVM分类模型,每一个SVM分类模型具有一个评估得到的精度值,最后从所有的SVM分类模型中筛选出精度最高的统计分类模型,即完成了统计分类模型的训练过程。此时,该统计分类模型的各个参数的取值达到整体最优。
可选地,该统计分类模型训练方法还包括:
S101:获取由用户自定义的第二分词模型;
S102:分析所述分词算法与所述第二分词模型是否匹配;
S103:如果不匹配,则确定与所述分词算法对应的第一分词模型;
在这种情况下,后续S600的步骤采用S102的步骤中的分词算法和第一分词模型来将训练语料进行分词。
S104:如果匹配,则利用所述分词算法和所述第二分词模型将训练语料进行分词,得到分词结果。
这种情况下,后续S600的步骤被S101、S102和S104的步骤所替换,不再采用原来的第一分词模型来进行分词,而是利用由用户自定义的有效的第二分词模型。
可选地,该统计分类模型训练方法还包括:
S105:获取由用户自定义词典的词典单元,所述自定义词典包括至少一个用户期望从训练语料中优先切分出的字词;
S106:利用所述自定义词典切分所述训练语料。
在一种实现方式中,可以优先采用自定义词典来切分所述训练语料中的训练集,然后再采用分词算法和第一分词模型/第二分词模型来进行分词。
可选地,该统计分类模型训练方法还包括对分词结果进行预处理的步骤,具体包括:
S601:获取过滤分词列表和/或筛选词性列表,所述过滤分词列表包括至少一个用户期望从分词结果中筛去的字词,所述筛选词性列表中包括至少一种用户期望从分词结果中筛选出的词性;
S602:利用所述过滤分词列表和/或筛选词性列表预处理所述分词结果。
通过获取过滤分词列表来过滤掉用户期望从分词结果中筛去的字词,从而减少这些词对训练结果的干扰,也降低了后续的筛选第一特征集的步骤的计算量。在分词的过程中,可以采用现有的词性标注方法标注每个分词的词性,这里的词性包括名词、动词、形容词、副词、助词等。通常,名词、动词、方位词、形容词等词性的分词相对更能够表征出文本的语义,因此,首先将这些词性的分词从分词结果中筛选出来,也降低了后续的筛选第一特征集的步骤的计算量。
需说明的是,在包括步骤S601和S602的情况下,分词结果经过预处理后,S700的步骤是从预处理后的分词结果中筛选出第一特征集。
本说明书中各个实施例之间相同相似的部分互相参见即可。以上所述的本发明实施方式并不构成对本发明保护范围的限定。