文本话题分析文本分类的一个应用领域,主要是针对文本表现的主题的划分。目前,针对文本话题分类的研究还是很热的,主要包括微博,知乎等大型话题社区,论坛类网站。之前知乎针对该问题在著名的机器学习比赛网上,还开展了比赛,有关技术和code有很多。文本话题分析主要是应用是对文本进行领域划分、个性化推荐、社交网络、广告预测等各个领域等。而特征选择会对分类结果产生极大的影响。因此,文本的特征表示也是目前各界研究的重要问题。
有关文本的表示,我们在Sentence representation中已经作出详细介绍,但是目前有关这些文本的表示各具特色,适应场景也不同。其中针对文本分类中主流的是表示方法是tf-idf,LDA,word2vec等。
词频 (term frequency, TF) 指的是某一个给定的词语在该文件中出现的次数。
逆向文件频率 (inverse document frequency, IDF) 是一个词语普遍重要性的度量。某一特定词语的IDF,可以由总文件数目除以包含该词语之文件的数目,再将得到的商取对数得到。
TF= (词在文档中出现的次数)/ (文章总词数),IDF= log(语料库中文档总数/(包含该词的文档数+1))
TF-IDF= TF* IDF
TF-IDF值越大,则这个词成为一个关键词的概率就越大。
LDA(Latent Dirichlet Allocation)主要是文本语义挖掘的利器之一。在主题模型中,主题表示一个概念、一个方面,表现为一系列相关的单词,是这些单词的条件概率。每个主题就好比是一个桶,里面装着很多在当前主题下出现频率最高的词。
LDA主要解决如何怎样才能生成主题?对文章的主题应该怎么分析等问题。
如何生成文档(LDA paper 中方法):
1.unigram method
我们需要现准备一个很大的词库(原始训练语料数据分词获得),然后统计词库中的每一个词的出现概率p(w).
假设生成包含n个词的文档,那么unigram method要做生成一篇文档需要按照以下流程:
For I --> 1:n
do choose a word from WordSet : p(w)
image
Problem:unigram method 生成的文档不能够有明确的文本主题。
2. Mixture of unigram
为解决unigram method的问题,提出使用Mixture of unigram method,每一个词w对于每一个主题z都有一个条件概率P(w|z),主题存在一个概率分布P(z)
生成一篇文档我们需要首先选定文章主题z,针对该主题z,根据词主题条件概率生成文档,流程如下:
Choose a topic z : P(z)
For i --> 1:n
do choose a word from WordSet : P(w|z)
Problem: Mixture of unigram 生成的文档已经有主题了,但是生成的文档只有一个单一主题,这显然不符合真实文档的特点,通常文档都是包含不同主题,只是侧重某一主题。
3.LDA method
LDA 生成具有多主题的文档。首先构建一个主题向量,每次选词之前,根据主题向量θ选择主题z,然后根据主题z选择词w.
θ是一个主题向量,向量的每一列表示每个主题在文档出现的概率,该向量为非负归一化向量;p(θ)是θ的分布,具体为Dirichlet分布,即分布的分布;N和w_n同上;z_n表示选择的主题,p(z|θ)表示给定θ时主题z的概率分布,具体为θ的值,即p(z=i|θ)= θ_i;p(w|z)同上。
这种方法首先选定一个主题向量θ,确定每个主题被选择的概率。然后在生成每个单词的时候,从主题分布向量θ中选择一个主题z,按主题z的单词概率分布生成一个单词。其图模型如下图所示:
Choose parameter θ : p(θ);
For i in 1:N
do
Choose a topic z_n : p(z|θ);
Choose a word w_n : p(w|z);
从上图可知LDA的联合概率为:
把上面的式子对应到图上,可以大致按下图理解:
从上图可以看出,LDA的三个表示层被三种颜色表示出来:
1. corpus-level(红色):α和β表示语料级别的参数,也就是每个文档都一样,因此生成过程只采样一次。
2.document-level(橙色):θ是文档级别的变量,每个文档对应一个θ,也就是每个文档产生各个主题z的概率是不同的,所有生成每个文档采样一次θ。
3. word-level(绿色):z和w都是单词级别变量,z由θ生成,w由z和β共同生成,一个 单词w对应一个主题z。
通过上面对LDA生成模型的讨论,可以知道LDA模型主要是从给定的输入语料中学习训练两个控制参数α和β,学习出了这两个控制参数就确定了模型,便可以用来生成文档。其中α和β分别对应以下各个信息:
α:分布p(θ)需要一个向量参数,即Dirichlet分布的参数,用于生成一个主题θ向量;
β:各个主题对应的单词概率分布矩阵p(w|z)。
把w当做观察变量,θ和z当做隐藏变量,就可以通过EM算法学习出α和β,求解过程中遇到后验概率p(θ,z|w)无法直接求解,需要找一个似然函数下界来近似求解,原文使用基于分解(factorization)假设的变分法(varialtional inference)进行计算,用到了EM算法。每次E-step输入α和β,计算似然函数,M-step最大化这个似然函数,算出α和β,不断迭代直到收敛。
BTM(Biterm topic model)是对LDA模型的一个改进算法,其原理和LDA基本相同,区别只是在将word转换为biterm (word pair example:(sentence_w1,sentence_w2)).详细内容参考论文
A Biterm Topic Model for Short Texts.pdf和Word Co-occurrence Augmented Topic Model in Short Text.pdf。
code address: https://github.com/liguoyu1/python/tree/master/codeNLP/Algorithm/TopicModel/BTM
Word2vec 就是将不可计算非结构化的词转化为可计算结构化的向量的模型,根据其训练方式的不同可以分为两种,skip-gram和CBOW。
Bert
最新的有关于NLP问题的特征表示,还是看一下大作,此处不再班门弄斧。
参考文献:
David M. Blei, AndrewY. Ng, Michael I. Jordan, Latent Dirichlet Allocation, Journal of Machine Learning Research 3, p993-1022,2003
本文提到几种数据文本特征表示方法由于各具特色和适应应用场景的不同,具体选择那种表示方式,仍需根据业务需求和具体实验结果来选择。