2017-09-12 6 views
2

Est-il réel d'utiliser les n-grammes de mots dans Keras? Par exemple, la liste de phrases contient dans une trame de données X_train avec une colonne "phrases". J'utilise tokenizer de Keras dans la prochaine manière:Mots d'usage n-grammes pour Keras Tokenizer

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

Et je l'utilise plus tard padding:

X_train_sequence = sequence.pad_sequences(X_train_tokenized) 

J'utilise aussi simple, réseau 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']) 

Dans ce cas, tokenizer exécution. Dans les documents Keras: https://keras.io/preprocessing/text/ Je ne vois que le traitement des caractères, mais il n'est pas approprié pour mon cas.

Ma question principale: Puis-je utiliser n-grammes pour les tâches de la PNL (pas nécessaire analyse de sentiment, toute tâche abstraite NLP). Pour clarifier: Je voudrais considérer non seulement les mots, mais la combinaison de mots - je voudrais l'essayer pour ma tâche.

Répondre

1

Malheureusement, Keras Tokenizer() ne prend pas en charge les n-grammes. Vous devez créer une solution de contournement et scinder vous-même les documents, puis les transmettre au réseau de neurones.