学习了Keras文档里的文本预处理部分,参考网上代码写了个例子
import keras.preprocessing.text as T
from keras.preprocessing.text import Tokenizer text1='some thing to eat'
text2='some thing to drink'
texts=[text1,text2] #文本到文本列表
print (T.text_to_word_sequence(text1)) #以空格区分,中文也不例外 ['some', 'thing', 'to', 'eat'] #文本的ont-hot编码
print (T.one_hot(text1,10)) #[7, 9, 3, 4] -- (10表示数字化向量为10以内的数字)
print (T.one_hot(text2,10)) #[7, 9, 3, 1] tokenizer = Tokenizer(num_words=None) #num_words:None或整数,处理的最大单词数量。少于此数的单词丢掉
tokenizer.fit_on_texts(texts) #word_counts:字典,将单词(字符串)映射为它们在训练期间出现的次数。仅在调用fit_on_texts之后设置。
print( tokenizer.word_counts) #[('some', 2), ('thing', 2), ('to', 2), ('eat', 1), ('drink', 1)] #word_index: 字典,将单词(字符串)映射为它们的排名或者索引。仅在调用fit_on_texts之后设置
print( tokenizer.word_index) #{'some': 1, 'thing': 2,'to': 3 ','eat': 4, drink': 5} #word_docs: 字典,将单词(字符串)映射为它们在训练期间所出现的文档或文本的数量。仅在调用fit_on_texts之后设置。
print( tokenizer.word_docs) #{'some': 2, 'thing': 2, 'to': 2, 'drink': 1, 'eat': 1} print( tokenizer.index_docs) #{1: 2, 2: 2, 3: 2, 4: 1, 5: 1} # num_words=多少会影响下面的结果,行数=num_words #序列的列表,列表中每个序列对应于一段输入文本
print( tokenizer.texts_to_sequences(texts)) #得到词索引[[1, 2, 3, 4], [1, 2, 3, 5]]
#形如(len(sequences), nb_words)的numpy array
print( tokenizer.texts_to_matrix(texts)) # 矩阵化=one_hot
'''
[[ 0., 1., 1., 1., 1., 0., 0., 0., 0., 0.],
[ 0., 1., 1., 1., 0., 1., 0., 0., 0., 0.]]
'''