使用Keras Tokenizer生成n-gram

时间:2017-09-12 10:02:14

标签: nlp keras tokenize text-processing n-gram

是否有可能在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 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

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