一、如何创建保存使用

1. 导入


from tensorflow.contrib import learnvp = learn.preprocessing.VocabularyProcessor(100, 0, tokenizer_fn=chinese_tokenizer)

其中VocabularyProcessor(max_document_length,min_frequency=0,vocabulary=None, tokenizer_fn=None)的构造函数中有4个参数

max_document_length是文档的最大长度。如果文本的长度大于最大长度,那么它会被剪切,反之则用0填充

min_frequency词频的最小值,出现次数>最小词频 的词才会被收录到词表中

vocabulary CategoricalVocabulary 对象,不太清楚使用方法
tokenizer_fn tokenizer function,讲句子或给定文本格式 token化得函数,可以理解为分词函数

2.token化

vp = learn.preprocessing.VocabularyProcessor(10, tokenizer_fn=list)
x = list(vp.fit_transform(["abc", "bbd"]))
print(x)

创建一个长为10的词表,然后将字符串token化得到结果为

也可以结合中文来做,当然tokenizer_fn要与文本相适应,可以实现自己的tokenizer function,如

from jieba import cut
from tensorflow.contrib import learn
import numpy as npDOCUMENTS = ['这是一条测试1','这是一条测试2','这是一条测试3','这是其他测试',
]def chinese_tokenizer(docs):for doc in docs:yield list(cut(doc))vocab = learn.preprocessing.VocabularyProcessor(10, 0, tokenizer_fn=chinese_tokenizer)
x = list(vocab.fit_transform(DOCUMENTS))
print(np.array(x))

这里中文引入了jieba分词,实现了自己的tokenizer函数,输出结果如下:

CategoricalVocabulary 对象可以先构建一个词典,再做token化,还是不太熟,但是有一个小demo可以示范:

vocab = learn.preprocessing.CategoricalVocabulary()
vocab.get("A")
vocab.get("B")
vocab.freeze()
vocab_processor = learn.preprocessing.VocabularyProcessor(max_document_length=4,vocabulary=vocab,tokenizer_fn=list)
tokens = vocab_processor.fit_transform(["ABC", "CBABAF"])
print(np.array(list(tokens)))

这里预先创建了一个词典,添加了"A","B" 进去,并且设置最大文本长度为4,结果如下

我们可以还可以观察得到的词典,以dict的形式输出 这是一个 词--->词表id的映射

vocab_dict = vocab.vocabulary_._mapping
print(vocab_dict)

分别输出以上的中文词表,和通过CategoricalVocabulary构建的词表如下

反向的索引 即 词表id--->词的映射 这是一个列表

print(vocab_dict)
print(vocab.vocabulary_._reverse_mapping)

可以通过id索引到词

vocab.vocabulary_.reverse(3)

输出 在词表中id为3的词

3.存储和加载

vocab.save('vocab.pickle')
vocab = VocabularyProcessor.restore('vocab.pickle')

作者:NLP幼儿园
链接:https://www.jianshu.com/p/db400a569730
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

二、查看词汇表的长度以及词汇不在词典中的情况

from jieba import cut
from tensorflow.contrib import learn
import numpy as npDOCUMENTS = ['这是一条测试1','这是一条测试2','这是一条测试3','这是其他测试',
]def chinese_tokenizer(docs):for doc in docs:print(list(cut(doc)))yield list(cut(doc))vocab = learn.preprocessing.VocabularyProcessor(10, 0, tokenizer_fn=chinese_tokenizer)
clf = vocab.fit(DOCUMENTS)
vocab_dict = vocab.vocabulary_._mapping
print(len(vocab_dict))
print(vocab_dict)
print(np.array(list(clf.transform(DOCUMENTS+["你是牛逼的人"]))))

输出:

['这是', '一条', '测试', '1']
['这是', '一条', '测试', '2']
['这是', '一条', '测试', '3']
['这是', '其他', '测试']
8
{'<UNK>': 0, '这是': 1, '一条': 2, '测试': 3, '1': 4, '2': 5, '3': 6, '其他': 7}
['这是', '一条', '测试', '1']
['这是', '一条', '测试', '2']
['这是', '一条', '测试', '3']
['这是', '其他', '测试']
['你', '是', '牛', '逼', '的', '人']
[[1 2 3 4 0 0 0 0 0 0]
 [1 2 3 5 0 0 0 0 0 0]
 [1 2 3 6 0 0 0 0 0 0]
 [1 7 3 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0 0 0]]

