2013-04-21 21 views
18

Voglio calcolare quanto simili due frasi arbitrarie sono gli uni agli altri. Per esempio:Come rilevare che due frasi sono simili?

  1. Un matematico trovato una soluzione al problema.
  2. Il problema è stato risolto da un giovane matematico.

posso utilizzare un tagger, uno Stemmer, e un parser, ma io non so come rilevano che queste frasi sono simili.

+0

Hai mai pensato di chiedere questo genere di cose a Linguistics.SE? Trovo che le domande sulla PNL tendano a ottenere un trattamento migliore lì. – tchrist

+0

@tchrist ma è una domanda basata su programmazione/algoritmo! –

risposta

23

Queste due frasi non sono solo simili, sono quasi paraphrases, vale a dire, due modi alternativi di esprimere lo stesso significato. E 'anche un semplice caso di parafrasi, in cui entrambe le espressioni usano le stesse parole con l'unica eccezione di un essere in forma attiva mentre l'altro è passivo. (Le due frasi sono non esattamente parafrasa perché nella seconda frase del matematico è "giovane". Queste informazioni aggiuntive rende la relazione semantica tra la simmetrica due frasi non. In questi casi, si potrebbe dire che la seconda espressione "entails" il primo, o in altre parole che il primo può essere dedotto dal secondo).

Dall'esempio non è possibile capire se si è realmente interessati al rilevamento di parafrasi, all'inquadramento testuale o alla somiglianza di frasi in generale, che è un problema ancora più ampio e confuso. Ad esempio, "le persone mangiano cibo" sono più simili a "le persone mangiano il pane" o "agli uomini mangiano il cibo"?

Sia la rilevazione della parafrasi sia la somiglianza testuale sono problemi di ricerca aperti e complessi nell'elaborazione del linguaggio naturale, con una vasta e attiva comunità di ricercatori che lavorano su di essi. Non è chiaro quale sia l'estensione del tuo interesse per questo argomento, ma considera che anche se molti brillanti ricercatori hanno speso e speso tutta la loro carriera nel tentativo di crearlo, siamo ancora molto lontani dal trovare soluzioni valide che funzionano solo in generale.

A meno che non siate interessati a una soluzione molto superficiale che funzionerebbe solo in casi specifici e che non catturerebbe l'alternanza sintattica (come in questo caso), suggerirei di esaminare il problema della similarità del testo in modo più approfondito. Un buon punto di partenza sarebbe il libro "Foundations of Statistical Natural Language Processing", che fornisce una presentazione molto ben organizzata della maggior parte degli argomenti statistici di elaborazione della lingua naturale. Una volta chiarito i requisiti (ad es. In quali condizioni si suppone che il tuo metodo funzioni?) Quali sono i livelli di precisione/richiamo che stai cercando, quali tipi di fenomeni puoi ignorare tranquillamente e quali sono quelli che devi rendere conto?) Puoi iniziare a esaminare approcci specifici immergendosi nei recenti lavori di ricerca. Qui, un buon punto di partenza sarebbe la online archives of the Association for Computational Linguistics (ACL), che è l'editore della maggior parte dei risultati della ricerca nel campo.

Solo per darti qualcosa di pratico su cui lavorare, una linea di base molto approssimativa per la somiglianza delle frasi sarebbe il cosine similarity tra due vettori binari che rappresentano le frasi come sacchetti di parole. Un sacco di parole è una rappresentazione molto semplificata del testo, comunemente usata per il recupero delle informazioni, in cui si ignora completamente la sintassi e si rappresenta solo una frase come un vettore le cui dimensioni sono le dimensioni del vocabolario (cioè il numero di parole nella lingua) e il cui componente "i" è valutato "1" se la parola nella posizione "i" nel vocabolario appare nella frase e "0" in caso contrario.

+0

Grazie amico mio. – SahelSoft

+1

ma la similarità del coseno mostrerà la stessa frase "Bevo latte ma non bevo bevande alcoliche" e "Non bevo latte ma bevo bevande alcoliche!" –

+1

@RavinderPayal, questo è ciò che deve essere risolto con la comprensione del linguaggio naturale. –

1

Non sono del tutto sicuro se è di questo che si tratta, ma è possibile calcolare la somiglianza tra la sequenza di simboli (in questo caso le parole) utilizzando l'algoritmo Levenshtein Edit Distance.

+1

La distanza di Levenshtein ha un significato minore in questo contesto. –

1

In alcuni casi, è possibile trasformare automaticamente le frasi in discourse representation structures che rappresentano il loro significato. Se due frasi producono la stessa struttura di rappresentazione del discorso, allora è probabile che abbiano significati simili.