Word Embedding é uma abordagem de mineração de textos em que as palavras são representadas de forma matemática em um vetor. Diferentemente da abordagem mais simples utilizada no modelo conhecido como bag of words, na qual as palavras costumam ser representadas em vetores muito grandes e esparsos, word embeddings utilizam vetores densos de tamanho fixo que são capazes de armazenar informações sobre o contexto e significado dos documentos.

Cada palavra é representada por um ponto em um espaço multidimensional que chamamos de “embedding space“. No parágrafo anterior dizemos que um vetor de tamanho fixo é utilizado para representar cada palavra, ou seja, na verdade este vetor está armazenando os valores de cada dimensão/ponto referentes àquela determinada palavra.

Por exemplo, se quiséssemos representar o seguinte texto em um embedding space de 5 dimensões teríamos algo do tipo:

“O rei e a rainha moram no castelo”

palavra dim 1 dim 2 dim 3 dim 4 dim 5
REI 0.98555 3.98555 0.98555 0.98555 0.98555
RAINHA 2.98555 5.98555 2.98555 2.98555 2.98555
MORAM 4.98555 7.98555 0.98555 0.98555 0.98555
CASTELO 3.98555 6.98555 0.98555 2.98555 5.98555

Você deve estar se perguntando de onde saíram os valores de cada dimensão…chegaremos lá. Por enquanto, note que a tabela acima apenas possui a representação final  de cada palavra. No entanto, para se chegar nestes valores passamos por um processo de treinamento do modelo.

Antes de abordarmos o processo de treinamento em si, tome nota de mais alguns pontos interessantes sobre a tabela acima:

  • Devido à forma como os textos são representados na abordagem word embedding, conseguimos agrupar palavras com significados semelhantes (as palavras similares podem ser agrupadas em uma mesma área do espaço em que são representadas).
  • Note que esta representação multidimensional das palavras nos permite trabalhar com técnicas de redução de dimensionalidade para, por exemplo, selecionar os dois componentes principais dentro de uma análise PCA e exibir as palavras similares em um scatter plot (x, y).

Agora você é capaz de entender como é possível representar palavras em gráficos como este a seguir. Como não custa nada deixar explícito: bastaria agrupar as palavras por meio da abordagem word embedding em um espaço de n dimensões e, em seguida,  calcular os dois componentes principais de cada ponto (palavra) para plotar as palavras no gráfico.

cluster_palavras

Fonte: Mastery Machine Learning

Organização das palavras para o processo de treinamento do modelo

A abordagem word embedding permite a aprendizagem do significado/contexto das palavras porque durante seu treinamento cada palavra é definida por ela mesma e por aquelas que a acompanham.

A matrix que armazena esta combinação de palavras é conhecida como Co-Occurrence Matrix. Adicionalmente, também é definido um fixed context window que é responsável por especificar quantas palavras serão utilizadas para aprender o contexto.

Veja este exemplo que extraí do site analyticsvidhya.com:

Quick Brown Fox Jump Over The Lazy Dog

Na tabela acima, se definirmos um context window igual a 2, dezemos que o contexto da palavra Fox é [Quick, Brown, Jump, Over]. Já o contexto da palavra Jump é [Brown, Fox, Over, The].

Não parece difícil, certo? Ainda usando outro exemplo do site analyticsvidhya.com, vamos ver como montar a Co-Occurrence Matrix para a seguinte frase:

“He is not lazy. He is intelligent. He is smart”

He is not lazy intelligent smart
He 0 4 2 1 2 1
is 4 0 1 2 2 1
not 2 1 0 1 0 0
lazy 1 2 1 0 0 0
intelligent 2 2 0 0 0 0
smart 1 1 0 0 0 0

Ainda considerando um context window igual a 2, a combinação “He is” apareceram juntas no mesmo contexto 4 vezes. Isso explica a contagem igual a 4 para esta combinação na matriz acima. Veja cada uma das ocorrências no esquema abaixo:

He is not lazy He is intelligent He is smart
He is not lazy He is intelligent He is smart
He is not lazy He is intelligent He is smart
He is not lazy He is intelligent He is smart

Fonte: analyticsvidhya.com

Construção do modelo

Neste ponto, a Co-Occurrence Matrix será usada como o conjunto de dados de entrada para a construção do seu modelo final. Atualmente existem dois métodos de word embedding mais conhecidos (que podem mudar alguns detalhes de como a matriz co-occurrence é criada):

  • Word2Vec, desenvolvido por Tomas Mikolov, et al., na época, atuando pelo Google em 2013. Internamente, Word2Vec pode utilizar dois diferentes algoritmos baseados em redes neurais, são eles:
    • Continuous Bag-of-Words (CBOW): aprende prevendo a palavra atual baseada em seu contexto.
    • Skip-Gram: aprende prevendo o contexto baseado na palavra atual.
  • GloVe (Global Vectors for Word Representation), desenvolvido por Pennington, et al., Stanford. É uma extensão do método Word2Vec, no entanto, ao invés de usar uma janela fixa para configurar o contexto, este método constrói a matriz co-occurrence usando estatísticas extraídas do próprio texto.

Tanto Word2Vec quanto GloVe possuem seus modelos de word embedding pré-treinados que podem ser baixados da internet. Ou seja, ao invés de treinar o seu próprio word embedding, você pode utilizar um modelo já treinado.

Prática

Acesse aqui o exemplo prático deste post usando a biblioteca Python Gensim.

Referências

https://www.analyticsvidhya.com/blog/2017/06/word-embeddings-count-word2veec/
https://www.tensorflow.org/tutorials/word2vec
Mastery Machine Learning: Deep Learning for NLP

1 comentário

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

%d blogueiros gostam disto: