基于分布式机器学习的文本分类方法

文档序号:32158432发布日期:2022-11-12 01:11阅读:48来源:国知局
基于分布式机器学习的文本分类方法

1.本发明涉及一种基于分布式机器学习的文本分类方法,属于文本分类处理技术领域。


背景技术:

2.目前,随着信息时代的发展,互联网上的文本数据呈现爆发式的增长。海量的数据未经过分类,人们无法高效地对其提取有用的信息,同时也浪费了网络资源。文本分类作为文本处理重要的技术之一,被广泛地用于各项自然语言处理任务当中。文本分类即是通过特定的算法,分析文本数据中的潜在规则,再将新的文本和对应的类别相匹配。
3.长久以来,文本分类的主流方法还是基于统计的机器学习模型,该模型通常采用词袋(bag-of-words)和n元语法(n-gram)等表示方法将文档转化成一个n维向量,然后将该向量输入到支持向量机(support vector machine)、朴素贝叶斯(naive bayes)等分类器中,预测文档的标签,基于统计的机器学习模型结构简单,鲁棒性好,但也存在大量问题,比如最重要的统计的文本表示方法的文本语义表示方面是比较浅显的,需要进一步提取文本向量的深层特征,这个过程需要人工进行设计、添加和组合。并且研究者在构建文本特征表示的过程中,由于经验和对问题理解的不同,对不同文本词与词、句子与句子、上下文之间关联性的理解均不相同,所构建的文本特征表示,不能代表文本的核心语义,简单的机器学习模型分类器无法从中解析出文本语义信息。
4.2006年hinton等研究人员发现了深度学习强大的表达能力,可以从文档中提取句子级别和词级别的特征信息,通过构建深层神经网络的方式解决了传统机器学习难以解决的语义提取的问题。随着深度学习成为研究的热门,目前利用深度学习框架开展的有关自然语言处理的研究和应用已经取得了一定的成果。
5.2014年,kim基于卷积神经网络(convolutional neural networks,cnn)展开了对文本分类的研究,包括情感分析,语义分析等。kim提出的文本分类模型textcnn包含一个卷积层(使用了多个不同尺寸的卷积核)和最大池化层,因为其结构简单,效果良好,被广泛的应用在nlp领域中。该方法能够有效的对长度较短的文本进行分类,但是对于文本长度超过5000字甚至更多的长文,单层的cnn不能完整的提取长文特征。
6.robert keeling等人将textcnn运用于法律文本分类,实验表明,当文本长度超过2000字时,与传统神经网络相比,textcnn的分类准确率没有显著提高。因为cnn只能处理其一个卷积核中的信息,而相邻卷积核的信息只能通过后一层的卷积层进行关联。信息的关联取决于卷积核的大小和移动步长等参数,因此,利用cnn进行长文本分类时,模型不能灵活调整参数,导致训练时间延长。
7.相比于cnn,循环神经网络(recurrent neural network,rnn)使用时间序列的结构遍历文字,不仅会考虑文字本身,还会考虑文字上下文的信息,从而达到更好的文本分类效果。循环神经网络中的长短期记忆网络(long short-term memory,lstm),其特殊的门结构允许信息选择性地影响神经网络每个时刻的状态,解决了传统序列模型由于记忆信息太
多产生的维度爆炸问题。pengfei liu等人提出的textrnn模型和miwa m等人提出的lstms端对端文本训练模型能够持续保留信息,记忆文本前后关联性,更好地利用了传统神经网络无法建模的信息。但文本长度超过万字时,序列模型记忆量不断增大,输入数据维度的不断扩大,容易引起资源耗尽,导致训练缓慢,模型分类准确度下降。
8.有鉴于此,确有必要提出一种基于分布式机器学习的文本分类方法,以解决上述问题。


技术实现要素:

