Como treinar o modelo word2vec usando a biblioteca gensim
O que é incorporação de palavras ?
A incorporação de palavras é um processo de compreensão do texto por algoritmos de aprendizagem de máquina, também dizemos que a incorporação de palavras é uma representação aprendida para o texto onde captura o contexto da palavra num documento, a semelhança semântica e sintáctica, bem como a relação entre outras palavras em corpus.
Esta abordagem contém a chave para resolver os problemas naturais de processamento de linguagem usando a aprendizagem de máquina e algoritmo de aprendizagem profunda. Basicamente, a incorporação de palavras é uma representação vetorial de palavras. Ao calcular a distância ou posição das palavras, ele representa palavras, frases, parágrafos ou documentos.
Até agora foram introduzidas várias técnicas de incorporação de palavras. Geralmente, dizemos que existem dois tipos de incorporação de palavras –
Integração Estática de Palavras
Integração Contextual de Palavras
1. Incorporação de palavras estáticas: Métodos tradicionais como Skip-Gram e Continuous Bag-of-Words aprendem a incorporação estática através do treino de tabelas de pesquisa que traduzem palavras em densos vetores. A incorporação estática é directamente útil para resolver tarefas semânticas léxicas.
Problema: Não consegue resolver ambiguidades para palavras polissemáticas. Como quando uma palavra representa múltiplos significados em duas frases diferentes, os métodos Skip-Gram ou BOW falham.
2. Embutir palavras contextuais: A incorporação de palavras contextualizadas visa capturar a semântica de palavras em diferentes contextos para abordar a questão do polissemo e a natureza dependente do contexto das palavras. LSTM, modelo LSTM bidirecional etc. ajuda a obter a forma vetorial das palavras.
Modelo Word2Vec: Word2Vec é um método para construir tal incorporação estática de palavras. Isto foi conseguido usando dois métodos Skip Gram e Common Bag of Words (CBOW) com a ajuda de redes neurais. Ele foi desenvolvido por Tomas Mikolov em 2013 no Google.
Por que precisamos deles?
Vamos dizer que temos frases abaixo.
“Eu adoro codificar em Jupyter” e “Eu gosto de codificar em Pycharm”.
Tuas frases são muito próximas uma da outra. Se construirmos um vocabulário exaustivo (vamos chamar-lhe V), terá V = {I, love, enjoy, coding, in, Jupyter, Pycharm}. Se formos com uma codificação quente. Não conseguiremos obter o significado exato como amor, desfrute, codificando cada palavra estão sendo tratadas como iguais, enquanto amor e desfrute e muito próximos um do outro.
Nosso motivo é ter palavras com contexto semelhante será a posição espacial muito próxima. Matematicamente, a distância co-seno identificará o quão próximas estão duas palavras. A distância cosseno da palavra mais próxima ou cosseno do anjo estará próxima de 0 e para o mais distante estará próxima de 1.
Como funciona o Word2Vec?
O modelo Word2Vec pode rodar em dois algoritmos –
Skip-grama-5162>
CBOW (Continuous Bag of Words)
CBOW Model: Este método toma o contexto de cada palavra como a entrada e tenta prever a palavra correspondente ao contexto. No processo de prever a palavra alvo, aprendemos a representação vectorial da palavra alvo. Como input várias palavras estarão lá como por tamanho de janela(5 palavras) mas retornará uma palavra como saída.
Vejamos a arquitetura mais profunda:
Modelo de Skip-Gram: Este é outro algoritmo para Word2Vec. É exatamente o oposto do modelo CBOW. O modelo tomará uma palavra como entrada, mas retornará múltiplas palavras como por tamanho de janela.
Implementação da palavra Embedding with Gensim Word2Vec Model:
Aqui, explicarei passo a passo como o modelo do Word2vec utiliza o Gensim. Dataset, eu coletei da plataforma Kaggle. Este conjunto de dados foi recolhido de dados públicos do Myers-Briggs Type Indicator. Ele contém duas colunas tipo e post. “type” define 16 tipos de personalidade e “post” define comentários desses 16 tipos de indivíduo personalizado.
1. Carregamento e Descrição dos Dados
# Carregamento do conjunto de dados data_df = pd.read_csv(“data/mbti_1.csv”) data_df.head()
2. Limpeza e Pré-processamento de Dados
Após carregar os dados, é necessário encontrar se os dados contêm valor de NA, se o valor de NA dentro do conjunto de dados, vamos largá-lo.
# Removendo valores de NA do quadro de dados def data_na_value_cleaning(data): print(“\nBefore cleaning, Data Shape : “, data.shape) print(“\nAntes de remover valores Nulos: – – – – – – – -“) print(data.isna().sum()) data.dropna(inplace=True) data.reset_index(inplace=True,drop=True) print(“Depois de remover valores Nulos: – – – – – – – – – -“) print(data.isna().sum()) print(“\nApós limpeza, Data Shape : “, data.shape) return data
Leave a Reply