文本单词one-hot编码

摘要:
#字母单词_Id={‘a’:‘b’:‘c’:‘d’:‘e’:‘f’:‘j’:‘k’:‘n’:‘p’:‘s’:‘u’:25}_ num=len(text.replace(',

单词->字母->向量

神经网络是建立在数学的基础上进行计算的,因此对数字更敏感,不管是什么样的特征数据都需要以向量的形式喂入神经网络,无论是图片、文本、音频、视频都是一样。

one-hot编码,也就是独热编码,是一种常用的编码手段。在多分类识别的时候,喂入神经网络的标签就是独热码,比如手写数字识别一共有10个分类,某张图片标签是6,则独热码为:0 0 0 0 0 0 1 0 0 0

下面演示将一个单词进行ont-hot编码:

#字母表
word_id = {'a': 0, 'b': 1, 'c': 2, 'd': 3, 'e': 4, 'f': 5, 'g': 6, 'h': 7, 'i': 8, 'j': 9,'k': 10, 'l': 11, 'm': 12, 'n': 13, 'o': 14,'p': 15, 'q': 16, 'r': 17, 's': 18, 't': 19,'u': 20, 'v': 21, 'w': 22, 'x': 23, 'y': 24, 'z': 25}

#进行编码的单词
word = 'china'

#ont-hot编码
arr = np.zeros((len(word),len(word_id)))
for k,w in enumerate(word):
    arr[k][word_id[w]] = 1

print(arr)

打印结果:

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

文本->单词->向量

文本编码则与单词编码不同,单词编码以26个字母为映射字典,文本编码需要以单词为单位进行字典映射,因为单词是有语义的,在实际场景中往往捕捉的是文本所表达的意思,而不是文本本身的字母组成。

#要编码的文本
text = 'I am Chinese, I love China'
total_num = len(text.replace(',',' ').split())

#映射字典
word_id = {}
sentences = text.split(',')
for line in sentences:
    for word in line.split():
        if word not in word_id:
            word_id[word] = len(word_id)

print(word_id)

#ont-hot编码
arr = np.zeros((len(sentences),total_num,len(word_id)))
for k,v in enumerate(sentences):
    for kk,vv in enumerate(v.split()):
        arr[k][kk][word_id[vv]] = 1

print(arr)

打印结果:

{'I': 0, 'am': 1, 'Chinese': 2, 'love': 3, 'China': 4}
[[[1. 0. 0. 0. 0.]
[0. 1. 0. 0. 0.]
[0. 0. 1. 0. 0.]
[0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0.]]

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

免责声明:文章转载自《文本单词one-hot编码》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇配置_DruidDataSource参考配置excel表 更改后缀名 xlsx转成csv csv转换xlsx下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

用Docker部署自己的JupyterHub

【话在前头】 用 Docker 部署 JupyterLab 感觉是部署 JupyterLab 最方便的方式了,官方提供了很多可选的镜像,也可以自己从 jupyter/base-notebook 中继续打包,镜像启动命令加上“--NotebookApp.password”就可以直接用密码登录用了。虽然只是自己一个人用,但是如果放在互联网上访问的话,总感觉不是...

filter()数组遍历

filter() 方法对源数组的每个元素判断。返回符合要求的元素,并将他们组成一个新的数组 特性: 1、filter()不会改变源数组 2、filter()返回新数组 语法: arr.filter(callback(currentValue [, index [, array]])[, thisArg]) 参数: arr.filter()有三个参数,...

PostgreSQL物理坏块和文件损坏案例分享

作者简介 王睿操,平安好医数据库架构岗,多年postgresql数据库运维开发工作。曾就职于中国民航信息,迪卡侬。对其他数据库产品也有一定的涉猎。 背景 笔者最近发现很多朋友经常遇到PostgreSQL坏块或者数据混乱的情况,网上中文资料比较少,于是整理了一下笔者遇到各种各样的报错以及解决方案 案例一:物理坏块 逻辑备份时报错 pg_dump: Dumpi...

【转帖】在SQL Server中如何获得刚插入一条新记录的自动ID号

转自http://blog.csdn.net/wangji163163/archive/2008/05/09/2424191.aspx 在SQL Server中如何获得刚插入一条新记录的自动ID号收藏 ---------------------------------------------------------------  使用[IDENT_C...

nuxt基础一

nuxt项目的文件夹目录 1.nuxt-link组件和router-link组件一样 2.pages文件夹中文件名就是路由路径名(无需配置路由路径),是页面组件。   laouts文件夹,是公共的模板的内容组件,公共的组件<Nuxt />,必须要加 不过在 Nuxt.js 框架中,我们有了新的变化,layouts对应目录中的layouts文件...

使用crypto模块实现md5加密功能(解决中文加密前后端不一致的问题)

正常情况下使用md5加密 var crypto = require('crypto'); var md5Sign = function (data) { var md5 = crypto.createHash('md5').update(data).digest('hex'); return md5; } 实际开发中经常需要前端nodej...