2020 泰迪杯数据 文本挖掘入门

1.数据预处理

对于中文文本,在进行NLP,最重要的一步就是对文本进行合理的分词。这一步的好坏对后面模型的精确与否有深刻的影响。我们对留言文本分词采用的工具是jieba。Jieba是python的一个中文分词模块,GitHub上称其为最好的中文分词组件。这里我们注意到对于问政系统的留言中存在着大量的地名以及机构名。仅仅使用jieba分词,很容易将这些比较长的地名以及机构名拆分成一个个词语,这样很容易破坏留言原本的语言,给模型的训练带来困难。因为这些地名与机构名是在留言中往往以高频词出现的。

基于上面的问题,我们必须要进行命名体识别,以期望提高后面模型的精度。所谓命名体识别,就是指从文本中识别出命名性指称项。狭义上,是识别出人名、地名和组织机构名这三类命名实体。这里我们借助百度提供的AI开放平台进行命名体识别,得到留言文本中的地名以及机构名后,再将它们加入jieba词库进行分词。

最后一步是对留言进行停用词处理。在文本处理中,停用词是指没有信息量的词,其功能及出现极其普遍,通常是一些单字,单字母以及高频的单词,在中文中如“我、的、吗、了”等,英文中如的“the、this、an、a、of”等。一般在预处理阶段便将其删除,避免对文本造成负面影响。此处采用使用特定语言的停用词列表的方法对本文所用的停用词进行删除——停用词取自百度停用词表。我们对文本预处理的过程可以用图1表示。

 

2.特征抽取

文本的表示及其特征项的选取是文本挖掘的一个基本问题,它把从文本中抽取出的特征词进行量化来表示文本信息。目前人们通常采用向量空间模型(VSM)来描述文本向量,但是如果直接用分词算法和词频统计方法得到的特征项来表示文本向量中的各个维,那么这个向量的维度将是非常的大。这种未经处理的文本矢量不仅给后续工作带来巨大的计算开销,使整个处理过程的效率非常低下,而且会损害分类、聚类算法的精确性,从而使所得到的结果很难令人满意。因此,必须对文本向量做进一步处理,在保证原文含义的基础上,找出对文本特征类别最具代表性的文本特征。为了解决这个问题,最有效的办法就是通过特征选择来降维。

我们主要选择两种评估方法来进行文本特征的选取: TF-IDF算法与信息增益。这两个评估函数通过对文本所有特征进行评估并打分,分数也就是权重。然后将所有特征按权重大小排序,提取预定数目的最优特征作为提取结果的特征子集。由此可见,特征提取的效果与评估函数的质量息息相关。为此我们尝试合并这两个评估函数,来提高特征提取的效果。

 2.1TF-IDF算法

 文本分类最常用的算法就是TF-IDF算法,其中TF称为词频( term-frequency ),用以计算该词描述文档内容的能力,ID称为逆文档词频 ( inverse document-frequency),用于计算该词区分文档的能力。使用tf-idf算法代替原始文档的词频的目的是为了降低高频词的影响以及提高低频词的影响。从经验上讲,对于在每个文档中都出现的词可以认为是无用的,而那些只出现在一部分文档中的词对分类更为有用。计算的公式如2.1,公式中t代表特征,也就是单词。d 代表某一个文档。

 

                                                                      

2.1

                                                                       

2.2

这里我们采用的 的计算公式见2.2。(这里和很多参考书的标准定义是不同的)其中 是文档的总数量, 是文档集中出现特征 的文档数量。最后加1是为了不忽略出现在所有文档中的单词。 代表出现在某篇文档d中特征t的数量。从公式中可以看出,字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。

2.2信息增益

信息增益也是有效的特征选择方法,该方法主要是看特征能够给分类系统带来多少信息,带来的信息越多,该特征越重要[4]。在信息论中关于信息熵的定义如式2.3。

                                                                           

2.3

 

其中 是一个变量, 是变量X取值x_i 的概率。对与分类系统而言,它的可能取值为c_i ,每一类出现的概率为 。所以分类系统的熵表示为式2.4。信息增益是对于一个一个特征而言的,对于某一个特征T ,系统没有它与有它时信息熵之差就是该特征的信息增益。在考虑存在一个特征T ,系统的信息量是多少时,必须要涉及到一个概念就是“条件熵”。所谓条件熵就是指

                                   

                                                                         

2.4

 

系统的特征T 被固定时,系统具有的信息熵。对于文本分类系统的特征T,只有两种情况,就是文档中存在特征t,以及不存在特征t ,不存在时用来表示。条件熵公式如2.5。 表示T出现的概率,P ( \bar t)表示不存在特征T的概率。

                                                        

2.5

将2.5式进一步展开,如2.6。

 

                                                                

2.6

                                                                

      

因此特征 给系统带来的信息增益就可以写成系统原本的熵与固定特征T后的条件熵之差,如式2.7。熵表示系统的混乱程度[,因此系统引入一个特征后信息增益越大也就表示系统变得更有序,说明该特征更有利于分类。

                                                                           

2.7

3.文本向量化

3.1词袋模型

这是一种离散化方法。词袋模型是一个简化了表达模型,在该模型下,一个文本可以用装着这些词的袋子来表示,这种方式不考虑文法以及词的顺序。在数学上,任何一个文本可以用一个固定长度向量来表示。向量的一个元素就表示一个特征t,元素的值为整数,一般等于这个特征t 在文本中出现的次数。有些时候也可以只使用0,1来表示。即文本出现这个特征t对应位置的元素就记为1,不出现就记为0。

词袋模型是非常有效的,但其也存在数个缺点。首先它失去了词序的信息,比如“杰克喜欢玛瑞”与“玛瑞喜欢杰克”的词向量是一样的。虽然可以通过n-grams模型去解决这一缺点,但与此同时会带来维度灾难以及使向量矩阵特别稀疏。其次,这个模型不能学习单词下潜在的语义。

对于这个模型,最常见的用法是结合tf-idf 算法为每一个特征加权处理,这样在往往能更合理的表示一个文本。同时结合信息增益等方法选取特征可以有效避免维度灾难。

3.2Doc2vec

这是一种分布式表示方法。Doc2vec是一种段落向量化的非监督算法,它的提出是建立在word2vec基础上的。该算法能够从边长的文本(句子、段落和文档)中学习到固定长度的特征向量。这个向量能够从段落中给定的上下文样本去预测下一个词,原论文中提到两种方法分别是:PV-DM与PV-DBOW。我们在使用时仅用到了PV-DM方法,PV-DM方法与word2vec中CBOW很像。

                                          图  PV-DM学习段落向量结构图

在Doc2vec中,每一句话用唯一的向量来表示,用矩阵D的某一列来代表。每个词也用唯一的向量来表示,用矩阵W 的某一列来表示。每次从一句话中滑动采样固定长度的词,取其中一个词作为预测词,其他词作为输出词。输入词对应的词向量Word vector与本句话对应的句子向量Paragraph vector作为输入层的输入,将本句话的向量和本次采样的词向量相加求平均或者累加构成一个新的向量x,进而使用这个向量x预测此次窗口内的预测词。

Paragraph vector在同一个句子的若干次训练中是共享的,它可以被看做是句子的主旨。随着一句话每次滑动取若干词训练的过程中,作为每次训练的输入层一部分共享的Paragraph vector,该向量表达的主旨将会越来越准确。

编码后可以使用各种算法了!!!!!

 

 

 

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值