赞
踩
NLP任务中经常需要把词语转换成数字ID,然后又要统一文本长度,不够的填充0,多出的部分需要截断,keras里面自带了这样的功能模块如下。
from keras.preprocessing.sequence import pad_sequences
from keras.preprocessing.text import Tokenizer
具体使用效果如下
from keras.preprocessing.sequence import pad_sequences from keras.preprocessing.text import Tokenizer mx_length = 10#文本最大长度为10 text = [['我','爱','中国'], ['我','爱','科学'], ['深度','学习','很','有趣'], ['机器','学习','常见','的','模型','有','SVM']] print('文本内容=') print(text) tokenizer=Tokenizer() #创建一个Tokenizer对象 tokenizer.fit_on_texts(text)#直接读入文本进行词的ID获取 vocab=tokenizer.word_index #得到每个词的编号 x_train_word_ids=tokenizer.texts_to_sequences(text)#开始对text里面的每个汉字进行编号 print('编号结果=') print(x_train_word_ids) ''' padding='pre'表示从前面填充 padding='post'表示从后面填充 truncating='pre'表示从前面截断 truncating='post'表示从后面截断 ''' x_train_padded_seqs=pad_sequences(x_train_word_ids,maxlen=mx_length,padding='post',truncating='post') #将超过固定值的部分截掉,不足的用0填充 print('填充结果=') print(x_train_padded_seqs)
运行结果
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。