【问题标题】:Using Keras Tokenizer to generate n-grams使用 Keras Tokenizer 生成 n-gram
【发布时间】: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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    如果您不知道,您可以使用 sklearn 模块,如 CountVectorizerTfidfVectorizer 来生成 n-gram,然后您可以将其提供给网络。

    【讨论】:

      猜你喜欢
      • 2021-01-24
      • 2023-01-26
      • 1970-01-01
      • 1970-01-01
      • 2012-01-05
      • 2021-06-29
      • 2014-10-10
      • 1970-01-01
      相关资源
      最近更新 更多