one-hot浅谈

首先为什么有one-hot?

如果在文本分类或者图片标签分类的过程中有3类,猫,狗,羊,最简单的标签我们可以让猫是0,狗是1,羊是2,但这就有一个问题,如果算距离的话,猫和狗的距离是1,但猫和羊的距离是2,不符合类别之前相互独立的特点。因此我们就可以用一个矩阵来表示:
猫用[1,0,0]表示,狗用[0,1,0]表示,羊用[0,0,1]表示;这样相互之间的距离都相等。如果预测的向量[0.8,0.1,0.1]那我们就可以认为是猫。

one-hot在nlp中的应用

如果我们想用one-hot来表示一句话,比如:我喜欢吃番茄;奶奶喜欢吃番茄;我喜欢奶奶;那么我们就可以首先对这三句话分词,一共有以下几个词:[我,喜欢,吃,番茄,奶奶],然后第一句可以表示为[1,1,1,1,0],第二句可以表示为[0,1,1,1,1],第三句可以表示为[1,1,0,0,1]

代码实现

from keras.preprocessing.text import Tokenizer

tokens_samples = ['我 喜欢 吃 番茄', '奶奶 喜欢 吃 番茄', '我 喜欢 奶奶']

#构建单词索引
tokenizer = Tokenizer()
tokenizer.fit_on_texts(tokens_samples)

word_index = tokenizer.word_index
print(word_index)  
print(len(word_index)) 

# 将词替换成索引
sequences = tokenizer.texts_to_sequences(tokens_samples)
print(sequences)  

# 构建one-hot编码
one_hot_results = tokenizer.texts_to_matrix(tokens_samples)

print(one_hot_results)

参考:【NLP修炼系列之词向量(一)】详解one-hot编码&实战

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值