1.什么是Tokenizer
使用文本的第一步就是将其拆分为单词。单词称为标记(token),将文本拆分为标记的过程称为标记化(tokenization),而标记化用到的模型或工具称为tokenizer。Keras提供了Tokenizer类,用于为深度学习文本文档的预处理。
2.创建Tokenizer实例
from keras.preprocessing.text import Tokenizer
# 实例化一个 Tokenizer
tok = Tokenizer()
3.学习文本字典
##假设文本数据为:
docs = ['good job!',
'hello world',
'great china']
tok.fit_on_texts(docs)# 作用是把文本数据 变换成 计算机能统计的文本数据
# 通常在tokenizer 中,使用的4个内容:
1)word_counts:每个词在所有文档中出现的次数
2)word_docs:每个词出现的文档数量
3)word_index:所有word对应的ID编号,从1开始
4)document_count:处理的文档数
上述数据中:
tok.word_counts
OrderedDict([('good', 1),
('job', 1),
('hello', 1),
('world', 1),
('great', 1),
('china', 1)])
tok.word_docs
defaultdict(int,
{'job': 1,
'good': 1,
'world': 1,
'hello': 1,
'china': 1,
'great': 1})
tok.word_index
{'good': 1, 'job': 2, 'hello': 3, 'world': 4, 'great': 5, 'china': 6}
tok.document_count
4.编码文本
学习出文本字典后,可以通过texts_to_sequences将文本中的每个词转成数字。
## 编码文档
encoded_docs = t.texts_to_matrix(docs, mode='freq')
print(encoded_docs)
[[0. 0.5 0.5 0. 0. 0. 0. ]
[0. 0. 0. 0.5 0.5 0. 0. ]
[0. 0. 0. 0. 0. 0.5 0.5]]
其中,mode有四种模型:
binary(默认值):文档中是否有该词
count:文档中每个单词的计数
tfidf:文档中每个单词的TF-IDF评分
freq:每个单词的频率,作为每个文档中单词的比例
5.tokenization之后的操作
完成分词和编码后通过padding把所有词向量补成同样长度,再用keras中自带的embedding层进行一个向量化,就可以输入到各种模型中了。