Como desenvolver embeddings de palavras em Python com Gensim

Como desenvolver embeddings de palavras em Python com Gensim

Embeddings de palavras são uma abordagem moderna para representar texto no processamento de linguagem natural.

Algoritmos de incorporação de palavras, como word2vec e GloVe, são essenciais para os resultados de ponta alcançados por modelos de rede neural em problemas de processamento de linguagem natural, como tradução automática.

Neste tutorial, você descobrirá como treinar e carregar modelos de incorporação de palavras para aplicativos de processamento de linguagem natural em Python usando Gensim.

Depois de concluir este tutorial, você saberá:

  • Como treinar seu próprio modelo de incorporação de palavras word2vec em dados de texto.
  • Como visualizar um modelo de incorporação de palavras treinadas usando Análise de Componentes Principais.
  • Como carregar modelos pré-treinados de incorporação de palavras word2vec e GloVe do Google e Stanford.

Comece seu projeto com meu novo livro Deep Learning for Natural Language Processing, incluindo tutoriais passo a passo e a Código-fonte Python arquivos para todos os exemplos.

Vamos começar.

Como desenvolver embeddings de palavras em Python com Gensim

Como desenvolver embeddings de palavras em Python com Gensim
Foto por diletantiquidade, alguns direitos reservados.

Visão geral do tutorial

Este tutorial é dividido em 6 partes; eles estão:

  1. Word Embeddings
  2. Biblioteca Gensim
  3. Desenvolver incorporação de Word2Vec
  4. Visualize Word Embedding
  5. Carregar Word2Vec Embedding do Google
  6. Carregar GloVe Embedding de Stanford

Precisa de ajuda com Deep Learning for Text Data?

Faça meu curso intensivo de e-mail gratuito de 7 dias agora (com código).

Clique para se inscrever e também obter uma versão gratuita do Ebook em PDF do curso.

Comece Seu Crash-Course GRÁTIS Agora

Word Embeddings

A incorporação de palavras é uma abordagem para fornecer uma representação vetorial densa de palavras que capturam algo sobre seu significado.

Os embeddings de palavras são uma melhoria em relação aos esquemas de codificação de palavras do modelo de saco de palavras mais simples, como contagens de palavras e frequências que resultam em vetores grandes e esparsos (principalmente valores 0) que descrevem documentos, mas não o significado das palavras.

Os embeddings de palavras funcionam usando um algoritmo para treinar um conjunto de vetores de comprimento fixo, denso e de valor contínuo, com base em um grande corpo de texto. Cada palavra é representada por um ponto no espaço de incorporação e esses pontos são aprendidos e movidos com base nas palavras que circundam a palavra-alvo.

É a definição de uma palavra da empresa que ela mantém que permite que a palavra embedding aprenda algo sobre o significado das palavras. A representação das palavras no espaço vetorial fornece uma projeção em que palavras com significados semelhantes estão localmente agrupadas no espaço.

O uso de embeddings de palavras sobre outras representações de texto é um dos métodos principais que levou a um desempenho inovador com redes neurais profundas em problemas como tradução automática.

Neste tutorial, veremos como usar dois métodos diferentes de incorporação de palavras chamados word2vec por pesquisadores do Google e GloVe por pesquisadores de Stanford.

Biblioteca Gensim Python

Gensim é uma biblioteca Python de código aberto para processamento de linguagem natural, com foco na modelagem de tópicos.

É faturado como:

modelagem de tópicos para humanos

O Gensim foi desenvolvido e é mantido pelo pesquisador checo de processamento de linguagem natural Radim Řehůřek e sua empresa RaRe Technologies.

Não é uma biblioteca de pesquisa de PNL que inclui tudo, incluindo a pia da cozinha (como o NLTK); em vez disso, Gensim é um conjunto maduro, focado e eficiente de ferramentas de PNL para modelagem de tópicos. Mais notavelmente para este tutorial, ele suporta uma implementação da incorporação de palavras Word2Vec para aprender novos vetores de palavras a partir do texto.

Ele também fornece ferramentas para carregar embeddings de palavras pré-treinados em alguns formatos e para fazer uso e consultar um embedding carregado.

Usaremos a biblioteca Gensim neste tutorial.

Se você não tiver uma configuração de ambiente Python, poderá usar este tutorial:

O Gensim pode ser instalado facilmente usando pip ou easy_install.

