O que são vetores de palavras e como construir

O que são vetores de palavras e como construir

Nessa seção discutiremos um pouco uma abordagem relativamente recente no campo do Processamento de Linguagem Natural que é o Word2vec (uso de vetores de palavras). As aulas propostas nessa seção terão o objetivo de esclarecer como os vetores de palavras funcionam e como é possível utilizar essa abordagem na linguagem python.

O que é um vetor de palavras?

Os vetores de palavras são simplesmente vetores de números que representam o significado de uma palavra. Antes de usar vetores de palavras, abordagens tradicionais de PLN já codificavam palavras usando modelos de pacote de palavras (ou seja, usando variáveis ​​fictícias para representar a presença ou ausência de uma palavra em uma observação, ou seja, uma frase).

Veja um exemplo: Imagine a frase → “Júlio é muito bom, Júlio se destaca.” Nesse tipo de modelo a representação seria algo assim:

[
  {"júlio": 2}, 
  {"é" : 1},
  {"muito" : 1}
  {"bom" : 1}
  {"se" : 1}
  {"destaca" : 1}
] 

Embora esse tipo de representação seja muito útil aprendizado de máquina, eles não capturam informações sobre o significado ou contexto de uma palavra. Isso significa que relacionamentos potenciais, como proximidade contextual, não são capturados em coleções de palavras. Ou seja, essa codificação não pode capturar relacionamentos simples, como determinar que as palavras “cachorro” e “gato” se referem a animais que são frequentemente discutidos no contexto de animais domésticos. Geralmente, esse tipo de codificações é utilizada como base para tarefas simples de PNL (por exemplo, classificadores de spam de e-mail), mas não têm sofisticação para tarefas mais complexas, como tradução e reconhecimento de fala.

Em contraste a essa abordagem, os vetores de palavras representam palavras como números de ponto flutuante contínuos multidimensionais, onde palavras semanticamente semelhantes são mapeadas para pontos próximos no espaço geométrico. Em termos mais simples, um vetor de palavras é uma linha de números com valor real (em oposição a números fictícios) onde cada ponto captura uma dimensão do significado da palavra e onde palavras semanticamente semelhantes têm vetores semelhantes. Isso significa que palavras como roda e motor devem ter vetores de palavras semelhantes à palavra carro (devido à semelhança de seus significados), enquanto a palavra banana deve estar bem distante. 

Como os vetores de palavras são construídos?

Tudo começa com uma simples percepção: palavras que compartilham contextos semelhantes tendem a ter significados semelhantes. Isso significa que geralmente quando uma palavra é usada aquelas que estão em volta dela tendem a estar no mesmo contexto, ou seja, quando falamos “tartaruga” podemos imaginar a palavra oceano, lago, água, lenta, etc. Porém, é difícil imaginar as palavras mesa, computador, carteira.

O contexto de uma palavra em um sentido prático refere-se às palavras ao seu redor e os vetores de palavras são (normalmente) gerados pela previsão da probabilidade de um contexto dada uma palavra. Em outras palavras, os pesos que compõem um vetor de palavras são aprendidos fazendo previsões sobre a probabilidade de outras palavras estarem contextualmente próximas de uma determinada palavra. Isso é semelhante a tentar preencher os espaços em branco em torno de uma determinada palavra de entrada. 

Vamos para um exemplo prático: considere a frase “O site do CSM possui muitos exemplos legais”, o contexto pode ser definido pelo pesquisador, nesse caso vamos considerar duas janelas (duas palavras precedendo e precedendo a palavra focal). Então, para CSM temos:

CSM: “SITE” | “DO” – “POSSUI” | “MUITOS”

Observe que este é um processo de aprendizagem supervisionado, mas você não precisa de dados rotulados – os rótulos (os alvos / variáveis ​​dependentes) são gerados a partir das palavras que formam o contexto de uma palavra focal. Assim, podemos usar um intervalo de palavras (janela) para definir como o modelo aprende. Assim, quando um modelo vetor de palavras está “pronto” podemos saber o quanto um vetor está próximo de outro vetor com base no seu contexto.

Por quê vetores de palavras são tão poderosos?

Ao usar vetores de palavras, podemos perceber que algumas palavras que são usadas em um contexto semelhante serão mapeadas para um espaço vetorial próximo (veremos como esses vetores de palavras são criados a seguir). A beleza de representar palavras como vetores é que elas se prestam a operadores matemáticos. Por exemplo, podemos adicionar e subtrair vetores – o exemplo canônico aqui mostra que, usando vetores de palavras, podemos determinar que:

  • rei – homem + mulher = rainha

Em outras palavras, podemos subtrair um significado da palavra vetor para rei (ou seja, masculinidade), adicionar outro significado (feminilidade) e mostrar que este novo vetor de palavra (rei – homem + mulher) mapeia mais de perto com a palavra vetor para rainha .

Os números na palavra vetor representam o peso distribuído da palavra nas dimensões . Em um sentido simplificado, cada dimensão representa um significado e o peso numérico da palavra nessa dimensão captura a proximidade de sua associação com e para aquele significado. Assim, a semântica da palavra é incorporada nas dimensões do vetor.

O que é o Word2Vec


O Word2Vec é um algoritmo que foi implementado inicialmente por Tomas Mikolov do Google, com o propósito de construir uma representação vetorial para palavras em um texto. O algoritmo tem como efeito associar a cada palavra vista nos textos um vetor correspondente, chamado de Wordvec. A ideia é que palavras parecidas, ou seja, palavras que aparecem em contextos similares dentro dos textos, sejam representadas por vetores próximos.  

Entre as aplicações que fazemos deste algoritmo dentro dos nossos projetos é descobrir palavras que indicam, por exemplo, o caráter positivo (ou negativo) de uma palavra em uma avaliação de estabelecimentos na internet. A premissa é de que palavras negativas estejam próximas umas as outras, pois aparecem sempre em contextos similares. O mesmo para palavras que sejam positivas e neutras para a avaliação do consumidor.

Com isso é possível descobrir, automaticamente, qual é o sentimento de comentários feitos na internet, sem que seja necessário que a pessoa que escreveu aquele comentário diga, explicitamente, se é negativo ou positivo.   Outra aplicação é, por exemplo, em uma sequência de transações em cartão e descobrir qual é a classificação de uma transação usando apenas o nome encontrado na fatura do cliente.

O Word2Vec é uma classe de algoritmos, que tem como base encontrar uma representação vetorial para palavras de forma que palavras parecidas (que aparecem contextos similares) tenham vetores parecidos. Todos esses algoritmos usam redes neurais com uma camada escondida (representando o embedding) para fazer previsões sobre uma palavra dada seu contexto ou sobre o contexto dada uma palavra.  

Vinicius dos Santos

Apenas um apaixonado por Ciência da Computação e forma com que ela pode transformar vidas!

Deixe uma resposta