一.如何用计算机可以处理的方式来表示单词(也叫作“分词”)
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras.preprocessing.test import Tokenizer
sentences=[‘I love my dog’,
‘I.love my cat’]
tokenizer=Tokenizer(num_words=100)
创建一个Tokenizer Object实例,保留该文字库中出现最频繁的100个单词
tokenizer.fit_on_texts(sentences)
查看sentences中所有文本,并将文本与对应数字进行匹配
word_index= tokenizer.word_index
获取所有单词列表,输出所有词汇与词表(注:所有大写字母都会转为小写字母,后面做初始化embedding时,记得转为大写)
print(word_index)
输出:{‘i’:1,‘m’:3,‘dog’:4,‘cat’:5,‘love’:2} 输出单词和其对应的标识符
注:分词器很聪明,即使dog后有个“!”,像是I love my dog!,分词器也能识别出dog,自动去掉“!”。
二. 为句子创建数字序列,将包含上面单词的句子转换为数字序列
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras.preprocessing.test import Tokenizer
sentences=[‘I love my dog’,
‘I.love my cat’,
‘You love my dog!’,
‘Do you think my dog is amazing?’]
tokenizer=Tokenizer(num_words=100)
tokenizer.fit_on_texts(sentences)
word_index= tokenizer.word_index
sequences=tokenizer.texts_to_sequences(sentences)
创建了代表每个句子的标识符序列
print(word_index)
print(sequences)
三.为测试集中的句子进行排序
由于manatee和really和loves是不在word_index中的单词,不在构建这个序列的语料库中,所以会输出这个样子
为了不损失句子长度,可以使用ovv_token属性,设置可代替语料库中无法识别的内容