用tf的VocabularyProcessor使用细节相关推荐

  1. 用tf的VocabularyProcessor创建词汇表vocab

    学习tf的时候用到的一个词汇创建工具,比较方便,记录其使用方法. 1. 导入 from tensorflow.contrib import learnvp = learn.preprocessing. ...

  2. tf.contrib.learn.preprocessing.VocabularyProcessor

    tf.contrib.learn.preprocessing.VocabularyProcessor (max_document_length, min_frequency=0, vocabulary ...

  3. 判断frame是否已创建_大白菜的ROS笔记(8)(创建TF广播和监听,内容很多,细节满满)...

    创建TF广播和监听 #include <ros/ros.h> #include <tf/transform_broadcaster.h> #include <turtle ...

  4. 使用方法 ros_大白菜的ROS笔记(8)(创建TF广播和监听,内容很多,细节满满)...

    创建TF广播和监听 #include <ros/ros.h> #include <tf/transform_broadcaster.h> #include <turtle ...

  5. tf.nn.rnn_cell.DropoutWrapper用法细节案例2

    -- coding: utf-8 -- import tensorflow as tf from tensorflow.contrib import rnn 导入 MINST 数据集 from ten ...

  6. tf.nn.rnn_cell.DropoutWrapper用法细节案例1

    前言:前面介绍了LSTM,下面介绍LSTM的几种变种 双向RNN Bidirectional RNN(双向RNN)假设当前t的输出不仅仅和之前的序列有关,并且 还与之后的序列有关,例如:预测一个语句中 ...

  7. TF 2.1.0-rc2发布,2020年停止支持Python 2

    作者 | 神经星星 来源 | HyperAI超神经(ID:HyperAI) [导读]2020 年 1 月 1 日,Python 2 停止维护,正式退休.Python 3 全面登场的时刻,TensorF ...

  8. 如何用TF Object Detection API训练交通信号灯检测神经网络?

    参加 2019 Python开发者日,请扫码咨询 ↑↑↑ 作者简介:申泽邦(Adam Shan),谷歌认证机器学习专家(Google Developer Expert),兰州大学智能驾驶团队技术负责人 ...

  9. 细节解密:当前最佳的YOLOv4是如何炼成火眼金睛的?

    点击上方"视学算法",选择"星标" 快速获得最新干货 本文转自机器之心 前段时间,突然发布的 YOLOv4 成了计算机视觉领域一大热点新闻.这个目标检测任务的 ...

最新文章

  1. ReadWriteLock
  2. linux cpu上下文切换 简介
  3. Android中的数据传递之Parcelable接口
  4. 以下关于java的GUI菜单描述_第十九讲 菜单和JavaGUI综合设计
  5. VC++源码分析 - 中国象棋源码分析
  6. and or not 优先级_我的家乡|我的侠客公测成就奖励大全 成就解锁优先级排名
  7. 课程管理系统 java
  8. 【MySQL建表语句转PostgreSQL建表语句】MySQL建表语句转PostgreSQL建表语句 接上一篇
  9. python客户端软件开发_用 Python 实现一个简易版 HTTP 客户端
  10. 操作系统核心与驱动程序
  11. 蓝桥杯第四届初赛“模拟智能灌溉系统”设计任务书
  12. 网心科技 | 三分钟带你了解中国CDN发展史
  13. 传奇gee引擎,智能假人,假人脚本,geeM2假人
  14. Python批量修改图片名称,格式,并批量量化
  15. 升级Git版本到最新的方法
  16. 2022长安杯-wp
  17. 计算机听不到音乐怎么回事,电脑听不到声音怎么办
  18. ROS 学习系列-- 四轮机器人线性速率、角速度和电机PWM线性关系的定量分析
  19. 新型零基础入门软件测试自学“骗局”来啦!培训机构才能给你最好学习质量?
  20. 高斯-克吕格投影与地形图分带

热门文章

  1. Python基础教程:条件语句的七种写法
  2. Python+Selenium基本语法
  3. tensorflow tf.train.Saver.restore() (用于下次训练时恢复模型)
  4. pycharm 怎么修改函数(变量)名及其引用?全局修改(批量重命名)(ctrl + f6)
  5. python pycharm 增量选择 ctrl+w
  6. Dota2 Pro Circuit 贪心-模拟
  7. html语言可以写模版继承吗,16-Django的模板语言(变量,标签,过滤器,继承,html转义)...
  8. linux下的ppp软件,linux下ppp拨号无线上网(示例代码)
  9. java常用的发送http请求的工具方法
  10. Java后端架构开荒实战(二)——单机到集群