Část 1: Předzpracování dat

Machine Translation with Keras

Thushan Ganegedara

Data Scientist and Author

Úvod do dat

  • Data

    • en_text : A Python list of sentences, each sentence is a string of words separated by spaces.
    • fr_text: A Python list of sentences, each sentence is a string of words separated by spaces.
  • Printing some data in the dataset

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

Tokenizace slov

  • Tokenizace

    • Rozdělení věty/fráze na jednotlivá slova nebo znaky
    • Např. "I watched a movie last night, it was okay." se stane,
    • [I, watched, a, movie, last, night, it, was, okay]
  • Tokenizace v Kerasu

    • Učí se mapování slov na ID pomocí zadaného korpusu.
    • Umožňuje převod řetězce na posloupnost ID.
from tensorflow.keras.preprocessing.text import Tokenizer
en_tok = Tokenizer()
Machine Translation with Keras

Trénování tokenizeru

  • Trénování tokenizeru na datech
    • Tokenizer musí být natrénován na větách, aby se naučil mapování slov na ID.
en_tok = Tokenizer()
en_tok.fit_on_texts(en_text)
  • Získání mapování slovo → ID
    • Použijte atribut word_index objektu Tokenizer.
id = en_tok.word_index["january"] # => returns 51
  • Získání mapování ID → slovo
w = en_tok.index_word[51] # => returns 'january'
Machine Translation with Keras

Převod vět na sekvence

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

Omezení velikosti slovníku

  • Velikost slovníku v Kerasu Tokenizer lze omezit.
tok = Tokenizer(num_words=50)
  • Slova mimo slovník (OOV)

    • Vzácná slova v trénovacím korpusu (tj. kolekci textů).
    • Slova, která nejsou přítomna v trénovací sadě.
  • Např.

    • tok.fit_on_texts(["I drank milk"])
    • tok.texts_to_sequences(["I drank water"])
    • Slovo water je OOV slovo a bude ignorováno.
Machine Translation with Keras

Zpracování slov mimo slovník

  • Definování OOV tokenu
tok = Tokenizer(num_words=50, oov_token='UNK')
  • Např.
    • tok.fit_on_texts(["I drank milk"])
    • tok.texts_to_sequences(["I drank water"])
    • Slovo water je OOV slovo a bude nahrazeno výrazem UNK.
      • tj. Keras uvidí „I drank UNK"
Machine Translation with Keras

Pojďme procvičovat!

Machine Translation with Keras

Preparing Video For Download...