Come addestrare il modello word2vec usando la libreria gensim
Che cos’è il word embedding?
Word embedding è un processo di comprensione del testo tramite algoritmi di apprendimento automatico, inoltre diciamo che word embedding è una rappresentazione appresa per il testo dove cattura il contesto della parola in un documento, la similarità semantica e sintattica e la relazione tra altre parole nel corpus.
Questo approccio detiene la chiave per risolvere i problemi di elaborazione del linguaggio naturale utilizzando l’apprendimento automatico e l’algoritmo di apprendimento profondo. Fondamentalmente, il word embedding è una rappresentazione vettoriale delle parole. Calcolando la distanza o la posizione delle parole, rappresenta parole, frasi, paragrafi o documenti di significato.
Ci sono diverse tecniche di word embedding che sono state introdotte fino ad ora. In generale, diciamo che ci sono due tipi di incorporamento di parole –
Static Word Embedding
Contextual Word Embedding
1. Incorporazione statica di parole: I metodi tradizionali come Skip-Gram e Continuous Bag-of-Words imparano l’incorporazione statica addestrando tabelle di ricerca che traducono le parole in un vettore denso. Le incorporazioni statiche sono direttamente utili per risolvere i compiti di semantica lessicale.
Problema: Non può risolvere le ambiguità per le parole polisemiche. Come quando una parola rappresenta più significati in due frasi diverse, allora i metodi Skip-Gram o BOW falliscono.
2. Contextual Word Embedding: L’incorporazione contestuale delle parole mira a catturare la semantica delle parole in diversi contesti per affrontare il problema della polisemia e la natura dipendente dal contesto delle parole. Il modello LSTM, LSTM bidirezionale ecc. aiuta a ottenere la forma vettoriale delle parole.
Modello Word2Vec: Word2Vec è un metodo per costruire una tale incorporazione statica di parole. Questo è stato ottenuto usando due metodi Skip Gram e Common Bag of Words (CBOW) con l’aiuto di reti neurali. È stato sviluppato da Tomas Mikolov nel 2013 a Google.
Perché ne abbiamo bisogno?
Diciamo che abbiamo le seguenti frasi.
“Amo codificare in Jupyter.” e “Mi piace codificare in Pycharm”.
Entrambe le frasi sono molto vicine tra loro. Se costruiamo un vocabolario esaustivo (chiamiamolo V), avrà V = {I, love, enjoy, coding, in, Jupyter, Pycharm}. Se andiamo con una sola codifica calda. Non saremo in grado di ottenere il significato esatto come amore, godere, codifica ogni parola sono trattati come lo stesso, mentre amore e godere e molto vicino a vicenda.
Il nostro motivo è quello di avere parole con contesto simile sarà molto vicino posizione spaziale. Matematicamente, la distanza coseno identificherà quanto sono vicine due parole. La distanza coseno della parola più vicina o il coseno dell’angelo sarà vicino a 0 e per la più lontana sarà vicino a 1.
Come funziona Word2Vec?
Il modello Word2Vec può funzionare con due algoritmi –
Skip-gram
CBOW (Continuous Bag of Words)
ModelloCBOW: Questo metodo prende il contesto di ogni parola come input e cerca di predire la parola corrispondente al contesto. Nel processo di predizione della parola target, impariamo la rappresentazione vettoriale della parola target. Come input ci sarà una parola multipla secondo la dimensione della finestra (5 parole) ma restituirà una parola come output.
Guardiamo l’architettura più profonda:
Modello Skip-Gram: Questo è un altro algoritmo per Word2Vec. È l’opposto del modello CBOW. Il modello prenderà una parola come input, ma restituirà più parole secondo la dimensione della finestra.
Implementazione di word Embedding con Gensim Word2Vec Model:
Qui, spiegherò passo dopo passo come allenare il modello word2vec usando Gensim. Dataset, ho raccolto dalla piattaforma Kaggle. Questo dataset proviene dai dati pubblici del Myers-Briggs Type Indicator. Contiene due colonne type e post. “type” definisce 16 tipi di personalità e “post” definisce il commento da quei 16 tipi di individuo personalizzato.
1. Caricamento e descrizione dei dati
# Caricamento del dataset data_df = pd.read_csv(“data/mbti_1.csv”) data_df.head()
Leave a Reply