Machine Learning · Insper · E2.3

Word Embeddings

Abordagem fundamental

Como um computador aprende o que uma palavra significa pelas palavras em volta: à mão (contagens → PPMI, a informação mútua pontual positiva → SVD, a decomposição em valores singulares), por predição (word2vec) e pré-treinados (GloVe)

O problema: cada palavra é uma coluna própria

  • No bag-of-words e no TF-IDF (frequência do termo × frequência inversa nos documentos) as colunas são ortogonais.
  • "carro" e "automóvel" são tão pouco relacionados quanto "carro" e "banana".
  • A representação sabe quais palavras um documento contém, nada sobre o que elas significam.
Um word embedding (vetor de palavra) troca a coluna por um vetor curto e denso (de 50 a 300 números), arranjado para que palavras usadas de jeitos parecidos recebam vetores parecidos.

O caminho desta parte

  1. Contexto → sentidoa hipótese distribucional
  2. Contar e comprimircontagens de coocorrência → PPMI → SVD truncada
  3. Aprender prevendoskip-gram, CBOW, amostragem negativa
  4. Explorar o espaçovizinhos, relação, analogias, um vetor por palavra
Cada etapa responde a uma pergunta: de onde vem o sentido de uma palavra? → como contagens viram um vetor denso? → um modelo pode aprender os vetores prevendo? → o que os vetores captam e o que deixam escapar?
Etapa 1 · de onde vem o sentido de uma palavra?

Uma palavra que você nunca viu

  • Um copo de tiquira gelada.
  • A tiquira é feita de mandioca fermentada.
  • Bebeu tiquira demais e passou mal.
  • No Maranhão, servem tiquira nas festas.
Preveja. Ninguém a definiu. O que é tiquira e como você sabe?

A hipótese distribucional

Você deduziu pelas companhias da palavra: copo, gelada, fermentada, bebeu, demais, festas.

Harris, 1954

palavras que aparecem em contextos parecidos tendem a ter significados parecidos

Firth, 1957

"you shall know a word by the company it keeps"

O significado vira algo que se pode contar: se duas palavras têm os mesmos vizinhos, seus vetores devem ficar próximos.
Etapa 2 · como contagens viram um vetor denso?

Das contagens à PPMI, passo a passo

Onze frases, janela de duas palavras; PMI = informação mútua pontual. Preveja. Nas contagens brutas, qual contexto de "gato" é o mais forte? Depois da PMI, qual é o mais fraco?

SVD truncada: 20 colunas esparsas → 2 números densos

palavradim 1dim 2
gato3,77−0,97
cachorro2,55−0,35
leite2,78−0,79
carro0,611,87
automóvel0,702,28
gasolina0,642,44

A SVD (decomposição em valores singulares; a PCA, análise de componentes principais, sem centrar) guarda as \(k\) direções que mais explicam a matriz.

Animais e comida: primeira coordenada grande. Veículos e combustível: a segunda.

Ninguém disse a ela quais palavras são animais: os grupos dividem contextos por dentro, não entre si.

A seção inteira em quatro colunas

parcolunas do bag-of-wordscontagensPPMIPPMI + SVD
gato / cachorro0,000,730,220,99
carro / automóvel0,000,870,751,00
gato / carro0,000,500,050,06
A SVD das contagens brutas mistura animais e veículos num mesmo raio; a SVD da PPMI põe animais e comida num canto e veículos e combustível em outro
Etapa 3 · um modelo pode aprender os vetores prevendo?

word2vec: aprendendo por predição

Uma frase de seis palavras com janela de dois em torno de bebe: o skip-gram gera quatro exemplos, o CBOW um, a amostragem negativa junta o exemplo real a pares aleatórios

Mikolov et al., 2013. Deslize uma janela e gere exemplos de treino:

  • skip-gram: o centro prevê cada vizinho → 18 exemplos de 6 palavras;
  • CBOW (continuous bag-of-words): a média dos vizinhos prevê o centro → 6 exemplos.

Como os vetores se aproximam

  • Toda palavra começa com um vetor aleatório. Um par (centro, contexto) é pontuado pelo produto escalar.
  • O treino empurra os vetores para que os pares que de fato ocorrem tenham nota alta.
  • Palavras nos mesmos contextos recebem os mesmos empurrões: a hipótese distribucional virada otimização.

amostragem negativa

Em vez de pontuar as 100.000 palavras: "essas duas apareceram mesmo juntas?" Real (bebe, leite) → 1; aleatório (bebe, diesel) → 0, com 5 a 20 palavras aleatórias por par real.