9.本发明的目的在于提供一种基于分布式机器学习的文本分类方法,以解决现有文本分类模型在文本长度过长时,出现的训练缓慢和准确率低的问题。
10.为实现上述目的,本发明提供一种基于分布式机器学习的文本分类方法,包括以下步骤:
11.s1、输入数据集,并对数据集进行预处理;
12.s2、将数据集进行分块,并提出一种基于word2vec的分布式文本数据流分类方法;
13.s3、训练word2vec模型,将单词表示为在连续空间上的低维稠密向量形式,生成词向量,并自定义权重矩阵;
14.s4、在一个主节点和三个子节点构成的标准集群中,主节点将分类器权重广播到所述子节点,数据流通过分布式文件管理系统将所述数据块分发至所述子节点,主节点轮询等待所述子节点对数据块的处理结果,随后获取每个子节点处理的权重梯度之和,更新主节点,随后处理下一个数据块,直至数据流结束;
15.s5、初始化cnn参数,输入至卷积神经网络进行并行化训练,在spark平台下构建基于分布式机器学习的文本分类模型,以对文本进行分类。
16.作为本发明的进一步改进,s1包括以下步骤:
17.s11、使用分词系统对数据集进行分词;所述分词系统包括结巴(jieba)分词系统、han lp分词系统、清华中文词法分析和thulac分词系统;
18.s12、使用停用词表对数据集进行去停用词;常见的停用词表包括哈工大停用词表和百度停用词表。
19.作为本发明的进一步改进,s2包括以下步骤:
20.s21、按定长的时间窗口机制,将给定的数据流分为固定大小的数据块;
21.s22、为了缓解短文本数据流中的稀疏信息和高维特征,利用外部语料库建立扩展word2vec模型,采用固定大小的n维词向量vec对短文本进行向量表示;
22.s23、对t时刻数据流中数据块d
t
使用词向量集合完成向量化,获得向量化表示vec(d
t
),然后在vec(d
t
)上进行模型的训练,并对下一个数据块d
t+1
进行预测;
23.s24、对文本进行预测。
24.作为本发明的进一步改进,s24具体为:以t时刻的数据块d
t+1
中的短文本为例,通过以下公式预测向量化的文本:
[0025][0026]
其中,为预测标签;为算法集成模型f
t
在第t时刻中第r个分类器的特征权重,σ(
·
)表示为对应激活函数;最后使用文本上下文信息更新扩展word2vec词向量集合vece。
[0027]
作为本发明的进一步改进,s3包括以下步骤:
[0028]
s31、word2vec根据语料中词汇共现信息,将词汇编码成一个向量,以计算每个词语在给定语料库环境下的分布式词向量;
[0029]
s32、通过扩展word2vec模型对短文本的向量化。
[0030]
作为本发明的进一步改进,s4包括以下步骤:
[0031]
s41、机器学习算法通常来说通过给定数据和模型,对目标函数进行迭代直至收敛,具体公式为:
[0032]mt
=f(m
t-1

l
(m
t-1
,d));
[0033]
其中,t表示迭代次数,δ
l
为目标函数,f做模型更新;
[0034]
s42、数据流通过hdfs分布式文件系统将所有数据块均衡的分发到各子节点进行分布式参数训练。
[0035]
作为本发明的进一步改进,s41具体为:当数据量较大时,需要对数据进行切分在多节点上并行,此时,每个工作节点利用本地数据进行训练,并通过一定的通信算法同步更新,此时的迭代公式为:
[0036][0037]
当机器学习模型较大时,需要对模型进行划分并在工作节点上分别训练时,此时的迭代函数可表示为:
[0038][0039]
其中,是模型调度函数;目标函数在各个节点训练的子模型上,对参数进行选择。
[0040]
作为本发明的进一步改进,s42具体为:主节点将分类器ft的各个特征权重广播至所有的子节点,并等待所有子节点完成对短文本d(d∈d
t+1
)的预测,同时将本地短文本中存在的新词文本回传给主节点,主节点获取所有子节点对训练数据块的预测信息与数据块中存在的新词文本集合信息,输出预测结果。
[0041]
作为本发明的进一步改进,s5包括以下步骤:
[0042]
s51、卷积层和池化层是cnn的核心组件,经过卷积和池化操作,将原始特征映射到更高层次维度的语义空间;
[0043]
s52、池化层负责对卷积层提取到的信息进行采样并对部分信息进行保留,同时为下一层的计算减少参数,加快模型的训练速度;
[0044]
s53、全连接层将样本从特征空间映射到标记空间。
[0045]
作为本发明的进一步改进,s51具体为:假设某文本包含n个单词,词向量维数为k,则输入可表示为n
×
k维的文本矩阵x;
[0046]
x={x1,x2,...,xn}
t
,其中,xi为第i个词的词向量;
[0047]
通过设置不同长度的卷积核,cnn可以进行丰富的局部特征提取,定义卷积核的尺寸为h,权值矩阵和偏置分别为w∈rh×k和b∈r;
[0048]
将输入x分为{x
1:h
,x
2:h+1
,...,x
i:i+h-1
,...,x
n-h+1:n
},每次卷积操作对第i步时滑动窗口内的信息x
i:i+h-1
∈rh×k进行特征提取,得到的属性值ci∈r,i∈[1,n-h+1],计算如下:
[0049][0050]
其中,f是非线性的激活函数,为卷积操作符;
[0051]
卷积特征图可描述为:
[0052]
c={c1,c2,...,c
n-h+1
}。
[0053]
本发明的有益效果是:本发明提出了一种基于分布式机器学习的文本分类方法,通过apache spark框架的适应性来探索卷积神经网络,充分利用了spark框架的并行优势,提高了文本分类的精度与时间性能;通过word2vec的分布式文本数据流分类,使得外部语料库构建word2vec词向量模型完成短文本的向量化过程。
附图说明
[0054]
图1是本发明中基于分布式机器学习的文本分类方法的流程图。
[0055]
图2是分布式模型预测和word2vec框架示意图。
具体实施方式
[0056]
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
[0057]
请参阅图1和图2所示,本发明提供了一种基于分布式机器学习的文本分类方法,用于文本进行分类,具体包括以下步骤:
[0058]
s1、输入数据集,并对数据集进行预处理。
[0059]
其中,预处理包括对数据集进行分词和去停用词,具体包括以下步骤:
[0060]
s11、使用分词系统对数据集进行分词。
[0061]
常见的分词系统包括但不限于结巴(jieba)分词系统、han lp分词系统、清华中文词法分析和thulac分词系统等。
[0062]
由于中文语言中字与字排列组合成词语的选择性极多,很难使用词典的形式进行识别,使得中文文本信息正确地进行分词是中文分词的一大难点。使用上述常见的分词系统,可以有效的对中文语言进行分词处理。
[0063]
s12、使用停用词表对数据集进行去停用词。
[0064]
常见的停用词表包括但不限于哈工大停用词表和百度停用词表等。
[0065]
停用词指在中文文本中会含有许多无意义的词,例如“和”、“的”、“他”、“了”等一些连接词、介词、副词、人称代词等,这些词在文本中无任何含义且对文本分类起的作用微
乎其微,需要将这些无意义的词删除来降低文本噪声。
[0066]
s2、将数据集进行分块,并提出一种基于word2vec的分布式文本数据流分类方法。
[0067]
s21、按定长的时间窗口机制,将给定的数据流分为固定大小的数据块。数据流d公式化表示为d={d1,d2,...,d
t
,...,d
t
},其中,t

