首页 文章

使用Keras Tokenizer生成n-gram

提问于
浏览
5

可以在Keras中使用n-gram吗?

例如,句子在X_train数据框中包含“句子”列 .

我以下列方式使用Keras的tokenizer:

tokenizer = Tokenizer(lower=True, split=' ')
tokenizer.fit_on_texts(X_train.sentences)
X_train_tokenized = tokenizer.texts_to_sequences(X_train.sentences)

然后我填写句子:

X_train_sequence = sequence.pad_sequences(X_train_tokenized)

我还使用一个简单的LSTM网络:

model = Sequential()
model.add(Embedding(MAX_FEATURES, 128))
model.add(LSTM(32, dropout=0.2, recurrent_dropout=0.2,
               activation='tanh', return_sequences=True))
model.add(LSTM(64, dropout=0.2, recurrent_dropout=0.2, activation='tanh'))
model.add(Dense(number_classes, activation='sigmoid'))
model.compile(loss='categorical_crossentropy', optimizer='rmsprop',
              metrics=['accuracy'])

在这种情况下,tokenizer执行 . 在Keras文档:https://keras.io/preprocessing/text/我看到字符处理是可能的,但这不适合我的情况 .

我的主要问题:我可以将n-gram用于NLP任务(不仅仅是情感分析,而是任何NLP任务)

澄清一下:我不仅要考虑单词而且要考虑单词组合 . 我想尝试看看它是否有助于模拟我的任务 .

2 回答

  • 2

    不幸的是,Keras Tokenizer()不支持n-gram . 您应该创建一个变通方法并自己标记文档,然后将它们提供给神经网络 .

  • 2

    如果您不知道,可以使用像CountVectorizerTfidfVectorizer这样的sklearn模块生成n-gram,然后可以将其输入网络 .

相关问题