NLP-词向量:one hot

2019-08-21  本文已影响0人  Huoyo

在文本中,如果需要对其进行相似度计算或者其他计算时,文字是无法直接进行计算的,所以就需要对文本进行量化处理,也就是进行数字编码才能对文本进行计算,而one hot就是其中一种出现比较早也比较简单的编码方式。

一、one-hot编码

one-hot编码被称为【独热码,在英文文献中称做 one-hot code, 直观来说就是有多少个状态就有多少比特,而且只有一个比特为1,其他全为0的一种码制】^{[1]}。 简单的来说就是用0和1的编码方式来表示需要处理的一些信息,以达到该信息向量化的一种手段。

  • 性别:["男","女"]
  • 爱好:["篮球","足球","乒乓球"]

男、女的序号分别为0、1
篮球、足球、乒乓球的序号分别为0、1、2

性别有两个属性,那么可以两位的特征向量来表示男性和女生,分别为

男=(1,0),女=(0,1),

爱好有三个属性,那么可以三位的特征向量来表示篮球、足球和乒乓球,分别为

篮球=(1,0,0),足球=(0,1,0),乒乓球=(0,0,1)

二、文本的one-hot表示

假设有如下语料

明天 我们 去 看 电影
明天 我们 去 爬山
明天 我们 去 运动
我 喜欢 打 篮球
我 不 喜欢 看 电视

上述五句话中一共涉及13个词,分别为

[明天 我们 去 看 电影 爬山 运动 我 喜欢 打 篮球 不 电视]

可以用13位的向量表示每一句话,分别如下

[1. 1. 1. 1. 0. 0. 1. 0. 0. 0. 0. 0. 0.]
[1. 1. 1. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0.]
[1. 1. 1. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0.]
[0. 0. 0. 0. 1. 1. 0. 0. 0. 1. 1. 0. 0.]
[0. 0. 0. 1. 1. 1. 0. 0. 0. 0. 0. 1. 1.]

三、基于keras代码实现

from keras.preprocessing.text import Tokenizer
corpus=[
'明天 我们 去 看 电影',
'明天 我们 去 爬山',
'明天 我们 去 运动',
'我 喜欢 打 篮球',
'我 不 喜欢 看 电视'
]

tokenizer=Tokenizer()
tokenizer.fit_on_texts(corpus)
sequences=tokenizer.texts_to_matrix(corpus)
print(sequences[:,1:])

【引用】
[1] 百度百科

上一篇下一篇

猜你喜欢

热点阅读