∞,∞,1≤t≤t,|d
t
|表示d
t
中短文本的数量,表示数据流中第t个数据块第n个文本,为文本对应的类标签。
[0068]
s22、为了缓解短文本数据流中的稀疏信息和高维特征,利用外部语料库建立扩展word2vec模型,采用固定大小的n维词向量vec对短文本进行向量表示。
[0069]
其中,第t个数据块中的第n个短文本的文本向量可表示为dt数据块中所有短文本的向量化集合表示为vec(dt),为了避免过度依赖外部语料库而导致模型下降,因此,模型维护一个新词集合s构建word2vec模型以获得扩展的词向量集合vece。
[0070]
s23、对t时刻数据流中数据块d
t
使用词向量集合完成向量化,获得向量化表示vec(d
t
),然后在vec(d
t
)上进行模型的训练,并对下一个数据块d
t+1
进行预测。
[0071]
具体的,为了使分类器模型适应实时变化的数据流,模型在t时刻分别为每个类标签构建分类器,并记为fr(1≤r≤|r|,|r|≤l),其中,r是在时间t上出现的类标签的集合,得到|r|个分类器的集成模型得到|r|个分类器的集成模型
[0072]
s24、对文本进行预测。
[0073]
具体的,以t时刻的数据块d
t+1
中的短文本为例,通过以下公式预测向量化的文本:
[0074][0075]
其中,为预测标签;为算法集成模型f
t
在第t时刻中第r个分类器的特征权重,σ(
·
)表示为对应激活函数。最后使用文本上下文信息更新扩展word2vec词向量集合vece。
[0076]
s3、训练word2vec模型,将单词表示为在连续空间上的低维稠密向量形式,生成词向量,并自定义权重矩阵。
[0077]
s31、word2vec根据语料中词汇共现信息,将词汇编码成一个向量,以计算每个词语在给定语料库环境下的分布式词向量。
[0078]
具体的,word2vec是一种词嵌入(word embedding)方法,它包含两种训练模型,即跳字模型(skip-gram)和连续词袋模型(continuous bag of words,cbow)。
[0079]
跳字模型的计算方法逆转了cbow的因果关系,利用当前位置词语w(t)来预测上下文中词的概率,即p(w(i)|w(t)),其中,t-k≤i≤t+k且i≠k。
[0080]
连续词袋模型利用上下文或周围的词语来预测当前位置词语w(t)的概率,即p(w(t)|w(t-k),w(t-(k-1)),

,w(t-1),w(t+1),w(t+2),

,w(t+k)),具体的,连续词袋模型
是一个三层神经网络。
[0081]
s32、通过扩展word2vec模型对短文本的向量化。
[0082]
具体的,定义数据块d
t
中短文本向量化表示记为:向量化表示记为:其中,表示短文本中单词个数,vec(wdi)表示短文本中第i个词wdi对应的词向量。循环迭代以得到数据块dt中所有短文本的向量化表示vec(d
t
)。
[0083]
s4、在一个主节点和三个子节点构成的标准集群中,主节点将分类器权重广播到所述子节点,数据流通过分布式文件管理系统将所述数据块分发至所述子节点,主节点轮询等待所述子节点对数据块的处理结果,随后获取每个子节点处理的权重梯度之和,更新主节点,随后处理下一个数据块,直至数据流结束。
[0084]
spark是一个在集群上运行的并行编程模型,其中有一个主节点driver处理spark驱动程序并使用集群管理器将任务发送给三个执行程序的executor。其中driver是spark的驱动器节点,主要负责executor之间的任务(task)调度。executor是spark程序中的一个jvm进程,负责运行spark作业中具体的任务,并且将执行结果返回给driver。
[0085]
为了实现标准集群,首先,主节点driver将分类器权重广播到所有子节点executor,然后轮询等待其对数据块处理完后,获取每个子节点处理的权重梯度之和,主节点执行参数在线更新之后按上述步骤循环处理下一个数据块,直至数据流结束。
[0086]
也就是说,每个工作节点都有自己的本地训练数据且各自的模型初始值可以不同,利用本地训练数据更新本地模型参数。本地模型完成一轮参数更新后,所有节点依据相应拓扑与同步算法,开始对本地模型参数进行通信并聚合更新全局参数,最终各工作节点获取新的全局模型准备进入下一轮迭代。
[0087]
s41、机器学习算法通常来说通过给定数据和模型,对目标函数进行迭代直至收敛,具体公式为:
[0088]mt
=f(m
t-1

l
(m
t-1
,d));
[0089]
其中,t表示迭代次数,δ
l
为目标函数,f做模型更新。
[0090]
除此之外,至少有两种情况需要并行场景。
[0091]
第一种情况是:数据量太大需要对数据进行切分在多节点上并行,此时,每个工作节点利用本地数据进行训练,并通过一定的通信算法同步更新,此时的迭代公式为:
[0092][0093]
第二种情况是:机器学习模型太大,以至于需要对模型进行划分并在工作节点上分别训练时,此时的迭代函数可表示为:
[0094][0095]
其中,是模型调度函数;目标函数在各个节点训练的子模型上,对参数进行选择。
[0096]
s42、数据流通过hdfs分布式文件系统将所有数据块均衡的分发到各子节点进行
分布式参数训练。
[0097]
以dt数据块为例,主节点首先将分类器权重广播到所有子节点,然后轮询等待子节点对数据块进行处理,以获取每个子节点处理的权重梯度之和,得到其中,δw(d
t
)为权重梯度之和。
[0098]
δw’(d
t
)为一个|r|维的向量,记为)为一个|r|维的向量,记为其中为分类器对应权重梯度,主节点执行参数在线更新之后按上述步骤循环处理下一个数据块,直至数据流结束。
[0099]
hdfs文件系统将数据块d
t+1
划分成三份数据集合,即划分成三份数据集合,即并根据之前描述的word2vec的词向量集合,再对数据块进行向量化处理,得到短文本向量化表示和
[0100]
然后主节点将分类器ft的各个特征权重广播至所有的子节点,并等待所有子节点完成对短文本d(d∈d
t+1
)的预测,同时将本地短文本中存在的新词文本回传给主节点,主节点获取所有子节点对训练数据块的预测信息与数据块中存在的新词文本集合信息,输出预测结果。
[0101]
s5、初始化cnn参数,输入至卷积神经网络进行并行化训练,在spark平台下构建基于分布式机器学习的文本分类模型,以对文本进行分类,其中,sigmod是cnn最终的激活函数。
[0102]
s51、卷积层和池化层是cnn的核心组件,经过卷积和池化操作,将原始特征映射到更高层次维度的语义空间。
[0103]
假设某文本包含n个单词,词向量维数为k,则输入可表示为n
×
k维的文本矩阵x,x={x1,x2,...,xn}
t
,其中,xi为第i个词的词向量。
[0104]
通过设置不同长度的卷积核,cnn可以进行丰富的局部特征提取,定义卷积核的尺寸为h,权值矩阵和偏置分别为w∈rh×k和b∈r。
[0105]
将输入x分为{x
1:h
,x
2:h+1
,...,x
i:i+h-1
,...,x
n-h+1:n
},每次卷积操作对第i步时滑动窗口内的信息x
i:i+h-1
∈rh×k进行特征提取,得到的属性值ci∈r,i∈[1,n-h+1],计算如下:
[0106][0107]
其中,f是非线性的激活函数,为卷积操作符。卷积特征图可描述为:
[0108]
c={c1,c2,...,c
n-h+1
}。
[0109]
s52、池化层负责对卷积层提取到的信息进行采样并对部分信息进行保留,同时为下一层的计算减少参数,加快模型的训练速度。
[0110]
其中,池化层保留的信息是采样得到的信息中重要的信息,对于m个卷积核,生成的池化特征图可表示为:
[0111][0112]
s53、全连接层将样本从特征空间映射到标记空间。
[0113]
主要参数为权值矩阵wf和偏置bf,将池化层得到的特征信息输入到全连接层,然后通过softmax层输出归一化的分类概率y:
[0114][0115]
假设d维向量为v,vj表示v中的第j个元素,则其softmax值计算如下:
[0116][0117]
通过参数共享机制,cnn能够较好地处理高维数据,并且在建模过程中,无需人为选择特征。
[0118]
除了上述简单的结构,对于具有复杂特征的数据集,通过卷积层-池化层反复堆叠,构建深层的特征提取网络。
[0119]
综上所述,本发明提供了一种基于分布式机器学习的文本分类方法,通过在分布式框架下采用spark集群环境来优化实现文本的分类,实现了文本分类的运行效率和精度;通过apache spark框架的适应性来探索卷积神经网络,充分利用了spark框架的并行优势,提高了文本分类的精度与时间性能;通过word2vec的分布式文本数据流分类,使得外部语料库构建word2vec词向量模型完成短文本的向量化过程。
[0120]
以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1