是否有可能在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任务)
澄清:我不仅要考虑单词而且要考虑单词组合。我想尝试看看它是否有助于模拟我的任务。
答案 0 :(得分:2)
不幸的是,Keras Tokenizer()不支持n-gram。您应该创建一个变通方法并自己标记文档,然后将它们提供给神经网络。
答案 1 :(得分:2)
如果您不知道,可以使用像CountVectorizer或TfidfVectorizer这样的sklearn模块来生成n-gram,然后您可以将其输入网络。