Levy & Goldberg (2014): o skip-gram com amostragem negativa fatora uma matriz de PMI deslocada. Predição e contagem chegam ao mesmo lugar.

Treinando: os botões do gensim

parâmetroo que faz
vector_sizenúmeros por palavra (de 100 a 300 é o típico)
windowpequena (2–5): mesma função; grande (10+): mesmo assunto
sg1 = skip-gram (mais lento, melhor para palavras raras); 0 = CBOW
negativepalavras aleatórias por par real
min_countpalavras mais raras que isso saem
epochs, seedpassadas; seed e workers=1 para reprodutibilidade
Etapa 4 · o que os vetores captam e o que deixam escapar?

Vetores pré-treinados: GloVe, 400.000 palavras × 50 números

Preveja. Quais são as cinco palavras mais próximas de "python"?
palavramais próximas pelo cosseno
cartruck 0,92, cars 0,89, vehicle 0,88, driver 0,85, driving 0,84
mangopineapple 0,91, guava 0,90, papaya 0,89, pear 0,85, coconut 0,85
brazilportugal 0,88, argentina 0,87, rica 0,84, spain 0,83, costa 0,83
pythonreticulated 0,69, spamalot 0,66, php 0,64, owl 0,63, mouse 0,63

GloVe (global vectors): treinado em Stanford com 6 bilhões de tokens. Nenhum número sozinho significa algo ("car" começa com 0,48, −0,08, 1,46…); só a geometria significa. "python" mistura a cobra, o Monty Python e a programação.

Parecido não é sinônimo

Preveja. hot / cold (quente / frio): cosseno alto ou baixo?
car / automobile0,70
doctor / physician0,80
hot / cold0,80
good / bad0,80
car / banana0,22

Um antônimo é a palavra mais intercambiável que existe: "a sopa está quente" / "a sopa está fria".

A hipótese mede relação, não sinonímia: bom para busca, uma armadilha para sentimento.

Analogias, medidas com honestidade

\(\text{king} - \text{man} + \text{woman} \approx\ ?\)

acertos

queen · tokyo · rome · swam · faster · worse · spanish

7 / 12

erros

  • bigger − big + small = larger
  • brother − man + woman = daughter
  • glove − hand + foot = "50,000-square"

Capitais, tempos verbais, comparativos e línguas quase sempre funcionam; relações raras não são direções retas.

Simulador: vendo o espaço

Preveja. Clique numa palavra e compare os vizinhos em 50-D (as linhas) com o mapa: o mapa da PCA (24,5% da variância) engana? Depois experimente uma analogia pronta.

O limite: um vetor por palavra

bank

banks, securities, banking, investment, exchange, financial…

bank/money 0,64 · bank/river 0,41

apple

blackberry, chips, iphone, microsoft, ipad…

a fruta não aparece entre as dez

  • Um vetor é aproximadamente uma média dos sentidos pesada pela frequência (Arora et al., 2018). Em português: banco, manga, vela.
  • "O cachorro mordeu o homem" / "o homem mordeu o cachorro": as mesmas palavras, então só vetores de palavras não dizem quem mordeu quem.
Próxima página, sentence embeddings: o vetor de cada palavra calculado a partir da frase em volta.

Resumo

  1. Hipótese distribucional: contextos parecidos → vetores parecidos.
  2. À mão: contagens de coocorrência → PPMI (guarda o que supera o acaso) → SVD (junta contextos que se comportam igual).
  3. O word2vec prevê os vizinhos; com a amostragem negativa, perguntas de sim ou não. Chega perto do mesmo lugar que a contagem.
  4. Vetores pré-treinados: vizinhos medem relação (antônimos também); analogias funcionam parte das vezes.
  5. Um vetor por palavra, qualquer que seja o sentido.
Parte avançada: outros caminhos (LSA, GloVe, fastText), analogias ao microscópio, viés.
Lab fundamental · cerca de 35 min, em duplas

Vetores de palavras de três jeitos, passos 1 a 5

  • O primeiro milhão de palavras do text8 (Wikipédia em inglês, limpa).
  • Contagem (PPMI + SVD), predição (word2vec) e pré-treinados (GloVe), comparados pelos vizinhos das mesmas palavras.
  • Baixe o notebook do lab e abra no Colab ou no Jupyter; no Colab, rode !pip install gensim antes.
  • Em cada passo, responda ao Preveja antes de rodar.
  • Simulações: para que serve a PPMI (passo 3) e skip-gram ou CBOW (passo 4).

Ritmo: passos 1 e 2 em 8 min; passo 3 e a primeira simulação em 10 min; passo 4 e a segunda em 10 min; passo 5 em 7 min.