2011-09-13 8 views
5

quale funzione di similarità in nltk.corpus.wordnet è appropriata per trovare la somiglianza di due parole?quale funzione di similarità di nltk.corpus.wordnet è Appropriata per trovare la somiglianza di due parole?

path_similarity()? 
    lch_similarity()? 
    wup_similarity()? 
    res_similarity()? 
    jcn_similarity()? 
    lin_similarity()? 

voglio utilizzare una funzione per word clustering e yarowsky algorightm per trovare simili collocation in un testo di grandi dimensioni.

risposta

7

Queste misure sono in realtà per i sensi di parole (o concetti) non parole. Questa distinzione potrebbe importare. In altre parole, la parola "treno" può significare "locomotiva" o "insegnato a fare qualcosa". Per usare queste misure avresti bisogno di sapere quale senso era inteso.

Se si vuole fare parola di clustering, queste misure potrebbero non essere esattamente ciò che si desidera ...

3

Ho giocato con NLTK/WordNet me stesso per le finalità di cercare di abbinare alcuni testi in qualche modo automatico. Come nota la risposta di Ted Pedersen, è abbastanza chiaro che le funzioni di similarità in nltk.corpus.wordnet producono solo somiglianze diverse da zero per termini strettamente correlati con un solido pedigree IS-A.

Quello che ho finito per fare è stato prendere il vocabolario nei miei testi, e quindi utilizzando lemma-> synset-> lemmi e lemma-> similar_tos a crescere il mio grafico parola linkage (graph_tool fantastico per questo) e poi contare il minimum number of hops era necessario collegare 2 parole per ottenere una sorta di (dis-) misura di somiglianza tra loro (abbastanza divertente da stampare, come guardare un gioco di associazione di parole molto bizzarro). Questo ha funzionato abbastanza bene per i miei scopi anche senza alcun tentativo di prendere in considerazione POS/sense.

Problemi correlati