用tf的VocabularyProcessor创建词汇表vocab

学习tf的时候用到的一个词汇创建工具,可以用来根据字表,向量化句子中的字。

1、接口综述

from tensorflow.contrib import learn

vp = 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化得函数,一般可以定义自己的分词函数
vocab.save(‘vocab.pickle’)  保存词表及VocabularyProcessor对象
vocab = VocabularyProcessor.restore(‘vocab.pickle’) 加载

2、代码演示

from tensorflow.contrib import learn
from jieba import cut
import numpy as np

# 构建词表
vocab_word = learn.preprocessing.CategoricalVocabulary()
vocab_word.get('A')
vocab_word.get('B')
vocab_word.get('C')

DOCUMENTS = [
    '这是一条测试1',
    '这是一条测试2',
    '这是一条测试3',
    '这是其他测试',
]

def chinese_tokenizer(docs):
    for doc in docs:
        yield list(cut(doc))

vocab = learn.preprocessing.VocabularyProcessor(max_document_length=10,
                                                vocabulary=vocab_word,tokenizer_fn=chinese_tokenizer)
tokens = vocab.fit_transform(DOCUMENTS)
print(np.array(list(tokens)))
print(np.array(tokens))
print(vocab.vocabulary_._mapping)

# 保存及加载
vocab.save('vocab.pickle')
vocab = learn.preprocessing.VocabularyProcessor.restore('vocab.pickle')

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值