编码 逐行读取文本_NLP轻松入门(二):文本编码的TensorFlow实践

本篇博客介绍了如何使用TensorFlow和Keras的分词器对文本进行编码。通过设置`num_words`参数为100,创建一个包含最高频率100个单词的词典。分词器会处理句子中的标点符号和大小写,并按词频排序。添加新句子时,分词器会自动更新词典,新单词如'you'会被编码。这个过程简化了文本预处理,为后续的机器学习任务做好准备。
摘要由CSDN通过智能技术生成

f8bad9be7e533d0ffadf1b816e63cab0.gif

这节课,我们将逐行的介绍实现以上2个句子(I love my cat和I love my dog)编码的TensorFlow代码。

075c7654a4d01d532c4bdb8bfca435d1.png

TensorFlow和Keras为我们提供了多种单词编码的方法,我们主要介绍分词器(Tokenizer),它可以快速的帮助我们产生词典并创建词向量。

12fae94aa58ffea6aba1cce1dd6252bf.png

我们将这2个句子放入sentences数组中,并将句子开头的“I”大写。

21b7f9b029650b082189cbce77493d53.png

然后我们创建一个分词器的实例,输入参数num_words设置为100,表示我们要建立一个100个单词的字典。在针对大量的文本创建字典时,设置此参数,分词器将选取词频最高的100个单词放入字典进行编码。因为那些词频低的词往往对训练精度的影响很小,但是会极大地增加训练时间,所以需要仔细地设置此参数。

d0be127bd9fe2ba26565bd4a9e98d897.png

采用分词器中的fit_on_texts方法处理sentences数组里的数据。具体而言,读取sentences数组里的数据,按照每一个英文单词出现的次数进行排序,排序在最前面的100个单词将放入词典进行编码。

50fdccd7109668d6125b6b05662a373a.png

分词器提供了一个word_index属性查看字典里的数据,该属性返回一个包含键值对的字典,其中关键字是单词,值是该单词的编码。

da8ded6ae7b8f2c65b1ca3578366bc75.png

我们可以通过print语句来显示字典里的数据。

2540a3b215b38b0ba8b92e10cf0d1e57.png

打印出来的结果是这样的,我们看到分词器帮我们将句子里的“I”改成小写了,同时分词器去除了句子里的标点符号。同时“I” 、“love” 和“ my”三个单词的词频更高,所以排在了前面。

fc6e8dccad2b26e6a4d564a007b4c9ed.png

我们在sentences中再添加一个句子:“You love my dog!”。

296cba5e17927bf95375fc3462509d72.png

我们在“dog”后面加入了感叹号。那么“dog!”会不会被编码成一个不同的单词呢?当然不会。

f371bd211ae1393c3bc3f97f76210249.png

因此我们看到新的sentences对应的结果如下:

69f88e45f6e5075b77772d93a247709e.png

标点符号对关键字对没有造成影响。

1314c8a65bee0ecbbde08260e0decb02.png

而且我们看到新的单词“you”加入了字典,新增了一个键值对。

6337929a689f88a2aa0f020246ca6c2e.png

在本小节中,我们采用分词器对句子进行了编码。我们看到采用很少的语句就能够在TensorFlow和Keras里实现这些功能。在下面的视频中,我们将进一步了解这些代码的工作原理。

点击左下角

07ce03122de390b52900b1c0f8ba4063.png

关注“人工智能教育”公众号,您将获得我们精选的机器学习教材和代码,谢谢!

f8bad9be7e533d0ffadf1b816e63cab0.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值