Deel 1: Voorbewerking van de data

Machine Translation met Keras

Thushan Ganegedara

Data Scientist and Author

Introductie tot de data

  • Data

    • en_text : Een Python-lijst met zinnen; elke zin is een string met woorden gescheiden door spaties.
    • fr_text: Een Python-lijst met zinnen; elke zin is een string met woorden gescheiden door spaties.
  • Een paar voorbeelden afdrukken

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 met Keras

Woordtokenisatie

  • Tokenization

    • Proces om een zin/woordgroep op te splitsen in losse woorden/tekens
    • Voorbeeld: "I watched a movie last night, it was okay." wordt
    • [I, watched, a, movie, last, night, it, was, okay]
  • Tokenization met Keras

    • Leert een mapping van woord naar woord-ID op basis van een corpus.
    • Kan een string omzetten naar een reeks ID’s
from tensorflow.keras.preprocessing.text import Tokenizer
en_tok = Tokenizer()
Machine Translation met Keras

De Tokenizer fitten

  • De Tokenizer fitten op data
    • Tokenizer moet op zinnen gefit worden om de woord-naar-ID-mapping te leren.
en_tok = Tokenizer()
en_tok.fit_on_texts(en_text)
  • De woord-naar-ID-mapping ophalen
    • Gebruik het word_index-attribuut van Tokenizer.
id = en_tok.word_index["january"] # => returns 51
  • De ID-naar-woord-mapping ophalen
w = en_tok.index_word[51] # => returns 'january'
Machine Translation met Keras

Zinnen omzetten naar sequenties

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

De woordenschat beperken

  • Je kunt de woordenschatgrootte beperken in een Keras-Tokenizer.
tok = Tokenizer(num_words=50)
  • Out-of-vocabulary (OOV) woorden

    • Zeldzame woorden in het trainingscorpus (d.w.z. tekstverzameling).
    • Woorden die niet in de trainingsset staan.
  • Voorbeeld

    • tok.fit_on_texts(["I drank milk"])
    • tok.texts_to_sequences(["I drank water"])
    • Het woord water is een OOV-woord en wordt genegeerd.
Machine Translation met Keras

Out-of-vocabulary-woorden behandelen

  • Een OOV-token definiëren
tok = Tokenizer(num_words=50, oov_token='UNK')
  • Voorbeeld
    • tok.fit_on_texts(["I drank milk"])
    • tok.texts_to_sequences(["I drank water"])
    • Het woord water is een OOV-woord en wordt vervangen door UNK.
      • m.a.w. Keras ziet "I drank UNK"
Machine Translation met Keras

Laten we oefenen!

Machine Translation met Keras

Preparing Video For Download...