赞
踩
使用文本的第一步就是将其拆分为单词。单词称为标记(token),将文本拆分为标记的过程称为标记化(tokenization),而标记化用到的模型或工具称为tokenizer。Keras提供了Tokenizer类,用于为深度学习文本文档的预处理。
from keras.preprocessing.text import Tokenizer
tok = Tokenizer()
##假设文本数据为:
docs = ['good job!',
'hello world',
'great china']
tok.fit_on_texts(docs)
学习了文本字典后,可以通过tok的以下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
3
学习出文本字典后,可以通过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有四种模型:
完成分词和编码后通过padding把所有词向量补成同样长度,再用keras中自带的embedding层进行一个向量化,就可以输入到各种模型中了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。