Python文本处理(3)——文本表示之 one-hot 词向量(1)——纯小白都能懂!


python 文本处理小结-供自己复习使用(对应“1127_文本处理之 one-hot 编码”)

1. 问题及概念

1.1 文本表示

文本表示最基础的怕是最基础的 one-hot 编码,基础的东西有利于我们从源头和本质上进行思考。比如,现在给一堆文本数据给你,你会如何思考将文本信息传递出去并让计算机识别?

text = ['Today is Friday, it is Sunny.',
       'And yesterday is Thursday, it was cloudy.',
       'Tomorrow is Saturday, it will be Sunny too.']

——单词作为文本的最小单位,我们自然而然的会想到从单词入手。

的确,自然语言就是一套用来表达含义的系统,在这套系统中,词,就是表义的基本单元。
词向量 被用来表示词的向量表征,也可被认为是词的特征向量

在大的方向上,有两种思路:One-hot 词向量的表示方法 和 word2vec 词向量的表示方法,这先总结前者。顺带提一下,这种把词映射为实数域向量的技术叫做词嵌入(word embedding)。

1.2 one-hot 表达

所谓 one-hot 词向量,就是用一个很长的向量来表示一个词,向量的长度为词典的大小N,向量的分量只有一个1,其他全为0,1的位置对应该词在词典中的索引。直观理解如下:

1.2.1 直观理解:

# 直观理解:
['Toeday', 'is', 'Friday'] # 就可以这样表示:

today = [1, 0, 0]
is_ = [010]
Friday = [0, 0 ,1] 

## 需注意一点,平时我们句子中的单词很可能是可能重复的!

1.2.2 本质理解:

这里可以将有信息价值的单词当做这个文本的“特征”,
那么如果文本中有k个不重复的单词,我们可以初略地认为该文本有 k 个”特征“;
特征组成了文本的“语料库”;
所以我们编码的目的:就是为这些不重复的单词进行编码。

2. 代码

接下来,以一个具体的、从头到尾的完整例子来仔细看看 如何使用one-hot 编码对文本进行编码。(纯属个人的思路)

记住上面所说的一点,既然词向量是特征,那么它必定不能重复。

2.1 代码思路

  • 文本
text = ['Today is Friday it is Sunny',
       'And yesterday is Thursday it was cloudy']
  • 语料库

先找出所有文档本中不重复的单词(总数记为N),放在一起, 并以出现的先后顺序(也可以按照首字母排序)作为语料库,如下图所示

# 语料库长这样:
corpus = ['Today', 'is', 'Friday', 'it', 'Sunny', 'And''Yesterday', 'Thursday', 'was', 'cloudy']
N = len(corpus)
print('语料库的大小为 {}'.format(N))
  • one-hot 向量编码

每单词词和从0到N-1的连续整数一一对应(每个词度都会有一个索引 i );
除了第i位置设置为1,其他为均设置为0(用1表示一个词出现在文本中,用0表示一个词没有出现)

即,我们要达到的效果如下:


# 应该长成这样,共 10 个 one-hot 向量:

Today = [1, 0, 0, 0, 0, 0, 0, 0, 0]
is_ = [0, 1, 0, 0, 1, 0, 0, 0, 0]
Friday = [0, 0, 1, 0, 0, 0, 0, 0, 0]
#... ...

2. 2 代码实现

  • 代码实现:
    这里使用 Pandas 里的 get_dummies()函数
import numpy as np
import pandas as pd 

text = ['Today is Friday it is Sunny',
       'Yesterday is Thursday it was cloudy']
# 先分词处理
text = [s.split() for s in text]
text = pd.Series(text)
print
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值