La secuenciación de PNL es la secuencia de números que generaremos a partir de un gran corpus o cuerpo de declaraciones mediante el entrenamiento de una red neuronal. Tomaremos un conjunto de oraciones y les asignaremos tokens numéricos basados en las oraciones del conjunto de entrenamiento.
Ejemplo:
sentences = [ 'I love geeksforgeeks', 'You love geeksforgeeks', 'What do you think about geeksforgeeks?' ] Word Index: {'geeksforgeeks': 1, 'love': 2, 'you': 3, 'i': 4, 'what': 5, 'do': 6, 'think': 7, 'about': 8} Sequences: [[4, 2, 1], [3, 2, 1], [5, 6, 3, 7, 8, 1]]
Ahora, si el conjunto de prueba consta de la palabra que la red no ha visto antes, o si tenemos que predecir la palabra en la oración, entonces podemos agregar un token de marcador de posición simple.
Let the test set be : test_data = [ 'i really love geeksforgeeks', 'Do you like geeksforgeeks' ]
Luego definiremos un marcador de posición adicional para las palabras que no ha visto antes. El marcador de posición por defecto obtiene el índice como 1.
Índice de palabras = {‘placeholder’: 1, ‘geeksforgeeks’: 2, ‘love’: 3, ‘you’: 4, ‘i’: 5, ‘what’: 6, ‘do’: 7, ‘think’: 8, ‘sobre’: 9}
Secuencias = [[5, 3, 2], [4, 3, 2], [6, 7, 4, 8, 9, 2]]
Como la palabra ‘realmente’ y ‘me gusta’ no se ha encontrado antes, simplemente se reemplaza por el marcador de posición que está indexado por 1.
Entonces, la secuencia de prueba ahora se convierte en,
Secuencia de prueba = [[5, 1, 3, 2], [7, 4, 1, 2]]
Código: Implementación con TensorFlow
# importing all the modules required import tensorflow as tf from tensorflow import keras from tensorflow.keras.preprocessing.text import Tokenizer from tensorflow.keras.preprocessing.sequence import pad_sequences # the initial corpus of sentences or the training set sentences = [ 'I love geeksforgeeks', 'You love geeksforgeeks', 'What do you think about geeksforgeeks?' ] tokenizer = Tokenizer(num_words = 100) # the tokenizer also removes punctuations tokenizer.fit_on_texts(sentences) word_index = tokenizer.word_index sequences = tokenizer.texts_to_sequences(sentences) print("Word Index: ", word_index) print("Sequences: ", sequences) # defining a placeholder token and naming it as placeholder tokenizer = Tokenizer(num_words=100, oov_token="placeholder") tokenizer.fit_on_texts(sentences) word_index = tokenizer.word_index sequences = tokenizer.texts_to_sequences(sentences) print("\nSequences = ", sequences) # the training data with words the network hasn't encountered test_data = [ 'i really love geeksforgeeks', 'Do you like geeksforgeeks' ] test_seq = tokenizer.texts_to_sequences(test_data) print("\nTest Sequence = ", test_seq)
Producción:
Word Index: {'geeksforgeeks': 1, 'love': 2, 'you': 3, 'i': 4, 'what': 5, 'do': 6, 'think': 7, 'about': 8} Sequences: [[4, 2, 1], [3, 2, 1], [5, 6, 3, 7, 8, 1]] Sequences = [[5, 3, 2], [4, 3, 2], [6, 7, 4, 8, 9, 2]] Test Sequence = [[5, 1, 3, 2], [7, 4, 1, 2]]