-
tokenizer = Tokenizer(num_words=max_words) # 只考虑最常见的前max_words个词
-
tokenizer.fit_on_texts(texts) #使用一系列文档来生成token词典,texts为list类,每个元素为一个文档
-
sequences =tokenizer.texts_to_sequences(texts) #将多个文档转换为word下标的向量形式,shape为[len(texts),len(text)] – (文档数,每条文档的长度)
-
word_index = tokenizer.word_index #word_index一个dict,保存所有word对应的编号id,从1开始 print(‘Found %s unique tokens.’ % len(word_index))
-
data = pad_sequences(sequences, maxlen=maxlen) #
返回的是个2维张量,长度为maxlen,只关注前maxlen个单词 labels = np.asarray(labels) -
print('shape of labels: ',labels.shape) # 该语料的测试集和训练集的样本数都是25000个。
1. 引入Tokenizer对文本中的单词进行标记
Tokenizer可以过滤掉句子中的标点符号,忽略大小写,对句子的所有单词标记,每个单词对应一个标签,从而生成文本的字典。num_words表示只考虑最常见的前num_words个词。
from tensorflow.keras.preprocessing.text import Tokenizer
sentences = [
'i love my dog',
'I, love my cat',
'You love my dog!'
]
tokenizer = Tokenizer(num_words = 100)
#学习出文本的字典
tokenizer.fit_on_texts(sentences)
#查看对应的单词和数字的映射关系dict
word_index = tokenizer.word_index
print(word_index)
{‘love’: 1, ‘my’: 2, ‘i’: 3, ‘dog’: 4, ‘cat’: 5, ‘you’: 6}
2.生成句子列表
sequences = tokenizer.texts_to_sequences(sentences)
print(sequences)
[[3, 1, 2, 4], [3, 1, 2, 5], [6, 1, 2, 4]]
3. 当采用新的文本去生成句子列表会丢失掉那些不在字典的单词
test_data=[
'i really love my dog',
'my dog loves my manatee'
]
test_seq = tokenizer.texts_to_sequences(test_data)
print(test_seq<