Часть 1: предобработка данных

Машинный перевод с 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 .
...
Машинный перевод с Keras

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

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

    • Разбивка предложения или фразы на отдельные слова или символы
    • Например, "I watched a movie last night, it was okay." преобразуется в:
    • [I, watched, a, movie, last, night, it, was, okay]
  • Токенизация с помощью Keras

    • Строит отображение слова в идентификатор на основе заданного корпуса.
    • Позволяет преобразовать строку в последовательность идентификаторов.
from tensorflow.keras.preprocessing.text import Tokenizer
en_tok = Tokenizer()
Машинный перевод с Keras

Обучение токенайзера

  • Обучение токенайзера на данных
    • Токенайзер нужно обучить на данных (предложениях), чтобы построить отображение слов в идентификаторы.
en_tok = Tokenizer()
en_tok.fit_on_texts(en_text)
  • Получение отображения слово → идентификатор
    • Используйте атрибут word_index объекта Tokenizer.
id = en_tok.word_index["january"] # => returns 51
  • Получение отображения идентификатор → слово
w = en_tok.index_word[51] # => returns 'january'
Машинный перевод с Keras

Преобразование предложений в последовательности

seq = en_tok.texts_to_sequences(['she likes grapefruit , peaches , and lemons .'])
[[26, 70, 27, 73, 7, 74]]
Машинный перевод с Keras

Ограничение размера словаря

  • Размер словаря в Tokenizer Keras можно ограничить.
tok = Tokenizer(num_words=50)
  • Слова вне словаря (OOV)

    • Редкие слова в обучающем корпусе (наборе текстов).
    • Слова, отсутствующие в обучающей выборке.
  • Пример:

    • tok.fit_on_texts(["I drank milk"])
    • tok.texts_to_sequences(["I drank water"])
    • Слово water является OOV-словом и будет проигнорировано.
Машинный перевод с 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»
Машинный перевод с Keras

Давайте потренируемся!

Машинный перевод с Keras

Preparing Video For Download...