Word2Vec e distanza semantica con Python

di il
10 risposte

Word2Vec e distanza semantica con Python

Salve a tutti,
premessa: sono una dilettante della programmazione e vorrei qualche aiuto da questo splendido mondo di programmatori
Sto cercando di stabilire quale sia la distanza semantica tra i token che compongono in synset di WordNet (https://wordnet.princeton.edu).
Word2vec (https://radimrehurek.com/gensim/models/word2vec.htm) traduce ogni entrata lessicale in un vettore. Applicando la distanza coseno (almeno così mi è stati detto) il programma calcola la distanza semantica.
Gensim e NLTK sono la libreria e il toolkit che permettono a Python di fare queste magie.

Ora, io ho installato python 2.7 e 3.7 per Windows. Non so bene per quale diavoleria non riesco a scaricare NLTK sul mio computer.
Chiedo scusa preventivamente se ho detto delle sciocchezze. Questo è un mondo tutto nuovo per me.

Questo (https://mccormickml.com/2016/04/12/googles-pretrained-word2vec-model-in-python/) è uno dei link di riferimento che mi è stato dato per fare tutto ciò.

Vi chiedo:
avete link da suggerirmi in merito a questo argomento?
qualcuno ha dimestichezza con NLP ed è in grado di aiutarmi?

Grazie per l'attenzione

10 Risposte

  • Re: Word2Vec e distanza semantica con Python

    Di sicuro stai facendo un pasticcio.
    Avere 2 versioni di python e' un disastro.

    Il machine learning applicato al linguaggio naturale non e' esattamente un argomento da studiare a suon di link su Internet. Ci sono testi abbastanza 'tosti' su cui basarsi.
    Oltre al fatto che uno dovrebbe masticare anche statistica e algebra lineare.

    Per fare qualcosa, comunque, devi creare un ambiente di sviluppo senza pasticci.

    Disinstalla TUTTO, fai pulizia METICOLOSA. Se non lo sai fare, fatti aiutare.
    Installa Anaconda Python 3 (a 64 bit!) e Pycharm comunity edition, e poi cerca, sempre sul sito di Anaconda, come installare le rimanenti librerie. Fatti aiutare!

    Devi avere hardware adeguato! Non il pc della nonna. Non sto parlando di data di acquisto, ma di 'potenza computazionale' (cpu 2ghz, i5 o i7 o equivalenti AMD) , memoria (16gb), e capacita' di archiviazione (disco capiente). E sistema operativo a 64 bit (Windows 7.. 10 o una buona distribuzione Linux). Ovviamente, 'di piu' E' MEGLIO.

    Per il resto, concettualmente, word2vec e' semplice da capire (sempre se uno ha chiaro un bel po' di concetti base) : e' un metodo di 'dimention reduction' (uno dei tanti metodi di 'word embedding') che mappa lo spazio a n-mila dimensioni delle parole in uno spazio mooolto piu' piccolo (qualche centinaio di dimensioni).

    A questo punto, poiche ogni parola diventa un vettore, la distanza tra 2 parole e' calcolata come la distanza tra 2 vettori.

    Una possibile distanza e' il prodotto scalare, il quale puo' essere scritto come: 'mod(v1) *mod(v2) *cos(alpha)' dove alpha e' appunto, l'angolo. Se 'mod(v) =1', ecco che il prodotto scalare non e' altro che 'cos(alpha)'.

    Se 'cos(alpha)' e' circa 1, le due parole sono molto simili (bella, carina) , se circa 0, non hanno relazione (ragazza, sfera), se circa -1 sono antitetiche (simpatica, antipatica).

    Ricorda: NIENTE' e' 'magico'. Se sembra troppo bello per essere vero, NON E' VERO!
    Di rogne ne troverai tante (parole che 'dovrebbero' essere simili ma che non lo sono, ...). La conoscenza della materia ti permeterebbe di ovviare in modo intelligente a tali problemi. Ma tocca STUDIARE .

    Per i LIBRI e' facile: cerchi 'nlp python' (e termini simili: 'nltk', 'natural language processing', ecc) su Amazon e ne trovi un bel po'. Quelli della o'reilly sono ottimi (o, in generale, molto buoni). Quelli della packt non mi piacciono, sono qualitativamente inferiori, ma se non c'e' altro ...

    Poi ti serve un buon libro su python e conoscere i concetti di programmazione. Amazon, Oreilly!

    NO italiano
    NO link su internet
    LIBRI!!!!
  • Re: Word2Vec e distanza semantica con Python

    Caspita, grazie davvero!
    So che il lavoro è tanto e che c'è da faticare. Ho definito questo mondo magico non perché mi aspettavo mi cascasse una risposta dal cielo ma perché fatico a capire queste cose e, come ogni dilettante in un nuovo campo di studi, vedo i più esperti come dei mostri!

    Grazie ancora per i preziosi consigli mi metto al lavoro e se dovessi avere ulteriori problemi (sicuramente), tornerò a disturbarvi.
  • Re: Word2Vec e distanza semantica con Python

    Lo fai in modo 'amatoriale' o per un corso all'universita'? O per lavoro?

    Se universita', dove, facolta', quale corso e a che anno?

    Se vuoi rispondere, ovviamente
  • Re: Word2Vec e distanza semantica con Python

    Il realtà è la mia tesi di laurea magistrale -.- mi proprio voluta complicare la vita!
    È così difficile per me perché io vengo la scienze linguistiche. Ho seguito corsi di linguistica applicata, computazionale e linguistica dei corpora. Sono argomenti che trovo molto affascinanti e che danno nuovo respiro alla linguistica. Ho un professore, nonché relatore di tesi, molto capace e appassionato di questa materia (ma lui ha un background da informatico, quindi tutti ciò per lui è acqua fresca!)
    Ad ogni modo, Università di Bologna
  • Re: Word2Vec e distanza semantica con Python

    Bologna, perdindirindina! Troppo lontano
    Se vuoi rimanere in questo ambito, la magistrale non ti basta.
    In Italia, non c'e' nessuno che si occupa di questi argomenti. Bisogna guardare all'estero.
    E se lo fanno (in Italia), lo fanno ad un livello tale che Topolino ne sa di piu' .
    Ti serve il dottorato!
  • Re: Word2Vec e distanza semantica con Python

    Eehh lo so. Il pensiero per il dottorato c'è già e so bene anche che all'estero si sono un'infinità di possibilità in più per questo campo!
    Grazie mille ancora per aver risposto e per i consigli. Tornerò sicuramente a disturbare!
  • Re: Word2Vec e distanza semantica con Python

    Ho bisogno di fare una domanda estremamente stupida, nella speranza che Migliorabile o qualcun'altro risponda.
    Ho fatto quello che mi è stato suggerito: installato Anaconda con le dovute espansioni (Gensim e NLTK). Qualcosa funziona
    Ma la domanda estremamente stupida è questa: come diavolo faccio ad accedere alle librerie? Il comando è 'sort', no? Evidentemente sbaglio il quello che comando al programma di aprire.
  • Re: Word2Vec e distanza semantica con Python

    Devi importare i moduli in uno script python. Vedi esempio sulla homepage di gensim .


    P.S.: credo di essermi imbattuto nel tuo relatore. E' un tale F.T.?
  • Re: Word2Vec e distanza semantica con Python

    Sì ok, sono un filo in soggezione perché non so se lei/tu è/sei un docente o studente o amico del mio relatore.

    Ad ogni modo, grazie per la dritta.
  • Re: Word2Vec e distanza semantica con Python

    Gli avevo chiesto se poteva darmi accesso ad un corpus che mi serviva per la tesi. Senza successo.
Devi accedere o registrarti per scrivere nel forum
10 risposte