Parte 1: Pré-processando os dados

Machine Translation with Keras

Thushan Ganegedara

Data Scientist and Author

Introdução aos dados

  • Dados

    • en_text : Uma lista Python de frases; cada frase é uma string de palavras separadas por espaços.
    • fr_text: Uma lista Python de frases; cada frase é uma string de palavras separadas por espaços.
  • Imprimindo alguns dados do conjunto de dados

for en_sent, fr_sent in zip(en_text[:3], fr_text[:3]):
  print("English: ", en_sent)
  print("\tFrench: ", fr_sent)
English:  new jersey is sometimes quiet during autumn , and it is snowy in april .
    French:  new jersey est parfois calme pendant l' automne , et il est neigeux en avril .
English:  the united states is usually chilly during july , and it is usually freezing in november .
    French:  les états-unis est généralement froid en juillet , et il gèle habituellement en novembre .
...
Machine Translation with Keras

Tokenização de palavras

  • Tokenização

    • Processo de dividir uma frase/expressão em palavras/caracteres individuais
    • Ex.: "I watched a movie last night, it was okay." vira:
    • [I, watched, a, movie, last, night, it, was, okay]
  • Tokenização com Keras

    • Aprende um mapeamento de palavra para ID de palavra usando um corpus.
    • Pode converter uma string em uma sequência de IDs
from tensorflow.keras.preprocessing.text import Tokenizer
en_tok = Tokenizer()
Machine Translation with Keras

Ajustando o Tokenizer

  • Ajustando o Tokenizer aos dados
    • O Tokenizer precisa ser ajustado em frases para aprender o mapeamento de palavra para ID.
en_tok = Tokenizer()
en_tok.fit_on_texts(en_text)
  • Obtendo o mapeamento palavra → ID
    • Use o atributo word_index do Tokenizer.
id = en_tok.word_index["january"] # => returns 51
  • Obtendo o mapeamento ID → palavra
w = en_tok.index_word[51] # => returns 'january'
Machine Translation with Keras

Transformando frases em sequências

seq = en_tok.texts_to_sequences(['she likes grapefruit , peaches , and lemons .'])
[[26, 70, 27, 73, 7, 74]]
Machine Translation with Keras

Limitando o tamanho do vocabulário

  • Você pode limitar o tamanho do vocabulário em um Tokenizer do Keras.
tok = Tokenizer(num_words=50)
  • Palavras fora do vocabulário (OOV)

    • Palavras raras no corpus de treino (coleção de textos).
    • Palavras ausentes no conjunto de treino.
  • Ex.:

    • tok.fit_on_texts(["I drank milk"])
    • tok.texts_to_sequences(["I drank water"])
    • A palavra water é OOV e será ignorada.
Machine Translation with Keras

Tratando palavras fora do vocabulário

  • Definindo um token OOV
tok = Tokenizer(num_words=50, oov_token='UNK')
  • Ex.:
    • tok.fit_on_texts(["I drank milk"])
    • tok.texts_to_sequences(["I drank water"])
    • A palavra water é OOV e será substituída por UNK.
      • ou seja, o Keras verá "I drank UNK"
Machine Translation with Keras

Vamos praticar!

Machine Translation with Keras

Preparing Video For Download...