Skip to content

luizanisio/word2vec_spacy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 

Repository files navigation

word2vec_spacy

Passo a passo para criar um word2vec no gensim e importar no Spacy

A criação de um word2vec aumenta a acurácia na comparação de documentos e termos.

O Spacy tem um modelo treinado para o português, mas a similaridade pode ser melhorada para domínios específicos com a criação de vetores próprios para esses domínios.

Códigos na pasta codigo_w2v

Passo a passo

Este tutorial foi baseado nos links abaixo e em alguns fóruns pela web.

1. Juntar um volume de textos brutos (txt) do domínio desejado.

Podem ser textos médicos, jurídicos, de psicologia, de uma área técnica qualquer, receitas etc. É difícil de definir o número de documentos necessários para a criação dos vetores, mas alguns milhares parece um bom número para começar. Uma prova de conceito com 10 mil documentos jurídicos mostrou resultados bons para começar.

  • o exemplo aqui foi gerado com uma base de 25 textos jurídicos diversos baixados na interent. Não é um volume representativo, mas já apresenta alguns resultados interessantes.

2. A geração do modelo

Foram realizados testes com o código de Kavita Ganesan que pode ser baixado no Github https://github.com/kavgan/nlp-text-mining-working-examples/blob/master/word2vec/scripts/word2vec.py

  • na versão disponibilizada aqui foram feitos alguns ajustes para facilitar a importação do modelo para o Spacy e ler todos os arquivos que estão na pasta textos
  • para usar o código exemplo, basta criar uma pasta textos e colocar quantos documentos achar necessário, e rodar o código. Ele vai carregar todos os documentos texto da pasta para gerar o modelo.
  • ao final, será criado o arquivo \vectors\vetores.txt que será convertido para o formato do Spacy.

3. Convertendo o modelo para usar no Spacy

A conversão do modelo gerado pelo Gensim para o formato do Spacy é feita pela linha de comando:

python -m spacy init-model pt vectors_spacy --vectors-loc .\vectors\vetores.txt

Será criada a pasta vectors_spacy que poderá ser carregada pelo Spacy, como no exemplo abaixo.

from spacy import util as spc_util
import pt_core_news_sm

nlp = pt_core_news_sm.load()

doc=nlp('justiça tribunal')
tk=[k for k in doc]
print('Semelhança entre justiça e tribunal = ',tk[0].similarity(tk[1]))

pathw2v = './vectors_spacy'
spc_util.load_model(pathw2v, vocab=nlp.vocab)

doc=nlp('justiça tribunal')
tk=[k for k in doc]
print('Semelhança entre justiça e tribunal = ',tk[0].similarity(tk[1]))

Como exemplo, termos a saída das comparações dos termos justiça e tribunal com e sem o modelo gerado pelos 25 documentos:

  • Sem o uso do modelo gerado: Semelhança entre justiça e tribunal = 0.31015217
  • Com o uso do modelo gerado: Semelhança entre justiça e tribunal = 0.8437208

4. Utilizando o tensorboard para visualizar o modelo criado e testar algumas similaridades

O tensorboard é uma ferramenta excelente para visualizar o modelo criado com a rederização de uma nuvem de vetores onde os termos ficam próximos dos seus semelhantes, o exemplo vectors_tensorboard.py foi baseado no código abaixo:

Após gerar os arquivos de visualização na pasta tensorboard_out, é necessário rodar a linha abaixo para abrir o servidor e acessar o browser (dica: use o chrome) no endereço http://localhost:6006

tensorboard --host=0.0.0.0 --logdir=.\tensorboard_out

Releases

No releases published

Packages

No packages published

Languages