python函数——Keras分词器Tokenizer
0. 前言
Tokenizer
是一个用于向量化文本,或将文本转换为序列(即单个字词以及对应下标构成的列表,从1算起)的类。是用来文本预处理的第一步:分词。结合简单形象的例子会更加好理解些。
1. 语法
官方语法如下1:
Code.1.1 分词器Tokenizer语法
keras.preprocessing.text.Tokenizer(num_words=None,
filters='!"#$%&()*+,-./:;<=>?@[]^_`{|}~tn',
lower=True,
split=" ",
char_level=False)
1.1 构造参数
-
num_words
:默认是None
处理所有字词,但是如果设置成一个整数,那么最后返回的是最常见的、出现频率最高的num_words
个字词。 -
filters
:过滤一些特殊字符,默认上文的写法就可以了。 -
lower
:全部转为小写 -
split
:字符串,单词的分隔符,如空格
1.2 返回值
字符串列表
1.3 类方法
下面是相关的类方法,部分示例在下一节中均有描述应用。
方法 |
参数 |
返回值 |
---|---|---|
fit_on_texts(texts) |
texts:要用以训练的文本列表 |
- |
texts_to_sequences(texts) |
texts:待转为序列的文本列表 |
序列的列表,列表中每个序列对应于一段输入文本 |
texts_to_sequences_generator(texts) |
texts:待转为序列的文本列表 |
本函数是texts_to_sequences的生成器函数版,返回每次调用返回对应于一段输入文本的序列 |
texts_to_matrix(texts, mode) |
texts:待向量化的文本列表;mode:‘binary’,‘count’,‘tfidf’,‘freq’之一,默认为‘binary’ |
形如(len(texts), nb_words)的numpy array |
fit_on_sequences(sequences) |
sequences:要用以训练的序列列表 |
- |
sequences_to_matrix(sequences) |
sequences:待向量化的序列列表; mode:‘binary’,‘count’,‘tfidf’,‘freq’之一,默认为‘binary’ |
返回值:形如(len(sequences), nb_words)的numpy array |
1.4 属性
-
word_counts
:字典,将单词(字符串)映射为它们在训练期间出现的次数。仅在调用fit_on_texts
之后设置。 -
word_docs
: 字典,将单词(字符串)映射为它们在训练期间所出现的文档或文本的数量。仅在调用fit_on_texts
之后设置。 -
word_index
: 字典,将单词(字符串)映射为它们的排名或者索引。仅在调用fit_on_texts
之后设置。 -
document_count
: 整数。分词器被训练的文档(文本或者序列)数量。仅在调用fit_on_texts
或fit_on_sequences
之后设置。
2. 简单示例
Code.2.1 简单示例
>>>from keras.preprocessing.text import Tokenizer
Using TensorFlow backend.
# 创建分词器 Tokenizer 对象
>>>tokenizer = Tokenizer()
# text
>>>text = ["今天 北京 下 雨 了", "我 今天 加班"]
# fit_on_texts 方法
>>>tokenizer.fit_on_texts(text)
# word_counts属性
>>>tokenizer.word_counts
OrderedDict([('今天', 2),
('北京', 1),
('下', 1),
('雨', 1),
('了', 2),
('我', 1),
('加班', 1)])
# word_docs属性
>>>tokenizer.word_docs
defaultdict(int, {'下': 1, '北京': 1, '今天': 2, '雨': 1, '了': 2, '我': 1, '加班': 1})
# word_index属性
>>>tokenizer.word_index
{'今天': 1, '了': 2, '北京': 3, '下': 4, '雨': 5, '我': 6, '加班': 7}
# document_count属性
>>>tokenizer.document_count
2
3. 常用示例
还以上面的tokenizer
对象为基础,经常会使用texts_to_sequences()
方法 和 序列预处理方法 keras.preprocessing.sequence.pad_sequences
一起使用
有关pad_sequences
用法见python函数——序列预处理pad_sequences()序列填充
Code.3.1 常用示例
>>>tokenizer.texts_to_sequences(["下 雨 我 加班"])
[[4, 5, 6, 7]]
>>>keras.preprocessing.sequence.pad_sequences(tokenizer.texts_to_sequences(["下 雨 我 加班"]), maxlen=20)
array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 6, 7]],dtype=int32)
- https://keras-cn.readthedocs.io/en/latest/preprocessing/text/#_1
- 中国大数据行业发展现状及趋势预测
- 【腾讯云的1001种玩法】十分钟轻松搞定云架构 · 负载均衡的几种类型
- 常用的Hadoop 文件查看工具
- 机器学习之——LINE及LargeVis可视化算法
- 开发人员看测试之细说JBehave
- 智能合约中存在的3种最常见的误解
- O'ReillyAI系列:将学习速率可视化来优化神经网络
- 再下一城,腾讯黑科技介入新零售
- 微信团队广发内部体验邀请,小程序将大火!
- 胖虎科技获1亿元融资 域名“我爱胖虎”创意十足!
- 高挺:区块链在金融领域的三个应用方向
- 条码支付迎来分级限额制 支付宝、微信纷纷响应
- 关键基础设施威胁预警,HDD声波攻击可致蓝屏
- 集成学习之随机森林通俗理解
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Nginx专辑|05 -如何使用Nginx配置正向代理
- 详解 SIGHAN05 的目录结构
- 工业数据分析之数据归一化 | 冰水数据智能专题 | 2nd
- python写的小程序
- 不求甚解之 Spanning Tree
- C语言常用的一些转换工具函数收集
- OpenAI Gym入门级导游 | 附PDF手册下载 | 山人刷强化 | 4th
- python中常见关于Excel表格读写操作
- 2行代码搞定一个定时器!
- python算法题练习---二分法
- 局部加权线性回归 | 冰水数据智能专题 | 3rd
- 一文探讨 RPC 框架中的服务线程隔离
- Python3与Python2的具体区别
- 分布式系统的概念都搞懂了吗?(上)
- Kafka-manager部署与使用简单介绍