パート1:データの前処理

Kerasで学ぶMachine Translation

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で学ぶMachine Translation

単語のトークン化

  • トークン化

    • 文/句を単語や文字に分割する処理
    • "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()
Kerasで学ぶMachine Translation

Tokenizerの学習

  • Tokenizerの学習(fit)
    • 単語→ID対応を学ぶには文データで学習が必要
en_tok = Tokenizer()
en_tok.fit_on_texts(en_text)
  • 単語→IDの取得
    • Tokenizerword_index属性を使用
id = en_tok.word_index["january"] # => returns 51
  • ID→単語の取得
w = en_tok.index_word[51] # => returns 'january'
Kerasで学ぶMachine Translation

文をID列に変換

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

語彙サイズの制限

  • KerasのTokenizerで語彙サイズを制限可能
tok = Tokenizer(num_words=50)
  • 語彙外(OOV)語

    • 学習コーパスでまれな語
    • 学習データに存在しない語
    • tok.fit_on_texts(["I drank milk"])
    • tok.texts_to_sequences(["I drank water"])
    • 単語waterはOOVで無視されます。
Kerasで学ぶMachine Translation

語彙外(OOV)語の扱い

  • 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で学ぶMachine Translation

Passons à la pratique !

Kerasで学ぶMachine Translation

Preparing Video For Download...