one-hot编码是将标记转换为向量的最常用、最基本方法。下面分别讲讲字符级的one-hot编码和单词级的one-hot编码。

单词级的one-hot编码

import numpy as npsamples = ['The cat sat on the mat.', 'The dog ate my homework.']  # 初始数据,本例中是一个句子,当然也可以是一篇文章token_index = {}   # 构建数据中所有标记的索引
for sample in samples:for word in sample.split():   # 用split方法对样本进行分词,实际应用中,可能还需要考虑到标点符号if word not in token_index:token_index[word] = len(token_index) + 1  #为每个唯一单词指定唯一索引,注意我们没有为索引编号0指定单词max_length = 10   # 对样本进行分词,只考虑样本前max_length单词results = np.zeros((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] = 1.

字符级的one-hot编码

import stringsamples = ['The cat sat on the mat.', 'The dog ate my homework.']
characters = string.printable   # 所有可打印的ASCII字符
token_index = dict(zip(characters, range(1, len(characters) + 1)))max_length = 50
results = np.zeros((len(samples), max_length, max(token_index.values()) + 1))
for i, sample in enumerate(samples):for j, character in enumerate(sample[:max_length]):index = token_index.get(character)results[i, j, index] = 1.

当然,Keras也自带了实现one-hot编码的方式:

from keras.preprocessing.text import Tokenizersamples = ['The cat sat on the mat.', 'The dog ate my homework.']tokenizer = Tokenizer(num_words=1000)  # i创建一个分词器(tokenizer),设置为只考虑前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('Found %s unique tokens.' % len(word_index))

更多精彩内容,欢迎关注我的微信公众号:数据瞎分析

实现对文本的简单one-hot编码相关推荐

  1. 文本处理的应用和编码文本历史

    文本处理的应用和编码文本历史 文本处理的应用有: 一些常见的文本处理/NLP 应用: • 信息检索 • 信息提取/文本挖掘 • 文本分类 • 自动总结 • NL 生成 • 机器翻译 应用:IR 信息检 ...

  2. 【浙大网新图灵通讯】无废话简单高效C#编码规范20100611

    无废话简单高效C#编码规范20100611   自己看自己的代码啥问题也没有,但是一个团队.N多个人.N多年的代码,就比较难维护.难阅读了,什么样的不好的习惯.错误漏洞能出来的就全出来了. 第1章   ...

  3. python输出箭头代码_python matplotlib 注释文本箭头简单代码示例

    注释文本箭头 结果展示: 完整代码示例: import numpy as np import matplotlib.pyplot as plt fig,ax = plt.subplots(figsiz ...

  4. 用java实现对字符串文本的哈夫曼编码与解码

    哈夫曼树与编码的创建过程及发展由来 这里基础知识就不再叙述了,请参考博客 https://www.cnblogs.com/alomsc/p/12736502.html#:~:text 写的非常详细,初 ...

  5. NLP:自然语言处理技术中常用的文本特征表示方法(整数编码、one-hot编码法、BOW法、TF-IDF法、N-Gram法等)及其代码案例实现

    NLP:自然语言处理技术中常用的文本特征表示方法(整数编码.one-hot编码法.BOW法.TF-IDF法.N-Gram法等)及其代码案例实现 目录 自然语言处理技术中常用的文本特征表示方法(整数编码 ...

  6. php gmt文本转时间,PHP 使用gmdate将一个UNIX 时间格式化成 GMT 文本的简单示例

    对PHP gmdate –将一个UNIX 时间格式化成 GMT 文本感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧! 语法如下: /** * PHP gmdate –将一个UNIX 时间格 ...

  7. Python中文文本分析时遇到的编码问题小结

    最近在做python的中文文本分析,万事开头难,最开始就发现了很多中文编码问题,以下对问题进行了汇总. 问题1:中文文本读取时遇到的编码问题 在读取文件后,直接print就会产生问题,如下: 解决方案 ...

  8. ML之CatBoost:金融风控之通过数据预处理(中位数填充/校验同分布/文本型日期拆解/平均数编码-标签编码)利用CatBoost算法+模型可解释性(Shap/LIME)预测用户的车险是否为欺诈行为

    ML之CatBoost:金融风控之通过数据预处理(中位数填充/校验同分布/文本型日期拆解/平均数编码-标签编码)利用CatBoost算法+模型可解释性(Shap/LIME)预测用户的车险是否为欺诈行为 ...

  9. ML之kmeans:通过数据预处理(分布图箱线图热图/文本转数字/构造特征/编码/PCA)利用kmeans实现汽车产品聚类分析(SSE-平均轮廓系数图/聚类三维图/雷达图/饼图柱形图)/竞品分析之详细

    ML之kmeans:通过数据预处理(分布图箱线图热图/文本转数字/构造特征/编码/PCA)利用kmeans实现汽车产品聚类分析(SSE-平均轮廓系数图/聚类三维图/雷达图/饼图柱形图)/竞品分析之详细 ...

  10. 曼彻斯特编码 c语言,简单的曼彻斯特编码的C语言实现

    使用C语言,实现基本的曼彻斯特编码 简单的曼彻斯特编码的C语言实现 曼彻斯特编码是减小信号交流分量,实现固定信号占空比的基本方法. 用C语言实现如下: #include #define uint8_t ...

最新文章

  1. 自动化测试基础篇--Selenium框架设计(POM)
  2. php+date+timezoe,PHP 字符串
  3. Linux下0号进程的前世(init_task进程)今生(idle进程)----Linux进程的管理与调度(五)【转】...
  4. mysql 123456_$myconn=mysql_connect(192.168.1.xxx,root,123456);怎么连不上数据库啊?
  5. 优秀!90后博士做出世界级成果,发32篇SCI,四拿国奖,两获国际荣誉
  6. 收藏 | 使用 YOLO及OpenCV 实现目标检测
  7. linux fortran 内存不足,内存不够不用怕! 虚拟内存不足的十种解决办法
  8. 注册了patchwork.kernel.org
  9. 基于JAVA+SpringMVC+Mybatis+MYSQL的二手车辆在线交易系统
  10. 如何使用无线连接来使Android调试手机
  11. (Ios 实战) 自定义UITableView
  12. 6*6数独,要求输出结果
  13. Java—P1957口算练习题
  14. windows下远程连接Mysql
  15. 新加坡IT薪酬总结,
  16. Linux更改本机ip
  17. 一个软件开发者的BPM之路
  18. 编写一个程序重复提示用户输入一个国家的首都,一旦收到用户的输入,程序报告用户输入的答案是否正确,假设将50个国家的首都存放在一个字典中,程序提示用户回答所有国家的首都并且显示回答正确的总个数。
  19. 安装Tomcat服务器
  20. LSP劫持与网络数据转发代理服务器的心得笔记

热门文章

  1. 前端遍历导致查询数据时间过长_OLAP 服务器,空间换时间可行吗?
  2. 如何修改MySQL8.0.5以上版本root密码
  3. python线程,进程,协程
  4. Xcode 8 插件安装
  5. 呼叫中心如何规划好工作习惯
  6. 怎样才不浪费IP的价值?
  7. 3、Oracle表空间管理
  8. 《统计学习方法》读书笔记(1)---学习的要素
  9. Firefox 在后台打开标签:about:config
  10. 中国乒乓球,牛!!!!