Por exemplo, você pode instalar o Gensim com pip digitando o seguinte em sua linha de comando:

Se precisar de ajuda para instalar o Gensim em seu sistema, você pode ver as Instruções de instalação do Gensim.

Desenvolver incorporação de Word2Vec

Word2vec é um algoritmo para aprender a incorporação de palavras a partir de um corpus de texto.

Existem dois algoritmos de treinamento principais que podem ser usados ​​para aprender a incorporação de texto; eles são um saco contínuo de palavras (CBOW) e pulam gramas.

Não entraremos nos algoritmos a não ser para dizer que eles geralmente olham para uma janela de palavras para cada palavra-alvo para fornecer contexto e, por sua vez, o significado das palavras. A abordagem foi desenvolvida por Tomas Mikolov, anteriormente no Google e atualmente no Facebook.

Os modelos Word2Vec requerem muito texto, por exemplo, todo o corpus da Wikipedia. No entanto, demonstraremos os princípios usando um pequeno exemplo de texto na memória.

Gensim fornece a classe Word2Vec para trabalhar com um modelo Word2Vec.

Aprender a incorporação de uma palavra a partir do texto envolve carregar e organizar o texto em frases e fornecê-las ao construtor de um novo Word2Vec () instância. Por exemplo:

Especificamente, cada frase deve ser tokenizada, ou seja, dividida em palavras e preparada (por exemplo, talvez pré-filtrada e talvez convertida em um caso preferencial).

As frases podem ser um texto carregado na memória ou um iterador que carrega texto progressivamente, necessário para corpora de texto muito grandes.

Existem muitos parâmetros neste construtor; alguns argumentos dignos de nota que você pode desejar configurar são:

  • Tamanho: (padrão 100) O número de dimensões da incorporação, por exemplo, o comprimento do vetor denso para representar cada token (palavra).
  • janela: (padrão 5) A distância máxima entre uma palavra-alvo e palavras ao redor da palavra-alvo.
  • min_count: (padrão 5) A contagem mínima de palavras a considerar ao treinar o modelo; palavras com uma ocorrência menor que essa contagem serão ignoradas.
  • operários: (padrão 3) O número de threads a serem usados ​​durante o treinamento.
  • sg: (padrão 0 ou CBOW) O algoritmo de treinamento, CBOW (0) ou ignorar o grama (1).

Os padrões geralmente são bons o suficiente quando você está apenas começando. Se você tiver muitos núcleos, como a maioria dos computadores modernos, recomendo fortemente que você aumente os trabalhadores para corresponder ao número de núcleos (por exemplo, 8).

Depois que o modelo é treinado, ele é acessível por meio do “wv”Atributo. Este é o modelo de vetor de palavras real no qual as consultas podem ser feitas.

Por exemplo, você pode imprimir o vocabulário aprendido de tokens (palavras) da seguinte maneira:

Você pode revisar o vetor incorporado para um token específico da seguinte maneira:

Finalmente, um modelo treinado pode então ser salvo em arquivo chamando o save_word2vec_format () função no modelo de vetor de palavras.

Por padrão, o modelo é salvo em formato binário para economizar espaço. Por exemplo:

Ao começar, você pode salvar o modelo aprendido no formato ASCII e revisar o conteúdo.

Você pode fazer isso definindo binário = falso ao ligar para o save_word2vec_format () função, por exemplo:

O modelo salvo pode ser carregado novamente chamando o Word2Vec.load () função. Por exemplo:

Podemos amarrar tudo isso com um exemplo trabalhado.

Em vez de carregar um grande documento de texto ou corpus do arquivo, trabalharemos com uma pequena lista na memória de frases pré-tokenizadas. O modelo é treinado e a contagem mínima de palavras é definida como 1 para que nenhuma palavra seja ignorada.

Depois que o modelo é aprendido, resumimos, imprimimos o vocabulário e, em seguida, imprimimos um único vetor para a palavra 'frase'.

Finalmente, o modelo é salvo em um arquivo em formato binário, carregado e então resumido.

Observação: Seus resultados podem variar devido à natureza estocástica do algoritmo ou procedimento de avaliação, ou diferenças na precisão numérica. Considere executar o exemplo algumas vezes e compare o resultado médio.

Executar o exemplo imprime a seguinte saída.

Você também pode estar interessado em