当前位置:   article > 正文

NLP-什么是one hot?_onehot

onehot


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

一、one-hot编码

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

  • 有如下两组特征属性:
  • 性别:[“男”,“女”]
  • 爱好:[“篮球”,“足球”,“乒乓球”]

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

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

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

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

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

二、文本的one-hot表示

假设有如下语料

明天 我们 去 看 电影
明天 我们 去 爬山
明天 我们 去 运动
我 喜欢 打 篮球
我 不 喜欢 看 电视
  • 1
  • 2
  • 3
  • 4
  • 5

上述五句话中一共涉及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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

【引用】
[1] 百度百科

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Li_阴宅/article/detail/922736
推荐阅读
相关标签
  

闽ICP备14008679号