这节课,我们将逐行的介绍实现以上2个句子(I love my cat和I love my dog)编码的TensorFlow代码。
TensorFlow和Keras为我们提供了多种单词编码的方法,我们主要介绍分词器(Tokenizer),它可以快速的帮助我们产生词典并创建词向量。
我们将这2个句子放入sentences数组中,并将句子开头的“I”大写。
然后我们创建一个分词器的实例,输入参数num_words设置为100,表示我们要建立一个100个单词的字典。在针对大量的文本创建字典时,设置此参数,分词器将选取词频最高的100个单词放入字典进行编码。因为那些词频低的词往往对训练精度的影响很小,但是会极大地增加训练时间,所以需要仔细地设置此参数。
采用分词器中的fit_on_texts方法处理sentences数组里的数据。具体而言,读取sentences数组里的数据,按照每一个英文单词出现的次数进行排序,排序在最前面的100个单词将放入词典进行编码。
分词器提供了一个word_index属性查看字典里的数据,该属性返回一个包含键值对的字典,其中关键字是单词,值是该单词的编码。
我们可以通过print语句来显示字典里的数据。
打印出来的结果是这样的,我们看到分词器帮我们将句子里的“I”改成小写了,同时分词器去除了句子里的标点符号。同时“I” 、“love” 和“ my”三个单词的词频更高,所以排在了前面。
我们在sentences中再添加一个句子:“You love my dog!”。
我们在“dog”后面加入了感叹号。那么“dog!”会不会被编码成一个不同的单词呢?当然不会。
因此我们看到新的sentences对应的结果如下:
标点符号对关键字对没有造成影响。
而且我们看到新的单词“you”加入了字典,新增了一个键值对。
在本小节中,我们采用分词器对句子进行了编码。我们看到采用很少的语句就能够在TensorFlow和Keras里实现这些功能。在下面的视频中,我们将进一步了解这些代码的工作原理。
点击左下角
关注“人工智能教育”公众号,您将获得我们精选的机器学习教材和代码,谢谢!