Del 1: Förbehandling av data

Maskinöversättning med Keras

Thushan Ganegedara

Data Scientist and Author

Introduktion till data

  • Data

    • en_text : En Python-lista med meningar, där varje mening är en sträng av ord separerade med mellanslag.
    • fr_text: En Python-lista med meningar, där varje mening är en sträng av ord separerade med mellanslag.
  • Skriver ut några datapunkter från datamängden

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 .
...
Maskinöversättning med Keras

Ordtokenisering

  • Tokenisering

    • Processen att dela upp en mening eller fras i enskilda ord eller tecken
    • T.ex. "I watched a movie last night, it was okay." blir,
    • [I, watched, a, movie, last, night, it, was, okay]
  • Tokenisering med Keras

    • Lär sig en mappning från ord till ord-ID utifrån ett givet korpus.
    • Kan användas för att konvertera en sträng till en sekvens av ID:n
from tensorflow.keras.preprocessing.text import Tokenizer
en_tok = Tokenizer()
Maskinöversättning med Keras

Anpassa tokeniseraren

  • Anpassa tokeniseraren på data
    • Tokeniseraren behöver anpassas på data (dvs. meningar) för att lära sig mappningen från ord till ord-ID.
en_tok = Tokenizer()
en_tok.fit_on_texts(en_text)
  • Hämta mappningen från ord till ID
    • Använd attributet word_index i Tokenizer.
id = en_tok.word_index["january"] # => returns 51
  • Hämta mappningen från ID till ord
w = en_tok.index_word[51] # => returns 'january'
Maskinöversättning med Keras

Omvandla meningar till sekvenser

seq = en_tok.texts_to_sequences(['she likes grapefruit , peaches , and lemons .'])
[[26, 70, 27, 73, 7, 74]]
Maskinöversättning med Keras

Begränsa ordförrådets storlek

  • Du kan begränsa ordförrådets storlek i en Keras Tokenizer.
tok = Tokenizer(num_words=50)
  • Ord utanför ordförrådet (OOV)

    • Sällsynta ord i träningskorpuset (dvs. textsamlingen).
    • Ord som inte finns i träningsdatan.
  • T.ex.

    • tok.fit_on_texts(["I drank milk"])
    • tok.texts_to_sequences(["I drank water"])
    • Ordet water är ett OOV-ord och ignoreras.
Maskinöversättning med Keras

Hantera ord utanför ordförrådet

  • Definiera en OOV-token
tok = Tokenizer(num_words=50, oov_token='UNK')
  • T.ex.
    • tok.fit_on_texts(["I drank milk"])
    • tok.texts_to_sequences(["I drank water"])
    • Ordet water är ett OOV-ord och ersätts med UNK.
      • dvs. Keras ser "I drank UNK"
Maskinöversättning med Keras

Nu kör vi en övning!

Maskinöversättning med Keras

Preparing Video For Download...