【发布时间】:2018-02-20 17:54:28
【问题描述】:
是否可以在 Keras 中使用 n-gram?
例如,X_train 数据框中包含“句子”列的句子。
我通过以下方式使用 Keras 的分词器:
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'])
在这种情况下,分词器执行。 在 Keras 文档中:https://keras.io/preprocessing/text/ 我看到字符处理是可能的,但这不适合我的情况。
我的主要问题:我可以将 n-gram 用于 NLP 任务(不仅是情感分析,还包括任何 NLP 任务)
为了澄清:我想考虑的不仅仅是单词,而是单词的组合。我想试试看它是否有助于为我的任务建模。
【问题讨论】:
-
这是一个非常奇怪的神经网络模型,儿子
-
@VeltzerDoron 我也在考虑使用二元语法。我正在使用 keras 使用词袋特征数据训练前馈网络。所以,我没有使用序列数据或序列模型(RNN 等),所以二元组是有意义的。
标签: nlp keras tokenize text-processing n-gram