博客
关于我
python对英文文本进行one—hot编码
阅读量:239 次
发布时间:2019-03-01

本文共 1489 字,大约阅读时间需要 4 分钟。

1.单词级的one-hot编码(numpy编写)

#单词级别的one-hot编码import numpy as npsamples=['this cat sat on the mat',"this dog ate my homework"]token_index={   }#构造一个空的索引集合for sample in samples:    for word in sample.split():#将句子拆分成一个一个单词        if word not in token_index:            token_index[word]=len(token_index)+1#为每个唯一单词指定一个唯一索引max_length=1#对样本进行分词,只考虑每个样本前max-length个单词results=np.zeros(shape=(len(samples),max_length,max(token_index.values())+1))#将结果保存在results中for i ,sample in enumerate(samples):    for j ,word in list(enumerate(sample.split()))[:max_length]:        index=token_index.get(word)        results[i,j,index]=1print(results)

结果:

从图中可以看出one-hot矩阵是(15,11)的,index为(this, cat, sat, on, the, mat, dog , ate,…)

列名为token_index
在这里插入图片描述

2.利用Keras实现one-hot编码(keras内置函数)

from keras_preprocessing.text import Tokenizersamples=['this cat sat on the mat',"this dog ate my homework"]tokenizer=Tokenizer(num_words=1000)#创建一个分词器,设置只考虑前1000个单词tokenizer.fit_on_texts(samples)#构建单词索引sequences = tokenizer.texts_to_sequences(samples)  # 将字符串转换为整数索引组成的列表one_hot_results = tokenizer.texts_to_matrix(samples,mode='binary') # 也可以直接得到 one-hot 二进制表示。这个分词器也支持除 one-hot 编码外的其他向量化模式word_index = tokenizer.word_index  # 找回单词索引print("sequences\n",sequences)print("word_index\n",word_index )print("one_hot_results[0]\n",one_hot_results[0])print(one_hot_results)

结果:

从图中可以看出利用keras获得的one-hot编码也是以获得的前1000个单词为列名,但每个行却是以每一句话作为一个样本,一个样本为一个(1,1000)的向量。

在这里插入图片描述

总结:在对原始文本数据进行one-hot编码,更推荐用Keras的内置函数,这个函数在面对复杂的文本时,可以有效的去除特殊字符、只考虑数据集中常见的N个字符等优点。

转载地址:http://mjpv.baihongyu.com/

你可能感兴趣的文章
mysqldump的一些用法
查看>>
mysqli
查看>>
MySQLIntegrityConstraintViolationException异常处理
查看>>
mysqlreport分析工具详解
查看>>
MySQLSyntaxErrorException: Unknown error 1146和SQLSyntaxErrorException: Unknown error 1146
查看>>
Mysql_Postgresql中_geometry数据操作_st_astext_GeomFromEWKT函数_在java中转换geometry的16进制数据---PostgreSQL工作笔记007
查看>>
mysql_real_connect 参数注意
查看>>
mysql_secure_installation初始化数据库报Access denied
查看>>
MySQL_西安11月销售昨日未上架的产品_20161212
查看>>
Mysql——深入浅出InnoDB底层原理
查看>>
MySQL“被动”性能优化汇总
查看>>
MySQL、HBase 和 Elasticsearch:特点与区别详解
查看>>
MySQL、Redis高频面试题汇总
查看>>
MYSQL、SQL Server、Oracle数据库排序空值null问题及其解决办法
查看>>
mysql一个字段为空时使用另一个字段排序
查看>>
MySQL一个表A中多个字段关联了表B的ID,如何关联查询?
查看>>
MYSQL一直显示正在启动
查看>>
MySQL一站到底!华为首发MySQL进阶宝典,基础+优化+源码+架构+实战五飞
查看>>
MySQL万字总结!超详细!
查看>>
Mysql下载以及安装(新手入门,超详细)
查看>>