nlp进一步处理~增添语料中没有的单词并且让语句大小变为一致

代码中加入了padding功能,如果句子长度不够的话,会用0填充不足的序列

import  os
os.environ['TF_CPP_MIN_LOG_LEVEL']='3'

import  tensorflow as tf
from    tensorflow import keras
from    tensorflow.keras.preprocessing.text  import  Tokenizer
#Tokenizer:令牌生成器
from    tensorflow.keras.preprocessing.sequence  import  pad_sequences
#导入padding功能

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,oov_token='<OOV>')
#创建令牌生成器的实例,被动参数编号指向它
#(这里的原理为将I标记为1,love标记为2,my标记为3,dog标记为4,cat标记为5)
#使用100的编号有点大,因为此数据中只有五个不同的单词
#这里新添加了'<OOV>',用于对不在单词索引中的单词进行处理
#额外的一个'<OOV>'字符串标记为1
tokenizer.fit_on_texts(sentences)
#使用适合的方法进行训练sentences
word_index = tokenizer.word_index
#令牌生成器提供了一个单词索引属性,该属性返回包含键值对的字典,关键为单词,
#该值为单词的标记
sequences = tokenizer.texts_to_sequences(sentences)
#sequences标记从文本到序列的内容
padded = pad_sequences(sequences,padding='post',maxlen=5)
#这样的话 如果我的语料长度大于5,我将会损失句子的内容,默认值为pre
#如果将末尾切掉的话使用padded = pad_sequences(sequences,padding='post',truncating='post',maxlen=5)

#填充序列

print(word_index)
print(sentences)
print(padded)
#将句子进行填充
#显示我的句子被编码为整数列表的过程
#它可以根据它所设置的单词集对它们进行编码,从适合文本的那本书中学到了东西
test_data = [
    'i really love my dog',
    'my dog loves my manatee'
]
test_seq = tokenizer.texts_to_sequences(test_data)
print(test_seq)
padded = pad_sequences(test_seq,maxlen=10)
print(padded)
'''
对应的内容为[[0 0 0 0 0 5 1 3 2 4]
 [0 0 0 0 0 2 4 1 2 1]],因为默认的padding在前面增加空格,所以
 长度不足10的前面添加0
'''
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值