Natural Language Processing, in short NLP, has been a vivid research field in the last 30 years and has recently become an active part of everyday life, since the introduction of vocal assistants in our smartphones. In the first part of this work we focus on a core technique of NLP: word embed- ding, that is the mapping of words into Euclidean vectors, which is the starting point of all NLP algorithms thanks to its ability to encode the similarity between words into the vectors they are represented with. Although the main embedding techniques try to explain the semantic similarity between words, their algorithms are highly influenced by the syntax. We develop a new concept of embedding to represent only the semantic analogy and demonstrate how, in basilar tasks, it captures better the meaning of words. In the second part, we take a closer look at the Euclidean space in which the embedding vectors live and, using suitable dimensionality reduction techniques based on proximity graphs, we exploit the local topology of the space to perform topic modeling, in the form of clustering together semantically similar words, and to discover words semantically related to a new text. Throughout the work, we provide examples of the usefulness of our novel ap- proaches and assess the performance of our models both on benchmark tasks and on real world datasets.

L’Elaborazione del Linguaggio Naturale, in breve NLP, è stato un campo di ricerca molto attivo negli ultimi 30 anni ed è recentemente diventato parte attiva della nostra vita quotidiana a partire dall’introduzione degli assistenti vocali nei cellulari. L’obiettivo di questo lavoro è quello di creare dei modelli capaci di individuare e quantificare la similarità semantica tra coppie di parole. Sebbene si tratti di un problema fondamentale, gli approcci finora sviluppati fanno affidamento quasi interamente su delle risorse compilate manualmente da esperti. La più famosa è sicuramente Wordnet, un database di concetti legati da relazioni semantiche, sviluppato dall’università di Princeton per il vocabolario inglese. Ciò costituisce ovviamente un sostanziale ostacolo per lo sviluppo dei modelli di NLP in lingue che non siano l’inglese. Questo lavoro si concentra perciò sullo sviluppo di una metodologia che possa essere applicata a qualsiasi lingua e che richieda quanta meno possibile conoscenza del dominio, ossia della lingua in analisi, per dare risultati soddisfacenti. Nella prima parte analizzeremo in dettaglio la tecnica del Word Embedding, ossia rappresentare le parole con vettori euclidei, che è alla base di tutti gli algoritmi di NLP grazie alla sua abilità di codificare la similarità tra parole nei vettori che le rappresentano. Le tecniche di embedding più usate tuttavia sono state sviluppate a partire dal famoso paper di Y. Bengio: ”A Neural Probabilistic Language Model”. Un language model è un modello generativo di una lingua, il suo obiettivo è quindi quello di prevedere che parola occorrerà in una frase date le parole che le precedono. La prima definizione di embedding è di fatto un prodotto secondario del language model di Bengio, ed è stata pensata per combattere la cosiddetta curse of dimensionality. Solamente in seconda battuta la comunità scienfitica ha realizzato le potenzialità di questa rappresentazione vettoriale e la possibilità di applicarla a molti problemi oltre al language model. Tuttavia risulta ovvio che tutte le tecniche di embedding sviluppate a partire da questa siano altamente influenzate dal ruolo sintattico delle parole: se il problema da risolvere è quello di predire una parola a partire dal contesto, scegliere un verbo al posto di un nome costituisce un errore. Inoltre risulta più facile andare a differenziare tra ruoli sintattici diversi piuttosto che tra significati semantici diversi. Si pensi infatti alla frase mi piace molto mangiare in cui la parola da predire è l’ultima. Di fatto, dato il contesto, mangiare e giocare sono intercambiabili esclusivamente grazie al fatto che condividono lo stesso ruolo sintattico, mentre due parole molto più semanticamente collegate come mangiare e mangiato no. Questa è la ragione principale per la quale le tecniche di embedding esistenti sono altamente influenzate dalla sintassi. Il primo contributo originale di questo lavoro, e di fatto la colonna portante, è lo sviluppo di un nuovo embedding che chiamiamo Semantic Embedding, il quale produce vettori in grado di rappresentare esclusivamente la similarità semantica tra le parole, senza essere influenzati dalla sintassi. La peculiarità di questo approccio consiste nell’utilizzo di due funzioni: la prima prende in input un documento e restituisce le parole chiave in esso, la seconda prende in input una serie di documenti rappresentati da parole chiave e restituisce le parole chiave dell’agglomerato di documenti tramite un’accumulazione in uno spazio di frequenze virtuali. La nostra definizione di embedding di una certa parola è quindi l’accumulazione di tutti i documenti in cui questa è parola chiave. Questa definizione è di fatto priva dell’influenza sintattica in quanto l’ordine delle parole è irrilevante, l’unica cosa importante è la co-occorrenza in documenti simili. I vettori risultanti da questa accumulazione sono quindi dei vettori sparsi che vivono in uno spazio euclideo di dimensione N , dove N è la dimensione del vocabolario. Questo comporta svariate complicazioni, la più rilevante è che i vettori siano distribuiti localmente in uno spazio euclideo con dimensione molto minore, il che causa la perdita di significato della distanza euclidea dopo una certa soglia. L’ipotesi generalmente accettata è che i vettori siano distribuiti su una varietà Riemanniana immersa nello spazio euclideo originale. Per analiz- zare quindi la distribuzione dei vettori, tutte le tecniche basate sulla distanza euclidea risultano non affidabili. Una delle possibilità è di tentare di ridurre la dimensionalità dello spazio, la prima scelta in questo senso risulta ovviamente la PCA o la sua versione con kernel non lineare. Similmente altre tecniche di riduzione di dimensionalità non lineare come LLE e t-SNE sono prese in consi- derazione. Tuttavia, queste richiedono di sapere a priori il numero di dimensioni della varietà e alcune ipotesi di regolarità. Ci rifacciamo quindi ad un approccio completamente diverso: invece di cercare di mappare la varietà in uno spazio euclideo preservandone, almeno localmente, la topologia, creiamo un grafo di prossimità in cui i nodi, che rappresentano i vettori, vengono collegati solo se la loro distanza è minore di una certa soglia: siamo quindi sicuri, a patto di scegliere la soglia in maniera accurata, di avere un oggetto che rappresenti perfettamente la topologia locale del nostro spazio. Il prezzo da pagare è che tutte le tecniche che prevedono uno spazio euclideo non sono utilizzabili, in compenso possiamo rifarci alla vasta letteratura di analisi dei grafi. Il Grafo Semantico è quindi composto da nodi, che rappresentano le parole, e archi, che rappresentano la similarità semantica tra coppie di parole. La prima analisi che proponiamo di eseguire è il topic modeling: a partire dal grafo, trovare gruppi di parole semanticamente collegate che definiscano gli ar- gomenti. Certamente questo non è un argomento nuovo, tuttavia le tecniche più conosciute, come LDA, presuppongono la conoscenza del numero di topic a priori. Questo comporta la necessità di una notevole conoscenza del dominio, in quanto il numero di argomenti può variare in maniera significativa a seconda del corpus di documenti preso in considerazione. Questo tipo di conoscenza può essere molto difficile da acquisire se, per esempio, i documenti sono in una lingua che non parliamo. Il nostro approccio, d’altro canto, non prevede nulla di ciò ed è stato pensato appositamente per funzionare con pochissima conoscenza sul corpus di documenti. Tramite l’utilizzo di un algoritmo di clustering sviluppato ad-hoc, che tiene conto sia la struttura topologica del grafo sia la sottostante struttura degli embedding, siamo quindi in grado di costruire una gerarchia di argomenti, la quale costituisce una mappa precisa del vocabolario della lingua. La seconda analisi, sempre basata sul Grafo Semantico, è quella dell’aumento del vocabolario di un testo: a partire da un documento, l’obiettivo è di trovare parole non presenti nel testo ma semanticamente collegate ad esso . L’algoritmo proposto sfrutta delle passeggiate aleatorie sul grafo, il quale viene modificato per tenere in conto il contesto del documento in analisi, per restituire una lista di parole ordinate a seconda della similarità semantica che hanno rispetto al testo. Tutti i modelli sviluppati sono stati testati estensivamente: gli embedding se- mantici sono confrontati con quelli di Word2Vec, il più utilizzado modello di embedding, in due diversi problemi. Nel primo confrontiamo la similarità tra i vettori degli embedding con quella data da esperti umani su un dataset di circa 300 coppie di parole. Il risultato è che i nostri embedding catturano meglio di Word2Vec la similarità semantica tra parole. Nel secondo invece utilizziamo due dataset reali: il primo corrisponde a delle recensioni di prodotti venduti su Amazon, scritte da 50 autori diversi; il secondo invece consiste in domande poste sul famoso sito Stack Overflow, classificate in 20 categorie diverse. Considerando una trasformazione che associa al testo il vettore di embedding medio, andiamo a misurare le performance sul problema di classificazione di diversi algoritmi a seconda che si usino i vettori di Word2Vec o degli embedding semantici. In entrambi i casi, risulta chiaro che gli embed- ding semantici siano più adatti a questi problemi di classificazione rispetto agli embedding Word2Vec. L’aumento del vocabolario è anch’esso testato su un problema di classificazione: viene misurata la variazione dell’accuratezza della classificazione se al testo ven- gono aggiunte delle parole semanticamente collegate ad esso. Come dimostriamo con la nostra analisi sul dataset di Stack Overflow, aggiungere un piccolo nu- mero di parole collegate al testo aumenta la performance di tutti gli algoritmi di classificazione presi in considerazione, bisogna tuttavia essere cauti in quanto aggiungere troppe parole può portare all’effetto opposto. Inoltre, la comples- sità computazionale introdotta è notevole e rende di fatto inutilizzabile questo approccio in un setting online. Infine, il topic modeling è stato valutato esclusivamente in maniera qualitativa, attraverso un consulto con due insegnanti di lingua: nessun errore evidente è stato trovato, i cluster restituiti dall’algoritmo sono stati definiti coerenti e non è stato rilevato topic drifting o assegnazione erronea.

