Saltar al contenido

¿Qué hace exactamente el método Keras Tokenizer?

Solución:

Del código fuente:

  1. fit_on_texts Actualiza el vocabulario interno basado en una lista de textos. Este método crea el índice de vocabulario basado en la frecuencia de las palabras. Entonces, si le das algo como “El gato se sentó en la alfombra”. Creará un diccionario st word_index["the"] = 1; word_index["cat"] = 2 es palabra -> diccionario de índice, por lo que cada palabra obtiene un valor entero único. 0 está reservado para el relleno. Por lo tanto, un número entero más bajo significa una palabra más frecuente (a menudo, las primeras son palabras vacías porque aparecen muchas).
  2. texts_to_sequences Transforma cada texto en textos en una secuencia de números enteros. Básicamente, toma cada palabra del texto y la reemplaza con su valor entero correspondiente de la word_index diccionario. Nada más, nada menos, ciertamente no hay magia involucrada.

¿Por qué no combinarlos? Porque casi siempre encajas una vez y convertir a secuencias muchas veces. Cabrás en tu cuerpo de entrenamiento una vez y usarás exactamente el mismo word_index diccionario en tiempo de entrenamiento / evaluación / prueba / predicción para convertir el texto real en secuencias para alimentarlas a la red. Por lo que tiene sentido mantener esos métodos separados.

Agregar más a las respuestas anteriores con ejemplos ayudará a comprender mejor:

Ejemplo 1:

t  = Tokenizer()
fit_text = "The earth is an awesome place live"
t.fit_on_texts(fit_text)
test_text = "The earth is an great place live"
sequences = t.texts_to_sequences(test_text)

print("sequences : ",sequences,'n')

print("word_index : ",t.word_index)
#[] specifies : 1. space b/w the words in the test_text    2. letters that have not occured in fit_text

Output :

       sequences :  [[3], [4], [1], [], [1], [2], [8], [3], [4], [], [5], [6], [], [2], [9], [], [], [8], [1], [2], [3], [], [13], [7], [2], [14], [1], [], [7], [5], [15], [1]] 

       word_index :  {'e': 1, 'a': 2, 't': 3, 'h': 4, 'i': 5, 's': 6, 'l': 7, 'r': 8, 'n': 9, 'w': 10, 'o': 11, 'm': 12, 'p': 13, 'c': 14, 'v': 15}

Ejemplo 2:

t  = Tokenizer()
fit_text = ["The earth is an awesome place live"]
t.fit_on_texts(fit_text)

#fit_on_texts fits on sentences when list of sentences is passed to fit_on_texts() function. 
#ie - fit_on_texts( [ sent1, sent2, sent3,....sentN ] )

#Similarly, list of sentences/single sentence in a list must be passed into texts_to_sequences.
test_text1 = "The earth is an great place live"
test_text2 = "The is my program"
sequences = t.texts_to_sequences([test_text1, test_text2])

print('sequences : ',sequences,'n')

print('word_index : ',t.word_index)
#texts_to_sequences() returns list of list. ie - [ [] ]

Output:

        sequences :  [[1, 2, 3, 4, 6, 7], [1, 3]] 

        word_index :  {'the': 1, 'earth': 2, 'is': 3, 'an': 4, 'awesome': 5, 'place': 6, 'live': 7}

Veamos qué hace esta línea de código.

tokenizer.fit_on_texts (texto)

Por ejemplo, considere la oración “La tierra es un lugar maravilloso para vivir”.

tokenizer.fit_on_texts("The earth is an awesome place live") encaja [[1,2,3,4,5,6,7]]donde 3 -> “es”, 6 -> “lugar”, etc.

sequences = tokenizer.texts_to_sequences("The earth is an great place live")

devoluciones [[1,2,3,4,6,7]].

Ves lo que pasó aquí. La palabra “grande” no es adecuada inicialmente, por lo que no reconoce la palabra “grande”. Es decir, fit_on_text se puede usar de forma independiente en los datos del tren y luego el índice de vocabulario ajustado se puede usar para representar un conjunto completamente nuevo de secuencia de palabras. Estos son dos procesos diferentes. De ahí las dos líneas de código.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *