任务4自然语言处理

文章目录
一. 概念介绍
1.词袋模型(Bag of Words)
2.停用词(Stop Words)
3.TF-IDF模型
3.1 词频(TF)
3.2 逆文档频率(Inverse Document Frequency)
3.3 TF-IDF
4. 中文分词
二. 中文文本挖掘预处理流程
1. 特点
2. 数据收集
3. 中文分词
4. 引入停用词
5. 特征处理
6. 建立分析模型
一. 概念介绍
1.词袋模型(Bag of Words)
词袋模型假设我们不考虑文本中词与词之间的上下文关系,仅仅只考虑所有词的权重。而权重与词在文本中出现的频率有关。
词袋模型首先会进行分词,在分词之后,通过统计每个词在文本中出现的次数,我们就可以得到该文本基于词的特征,如果将各个文本样本的这些词与对应的词频放在一起(简单来说就是拿出一个向量,向量就是由文本中出现的所有词和该词出现的频率所组成),就是我们常说的向量化。向量化完毕后一般也会使用TF-IDF进行特征的权重修正,再将特征进行标准化。 再进行一些其他的特征工程后,就可以将数据带入机器学习算法进行分类聚类了
词袋模型的三部曲:分词(tokenizing),统计修订词特征值(counting)与标准化(normalizing)
词袋模型有很大的局限性,因为它仅仅考虑了词频,没有考虑上下文的关系,因此会丢失一部分文本的语义。但是大多数时候,如果我们的目的是分类聚类,则词袋模型表现的很好
如果词汇表的特征太大,大到内存不够用,此时就应该使用Hash Trick 算法进行降维,但是由于分布式计算框架的存在,一般不会出现内存不够的情况。因此,实际工作中使用的都是特征向量化(关于Hash Trick 算法的具体用法可以自己去google)
2.停用词(Stop Words)
文章出现很多,但是对查询结果无用,必须过滤掉的词,比如“的”“是”“在”这些功能词,这些停用词都是人工输入、非自动化生成的,生成后的停用词会形成一个停用词表。但是,并没有一个明确的停用词表能够适用于所有的工具。目前比较常用的中文停用词表有哈工大的,百度的等等,下载链接见下:https://github.com/goto456/stopwords

3.TF-IDF模型
3.1 词频(TF)
这个很好理解,就是文本中各个词的出现频率统计,考虑到文章有长短之分,为了便于不同文章的比较,进行“词频”标准化,即

或者


3.2 逆文档频率(Inverse Document Frequency)
两个词在同一篇章出现次数相同,并不能说明这两个词的重要性相同,因为可能有的词本来就很容易出现,在所有文章中出现的概率都很大,比如“中国,公司”等等。如果某个词日常生活中比较少见,但是它在这篇文章中多次出现,那么它很可能就反映了这篇文章的特性,正是我们所需要的关键词。所以还需要一个重要性调整系数,衡量一个词是不是常见词。用统计学语言表达,就是在词频的基础上,要对每个词分配一个"重要性"权重,这个权重叫做"逆文档频率"(IDF),它的大小与一个词的常见程度成反比。其中IDF的公式如下:

如果一个词越常见,那么分母就越大,逆文档频率就越小越接近0。分母之所以要加1,是为了避免分母为0(即所有文档都不包含该词)。log表示对得到的值取对数

3.3 TF-IDF


TF-IDF与一个词在文档中的出现次数成正比,与该词在整个语言中的出现次数成反比。所以,自动提取关键词的算法就是计算出文档的每个词的TF-IDF值,然后按降序排列,取排在最前面的几个词
TF-IDF是非常常用的文本挖掘预处理基本步骤,但是如果预处理中使用了Hash Trick,则一般就无法使用TF-IDF了,因为Hash Trick后我们已经无法得到哈希后的各特征的IDF的值。使用了IF-IDF并标准化以后,我们就可以使用各个文本的词特征向量作为文本的特征,进行分类或者聚类分析
4. 中文分词
前面那篇博客已经介绍过,再次就不描述了,直接附上链接:https://blog.csdn.net/orient928/article/details/89220286

二. 中文文本挖掘预处理流程
1. 特点
中文文本是没有像英文的单词空格那样隔开的,因此不能直接像英文一样可以直接用最简单的空格和标点符号完成分词。所以一般我们需要用分词算法来完成分词
中文的编码不是utf8,而是unicode。这样会导致在分词的时候,和英文相比,我们要处理编码的问题
2. 数据收集
文本数据的获取方法一般有两种:使用别人做好的语料库和自己用爬虫去在网上去爬自己的语料数据。由于我现在处于入门阶段,所以使用的数据集都是别人提供好的,故这里和后面的除去数据中非文本部分、处理中文编码问题就不详细描述了,感兴趣的可以去看刘建平大佬的博客,在此附上链接:https://www.cnblogs.com/pinard/p/6744056.html

3. 中文分词
网上大部分推荐的都是结巴分词库,我也实际操作了一下,中间出了很多问题目前还未解决,这里就不放上实操截图了

4. 引入停用词
一般使用 scikit-learn 做特征处理的时候就可以通过参数 stop_words 来引入一个数组作为停用词表,很方便

5. 特征处理
即上述所说的向量化和 TF-IDF 特征处理。一般我们使用 scikit-learn 的 TfidfVectorizer 类来进行,这个类可以帮助我们完成向量化,TF-IDF和标准化三步。当然,还可以帮我们处理停用词,很实用。

6. 建立分析模型
每段文本的 TF-IDF 的特征向量,我们就可以利用这些数据建立分类模型,或者聚类模型了,或者进行主题模型的分析
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值