Discovering semantic relations between words : an unsupervised approach

BERAHA, MARIO
2016/2017

Abstract

Natural Language Processing, in short NLP, has been a vivid research field in the last 30 years and has recently become an active part of everyday life, since the introduction of vocal assistants in our smartphones. In the first part of this work we focus on a core technique of NLP: word embed- ding, that is the mapping of words into Euclidean vectors, which is the starting point of all NLP algorithms thanks to its ability to encode the similarity between words into the vectors they are represented with. Although the main embedding techniques try to explain the semantic similarity between words, their algorithms are highly influenced by the syntax. We develop a new concept of embedding to represent only the semantic analogy and demonstrate how, in basilar tasks, it captures better the meaning of words. In the second part, we take a closer look at the Euclidean space in which the embedding vectors live and, using suitable dimensionality reduction techniques based on proximity graphs, we exploit the local topology of the space to perform topic modeling, in the form of clustering together semantically similar words, and to discover words semantically related to a new text. Throughout the work, we provide examples of the usefulness of our novel ap- proaches and assess the performance of our models both on benchmark tasks and on real world datasets.
ING - Scuola di Ingegneria Industriale e dell'Informazione
19-apr-2018
2016/2017
L’Elaborazione del Linguaggio Naturale, in breve NLP, è stato un campo di ricerca molto attivo negli ultimi 30 anni ed è recentemente diventato parte attiva della nostra vita quotidiana a partire dall’introduzione degli assistenti vocali nei cellulari. L’obiettivo di questo lavoro è quello di creare dei modelli capaci di individuare e quantificare la similarità semantica tra coppie di parole. Sebbene si tratti di un problema fondamentale, gli approcci finora sviluppati fanno affidamento quasi interamente su delle risorse compilate manualmente da esperti. La più famosa è sicuramente Wordnet, un database di concetti legati da relazioni semantiche, sviluppato dall’università di Princeton per il vocabolario inglese. Ciò costituisce ovviamente un sostanziale ostacolo per lo sviluppo dei modelli di NLP in lingue che non siano l’inglese. Questo lavoro si concentra perciò sullo sviluppo di una metodologia che possa essere applicata a qualsiasi lingua e che richieda quanta meno possibile conoscenza del dominio, ossia della lingua in analisi, per dare risultati soddisfacenti. Nella prima parte analizzeremo in dettaglio la tecnica del Word Embedding, ossia rappresentare le parole con vettori euclidei, che è alla base di tutti gli algoritmi di NLP grazie alla sua abilità di codificare la similarità tra parole nei vettori che le rappresentano. Le tecniche di embedding più usate tuttavia sono state sviluppate a partire dal famoso paper di Y. Bengio: ”A Neural Probabilistic Language Model”. Un language model è un modello generativo di una lingua, il suo obiettivo è quindi quello di prevedere che parola occorrerà in una frase date le parole che le precedono. La prima definizione di embedding è di fatto un prodotto secondario del language model di Bengio, ed è stata pensata per combattere la cosiddetta curse of dimensionality. Solamente in seconda battuta la comunità scienfitica ha realizzato le potenzialità di questa rappresentazione vettoriale e la possibilità di applicarla a molti problemi oltre al language model. Tuttavia risulta ovvio che tutte le tecniche di embedding sviluppate a partire da questa siano altamente influenzate dal ruolo sintattico delle parole: se il problema da risolvere è quello di predire una parola a partire dal contesto, scegliere un verbo al posto di un nome costituisce un errore. Inoltre risulta più facile andare a differenziare tra ruoli sintattici diversi piuttosto che tra significati semantici diversi. Si pensi infatti alla frase mi piace molto mangiare in cui la parola da predire è l’ultima. Di fatto, dato il contesto, mangiare e giocare sono intercambiabili esclusivamente grazie al fatto che condividono lo stesso ruolo sintattico, mentre due parole molto più semanticamente collegate come mangiare e mangiato no. Questa è la ragione principale per la quale le tecniche di embedding esistenti sono altamente influenzate dalla sintassi. Il primo contributo originale di questo lavoro, e di fatto la colonna portante, è lo sviluppo di un nuovo embedding che chiamiamo Semantic Embedding, il quale produce vettori in grado di rappresentare esclusivamente la similarità semantica tra le parole, senza essere influenzati dalla sintassi. La peculiarità di questo approccio consiste nell’utilizzo di due funzioni: la prima prende in input un documento e restituisce le parole chiave in esso, la seconda prende in input una serie di documenti rappresentati da parole chiave e restituisce le parole chiave dell’agglomerato di documenti tramite un’accumulazione in uno spazio di frequenze virtuali. La nostra definizione di embedding di una certa parola è quindi l’accumulazione di tutti i documenti in cui questa è parola chiave. Questa definizione è di fatto priva dell’influenza sintattica in quanto l’ordine delle parole è irrilevante, l’unica cosa importante è la co-occorrenza in documenti simili. I vettori risultanti da questa accumulazione sono quindi dei vettori sparsi che vivono in uno spazio euclideo di dimensione N , dove N è la dimensione del vocabolario. Questo comporta svariate complicazioni, la più rilevante è che i vettori siano distribuiti localmente in uno spazio euclideo con dimensione molto minore, il che causa la perdita di significato della distanza euclidea dopo una certa soglia. L’ipotesi generalmente accettata è che i vettori siano distribuiti su una varietà Riemanniana immersa nello spazio euclideo originale. Per analiz- zare quindi la distribuzione dei vettori, tutte le tecniche basate sulla distanza euclidea risultano non affidabili. Una delle possibilità è di tentare di ridurre la dimensionalità dello spazio, la prima scelta in questo senso risulta ovviamente la PCA o la sua versione con kernel non lineare. Similmente altre tecniche di riduzione di dimensionalità non lineare come LLE e t-SNE sono prese in consi- derazione. Tuttavia, queste richiedono di sapere a priori il numero di dimensioni della varietà e alcune ipotesi di regolarità. Ci rifacciamo quindi ad un approccio completamente diverso: invece di cercare di mappare la varietà in uno spazio euclideo preservandone, almeno localmente, la topologia, creiamo un grafo di prossimità in cui i nodi, che rappresentano i vettori, vengono collegati solo se la loro distanza è minore di una certa soglia: siamo quindi sicuri, a patto di scegliere la soglia in maniera accurata, di avere un oggetto che rappresenti perfettamente la topologia locale del nostro spazio. Il prezzo da pagare è che tutte le tecniche che prevedono uno spazio euclideo non sono utilizzabili, in compenso possiamo rifarci alla vasta letteratura di analisi dei grafi. Il Grafo Semantico è quindi composto da nodi, che rappresentano le parole, e archi, che rappresentano la similarità semantica tra coppie di parole. La prima analisi che proponiamo di eseguire è il topic modeling: a partire dal grafo, trovare gruppi di parole semanticamente collegate che definiscano gli ar- gomenti. Certamente questo non è un argomento nuovo, tuttavia le tecniche più conosciute, come LDA, presuppongono la conoscenza del numero di topic a priori. Questo comporta la necessità di una notevole conoscenza del dominio, in quanto il numero di argomenti può variare in maniera significativa a seconda del corpus di documenti preso in considerazione. Questo tipo di conoscenza può essere molto difficile da acquisire se, per esempio, i documenti sono in una lingua che non parliamo. Il nostro approccio, d’altro canto, non prevede nulla di ciò ed è stato pensato appositamente per funzionare con pochissima conoscenza sul corpus di documenti. Tramite l’utilizzo di un algoritmo di clustering sviluppato ad-hoc, che tiene conto sia la struttura topologica del grafo sia la sottostante struttura degli embedding, siamo quindi in grado di costruire una gerarchia di argomenti, la quale costituisce una mappa precisa del vocabolario della lingua. La seconda analisi, sempre basata sul Grafo Semantico, è quella dell’aumento del vocabolario di un testo: a partire da un documento, l’obiettivo è di trovare parole non presenti nel testo ma semanticamente collegate ad esso . L’algoritmo proposto sfrutta delle passeggiate aleatorie sul grafo, il quale viene modificato per tenere in conto il contesto del documento in analisi, per restituire una lista di parole ordinate a seconda della similarità semantica che hanno rispetto al testo. Tutti i modelli sviluppati sono stati testati estensivamente: gli embedding se- mantici sono confrontati con quelli di Word2Vec, il più utilizzado modello di embedding, in due diversi problemi. Nel primo confrontiamo la similarità tra i vettori degli embedding con quella data da esperti umani su un dataset di circa 300 coppie di parole. Il risultato è che i nostri embedding catturano meglio di Word2Vec la similarità semantica tra parole. Nel secondo invece utilizziamo due dataset reali: il primo corrisponde a delle recensioni di prodotti venduti su Amazon, scritte da 50 autori diversi; il secondo invece consiste in domande poste sul famoso sito Stack Overflow, classificate in 20 categorie diverse. Considerando una trasformazione che associa al testo il vettore di embedding medio, andiamo a misurare le performance sul problema di classificazione di diversi algoritmi a seconda che si usino i vettori di Word2Vec o degli embedding semantici. In entrambi i casi, risulta chiaro che gli embed- ding semantici siano più adatti a questi problemi di classificazione rispetto agli embedding Word2Vec. L’aumento del vocabolario è anch’esso testato su un problema di classificazione: viene misurata la variazione dell’accuratezza della classificazione se al testo ven- gono aggiunte delle parole semanticamente collegate ad esso. Come dimostriamo con la nostra analisi sul dataset di Stack Overflow, aggiungere un piccolo nu- mero di parole collegate al testo aumenta la performance di tutti gli algoritmi di classificazione presi in considerazione, bisogna tuttavia essere cauti in quanto aggiungere troppe parole può portare all’effetto opposto. Inoltre, la comples- sità computazionale introdotta è notevole e rende di fatto inutilizzabile questo approccio in un setting online. Infine, il topic modeling è stato valutato esclusivamente in maniera qualitativa, attraverso un consulto con due insegnanti di lingua: nessun errore evidente è stato trovato, i cluster restituiti dall’algoritmo sono stati definiti coerenti e non è stato rilevato topic drifting o assegnazione erronea.
Tesi di laurea Magistrale
File allegati
File Dimensione Formato  
2018_04_BERAHA.pdf

non accessibile

Descrizione: testo della tesi
Dimensione 4.89 MB
Formato Adobe PDF
4.89 MB Adobe PDF   Visualizza/Apri

I documenti in POLITesi sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.

Utilizza questo identificativo per citare o creare un link a questo documento: https://hdl.handle.net/10589/141138