学习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')