tensorflow2.0使用keras的Tokenizer文本预处理

  • 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<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值