Część 1: Przetwarzanie danych

Tłumaczenie maszynowe z Keras

Thushan Ganegedara

Data Scientist and Author

Wprowadzenie do danych

  • Dane

    • en_text: lista zdań w Pythonie; każde zdanie to ciąg słów oddzielonych spacjami.
    • fr_text: lista zdań w Pythonie; każde zdanie to ciąg słów oddzielonych spacjami.
  • Wyświetlanie przykładowych danych

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 .
...
Tłumaczenie maszynowe z Keras

Tokenizacja słów

  • Tokenizacja

    • Proces podziału zdania/frazy na poszczególne słowa/znaki
    • Np. "I watched a movie last night, it was okay." staje się:
    • [I, watched, a, movie, last, night, it, was, okay]
  • Tokenizacja z Keras

    • Uczy mapowania słów na identyfikatory na podstawie danego korpusu.
    • Pozwala przekształcić ciąg znaków w sekwencję identyfikatorów.
from tensorflow.keras.preprocessing.text import Tokenizer
en_tok = Tokenizer()
Tłumaczenie maszynowe z Keras

Dopasowywanie tokenizatora

  • Dopasowywanie tokenizatora do danych
    • Tokenizator musi zostać dopasowany do danych (tj. zdań), aby nauczyć się mapowania słów na identyfikatory.
en_tok = Tokenizer()
en_tok.fit_on_texts(en_text)
  • Pobieranie mapowania słowo → identyfikator
    • Użyj atrybutu word_index obiektu Tokenizer.
id = en_tok.word_index["january"] # => returns 51
  • Pobieranie mapowania identyfikator → słowo
w = en_tok.index_word[51] # => returns 'january'
Tłumaczenie maszynowe z Keras

Przekształcanie zdań w sekwencje

seq = en_tok.texts_to_sequences(['she likes grapefruit , peaches , and lemons .'])
[[26, 70, 27, 73, 7, 74]]
Tłumaczenie maszynowe z Keras

Ograniczanie rozmiaru słownika

  • Rozmiar słownika w obiekcie Tokenizer można ograniczyć.
tok = Tokenizer(num_words=50)
  • Słowa spoza słownika (OOV)

    • Rzadkie słowa w korpusie treningowym (tj. zbiorze tekstów).
    • Słowa nieobecne w zbiorze treningowym.
  • Przykład:

    • tok.fit_on_texts(["I drank milk"])
    • tok.texts_to_sequences(["I drank water"])
    • Słowo water jest słowem OOV i zostanie zignorowane.
Tłumaczenie maszynowe z Keras

Obsługa słów spoza słownika

  • Definiowanie tokenu OOV
tok = Tokenizer(num_words=50, oov_token='UNK')
  • Przykład:
    • tok.fit_on_texts(["I drank milk"])
    • tok.texts_to_sequences(["I drank water"])
    • Słowo water jest słowem OOV i zostanie zastąpione przez UNK.
      • tzn. Keras zobaczy „I drank UNK"
Tłumaczenie maszynowe z Keras

Czas na ćwiczenia!

Tłumaczenie maszynowe z Keras

Preparing Video For Download...