Representando Palavras & Embeddings

Parte 01: O Problema

Marcelo Finger
Alan Barzilay

Tópicos

  • O problema de representação de sentenças
  • Representações alternativas
  • Semântica vetorial de palavras
  • Embeddings

Tokenização

Tokenizar um texto é quebrar ele em elementos menores, em peças (tokens) com as quais podemos trabalhar e atribuir significado.

 

from tensorflow.keras import layers

layers.experimental.preprocessing.TextVectorization(
    max_tokens=None,
    standardize=LOWER_AND_STRIP_PUNCTUATION,
    split=SPLIT_ON_WHITESPACE,
    ngrams=None,
    output_mode="int",
    output_sequence_length=None,
    pad_to_max_tokens=True,
    **kwargs
)

Transforma cada token em um índice numérico.

Sentença -> vetor

  • Redes Neurais não entendem letras, apenas números

  • ASCII e UTF-8 não carregam nenhum significado sobre palavras, frases ou contexto.

  • Como podemos representar texto de uma maneira que carregue informação?

 

"Eu gosto de batata doce."

One Hot Encoding

Eu gosto de batata

 

 

Cada palavra/token é representada por um vetor de dimensão igual ao vocabulário. 

Eu

[1,0,0,0]

gosto

[0,1,0,0]

de

[0,0,1,0]

batata

[0,0,0,1]

One Hot Encoding

from tensorflow.keras import layers

layers.experimental.preprocessing.TextVectorization(
    max_tokens=None,
    standardize=LOWER_AND_STRIP_PUNCTUATION,
    split=SPLIT_ON_WHITESPACE,
    ngrams=None,
    output_mode="int",
    output_sequence_length=None,
    pad_to_max_tokens=True,
    **kwargs
)

One-hot Explosion

  • Palavras em português flexionam bastante
    • Substantivos, adjetivos: plural, gênero, diminutivo, aumentativo
    • Verbo: 19 tempos verbais x 6 pessoas
    • Tamanho de vocabulário > 150.000
  • Representação esparsa: cada palavra é um vetor de tamanho 150.000, com apenas uma posição utilizada!
Imagem de um botão estilizado de volta para pagina inicial