Частина 1: Попередня обробка даних

Machine Translation з Keras

Thushan Ganegedara

Data Scientist and Author

Знайомство з даними

  • Дані

    • en_text : список речень у Python; кожне — рядок слів, розділених пробілами.
    • fr_text: список речень у Python; кожне — рядок слів, розділених пробілами.
  • Виведення частини набору даних

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

Токенізація слів

  • Токенізація

    • Процес поділу речення/фрази на окремі слова/символи
    • Напр., "I watched a movie last night, it was okay." стає
    • [I, watched, a, movie, last, night, it, was, okay]
  • Токенізація з Keras

    • Навчає відображення слово → ID слова на основі корпусу.
    • Дозволяє перетворювати рядок на послідовність ID
from tensorflow.keras.preprocessing.text import Tokenizer
en_tok = Tokenizer()
Machine Translation з Keras

Навчання Tokenizer

  • Навчання Tokenizer на даних
    • Tokenizer потрібно «підігнати» на реченнях, щоб вивчити відповідність слово → ID.
en_tok = Tokenizer()
en_tok.fit_on_texts(en_text)
  • Отримання відображення слово → ID
    • Використайте атрибут word_index у Tokenizer.
id = en_tok.word_index["january"] # => returns 51
  • Отримання відображення ID → слово
w = en_tok.index_word[51] # => returns 'january'
Machine Translation з Keras

Перетворення речень на послідовності

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

Обмеження розміру словника

  • Ви можете обмежити розмір словника в Keras Tokenizer.
tok = Tokenizer(num_words=50)
  • Слова поза словником (OOV)

    • Рідкісні слова в тренувальному корпусі (тобто зібранні текстів).
    • Слова, відсутні в тренувальній вибірці.
  • Напр.

    • tok.fit_on_texts(["I drank milk"])
    • tok.texts_to_sequences(["I drank water"])
    • Слово water є OOV і буде проігнороване.
Machine Translation з Keras

Обробка слів поза словником

  • Визначення токена OOV
tok = Tokenizer(num_words=50, oov_token='UNK')
  • Напр.
    • tok.fit_on_texts(["I drank milk"])
    • tok.texts_to_sequences(["I drank water"])
    • Слово water є OOV і буде замінене на UNK.
      • тобто Keras побачить "I drank UNK"
Machine Translation з Keras

Давайте потренуємось!

Machine Translation з Keras

Preparing Video For Download...