机器学习之文本特征提取

机器学习算法往往无法直接处理文本数据,需要把文本数据转换为数值型数据,One-Hot表示把文本转换为数值的一种方法。一,One-Hot表示One-Hot表示是把语料库中的所有文本进行分词,把所有单词(词汇)收集起来,并对单词进行编号,构建一个词汇表(vocabulary),词汇表是一个字典结构,key是单词,value是单词的索引vocabulary = { 'one':0,'hot':1...
摘要由CSDN通过智能技术生成

机器学习算法往往无法直接处理文本数据,需要把文本数据转换为数值型数据,One-Hot表示把文本转换为数值的一种方法。

一,One-Hot表示

One-Hot表示是把语料库中的所有文本进行分词,把所有单词(词汇)收集起来,并对单词进行编号,构建一个词汇表(vocabulary),词汇表是一个字典结构,key是单词,value是单词的索引

vocabulary = { 'one':0,'hot':1, ...'term':n-1}

如果词汇表有n个单词构成,那么单词的索引从0开始,到n-1结束。

有了词汇表之后,就可以使用向量来表示单个词汇。每一个词汇都表示为一个由n列构成的向量,称作词向量,词向量的第0列对应词汇表(vocabulary)中的第0号索引,词向量的第1列对应词汇表(vocabulary)中的第1号索引,依次类推。

词汇向量有n列,但是只有一列的值为1,把值为1的列的索引带入到词汇表(vocabulary)中,就可以查找到该词向量表示的词汇,也就是说,对于某个单词 term,如果它出现在词汇序列中的位置为 k,那么它的向量表示就是“第 k 位为1,其他位置都为0 ”,这就是One-Hot(独热)名称的由来。

1,用One-Hot表示单词

例如,有语料库(corpus)如下:

John likes to watch movies. Mary likes movies too.
John also likes to watch football games.

把上述语料中的词汇整理出来并进行排序(具体的排序原则可以有很多,例如可以根据字母表顺序,也可以根据出现在语料库中的先后顺序),假设我们的词汇表排序结果如下:

{"John": 1, "likes": 2, "to": 3, "watch": 4, "movies": 5, "also":6, "football": 7, "games": 8, "Mary": 9, "too": 10}

那么,得出如下词向量表示:
John: [1, 0, 0, 0, 0, 0, 0, 0, 0, 0] 
likes: [0, 1, 0, 0, 0, 0, 0, 0, 0, 0]
……

2,文档向量

文档向量的表示方法是直接把各词的词向量表示加和,那么原来的两句话的向量表示如下:
[1, 2, 1, 1, 2, 0, 0, 0, 1, 1]

[1, 1, 1, 1, 0, 1, 1, 1, 0, 0]

文档向量中,列的值表示词在文档中出现的次数。

3,One-Hot表示的缺点 

One-Hot方法很简单,但是它的问题也很明显:

  • 没有考虑单词之间的相对位置,任意两个词之间都是孤立的;
  • 如果文档中有很多词,词向量会有很多列,但是只有一个列的值是1;

4,One-Hot表示的应用

sklearn使用词袋(Bag of Words)和TF-IDF模型来表示文本数据,这两个模型都是One-Hot表示的应用,其中,词袋模型对应的就是文档向量。

二,词袋模型

词袋模型(BoW)是用于文本表示的最简单的方法, BoW把文本转换为文档中单词出现次数的矩阵,该模型只关注文档中是否出现给定的单词和单词出现频率,而舍弃文本的结构、单词出现的顺序和位置。

1,构建词袋模型的步骤

对于一个文本语料库,构建词袋模型有三个步骤:

  • 文本分词:把每个文档中的文本进行分词
  • 构建词汇表:把文本分词得到的单词构建为一个词汇表,包含文本语料库中的所有单词,并对单词进行编号,假设词汇表有n个单词,单词编号从0开始,到n-1结束,可以把单词编号看作是单词的索引,通过单词编号可以唯一定位到该单词。
  • 词向量表示:每个单词都表示为一个n列的向量,在单词编号(词汇索引)位置上的列值为1&
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悦光阴

你的鼓励是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值