深度学习:自然语言处理(Tokenizer和pad_sequences)

首先先对数据进行分割,通过jieba库的.lcut,在通过去除停用词得到相对干净的分词,在把每行处理成这样的形式(和TF-IDF一样的类型)

深度学习:自然语言处理(Tokenizer和pad_sequences)_第1张图片

数据处理完成

在通过tf提供的分词器

from tensorflow.keras.preprocessing.text import Tokenizer
tk = Tokenizer()
tk.fit_on_texts(data['停用词1'])    # 训练 
a = tk.texts_to_sequences(data['停用词1'])    # 转换

tk.index_word       

深度学习:自然语言处理(Tokenizer和pad_sequences)_第2张图片

from tensorflow.keras.preprocessing.sequence import pad_sequences
x = pad_sequences(sequences = a,maxlen=300,
               padding = 'post',truncating = 'post')

得到模型的x值,maxlen  最大列表长度

                        padding 填充post在后面填充,per在前面填充

                        truncating 截断post把后面截断per把前面截断

建模:(注意如果要两层LSTM的话,要加return_sequences = True)

input = tf.keras.Input(shape = (300,))
a1 = tf.keras.layers.Embedding(input_dim = len(tk.index_word)+1, 
                          output_dim = 500,   # 每个词向量的长度
                          input_length = (300)
                          )(input)
a2 = tf.keras.layers.LSTM(32,return_sequences = True)(a1)
a3 = tf.keras.layers.LSTM(16)(a2)
a4 = tf.keras.layers.Dense(64,activation = 'relu')(a3)
output = tf.keras.layers.Dense(len(y),activation = 'softmax')(a4)
model = tf.keras.Model(inputs = input,outputs = output)
model.compile(optimizer = tf.keras.optimizers.Adam(0.01),
              loss= tf.keras.losses.sparse_categorical_crossentropy,
              metrics=tf.keras.metrics.sparse_categorical_accuracy)

你可能感兴趣的:(深度学习,自然语言处理,神经网络)