Embeddings semânticos, como Word2Vec e GloVe, são, na verdade, um primeiro passo em direção à modelagem de linguagem - criando modelos que de alguma forma entendem (ou representam) a natureza da linguagem.
A ideia principal por trás da modelagem de linguagem é treiná-los em conjuntos de dados não rotulados de forma não supervisionada. Isso é importante porque temos uma enorme quantidade de texto não rotulado disponível, enquanto a quantidade de texto rotulado sempre será limitada pelo esforço que podemos dedicar à rotulagem. Na maioria das vezes, podemos construir modelos de linguagem que conseguem prever palavras ausentes no texto, porque é fácil mascarar uma palavra aleatória no texto e usá-la como um exemplo de treinamento.
Nos nossos exemplos anteriores, usamos embeddings semânticos pré-treinados, mas é interessante ver como esses embeddings podem ser treinados. Existem várias ideias possíveis que podem ser utilizadas:
- Modelagem de linguagem N-Gram, onde prevemos um token olhando para os N tokens anteriores (N-grama).
-
Continuous Bag-of-Words (CBoW), onde prevemos o token do meio
$W_0$ em uma sequência de tokens$W_{-N}$ , ...,$W_N$ . -
Skip-gram, onde prevemos um conjunto de tokens vizinhos {$W_{-N},\dots, W_{-1}, W_1,\dots, W_N$} a partir do token do meio
$W_0$ .
Imagem retirada deste artigo
Continue seu aprendizado nos seguintes notebooks:
Na lição anterior, vimos que embeddings de palavras funcionam como mágica! Agora sabemos que treinar embeddings de palavras não é uma tarefa muito complexa, e devemos ser capazes de treinar nossos próprios embeddings para textos específicos de domínio, se necessário.
- Tutorial oficial do PyTorch sobre Modelagem de Linguagem.
- Tutorial oficial do TensorFlow sobre treinamento do modelo Word2Vec.
- O uso do framework gensim para treinar os embeddings mais comumente usados em poucas linhas de código é descrito nesta documentação.
No laboratório, desafiamos você a modificar o código desta lição para treinar um modelo skip-gram em vez de CBoW. Leia os detalhes
