2013-04-25 25 views
18

Voglio misurare la somiglianza semantica tra due frasi/frasi. C'è qualche framework che posso usare direttamente e in modo affidabile?Misurazione della somiglianza semantica tra due frasi

Ho già controllato this question, ma è piuttosto vecchio e non ho potuto trovare una risposta molto utile. C'era one link, ma ho trovato questo inaffidabile.

esempio:
Ho una frase: si sentiva schiacciato
ho diverse scelte: la forza verso l'interno, polverizzato, distrutto emotivamente, rimodellando ecc
Voglio trovare il termine/frase con la massima somiglianza con il primo .
La risposta è: distrutta emotivamente.

L'immagine più grande è: Voglio identificare quale frame di FrameNet corrisponde al verbo dato come per il suo utilizzo in una frase.

Aggiornamento: Ho trovato this library molto utile per misurare la somiglianza tra due parole. Anche il meccanismo di similarità di ConceptNet è molto buono.

e this library per misurare similarità semantica tra frasi

Se qualcuno ha intuizioni si prega di condividere.

+0

Dai un'occhiata alla Libreria di misure semantiche: [http://www.semantic-measures-library.org] (http: //www.semantic-measures-library.org /) – Seb

risposta

8

Questo è un problema molto complicato.

La tecnica principale che posso pensare (prima di passare a processi NLP più complessi) sarebbe applicare la somiglianza del coseno (o di qualsiasi altra metrica) a ciascuna coppia di frasi. Ovviamente questa soluzione sarebbe al momento molto inefficiente a causa del problema di non corrispondenza: le frasi potrebbero riferirsi allo stesso concetto con parole diverse.

Per risolvere questo problema, è necessario trasformare la rappresentazione iniziale di ogni frase con un significato più "concettuale". Un'opzione consisterebbe nell'estendere ogni parola con i suoi sinonimi (ad esempio usando WordNet, un'altra opzione è applicare metriche come la semantica distributiva DS (http://liawww.epfl.ch/Publications/Archive/Besanconetal2001.pdf) che estendono la rappresentazione di ciascun termine con le parole più probabili da apparire con esso.

Esempio: Una rappresentazione di un documento: {"car", "race"} si trasformerebbe in {"car", "automobile", "race"} con sinonimi, mentre con DS sarebbe qualcosa di simile: { "auto", "ruota", "strada", "pilota", ...}

Ovviamente questa trasformazione non sarà binario. Ogni termine avrà alcuni pesi associati.

Spero che questo h PEL.

+0

Grazie per la risposta, ma il mio problema principale qui è che ho bisogno di qualcosa che valuti la somiglianza come termine combinato e non singole parole come ho menzionato nell'esempio. – tejas

+0

Si modifica la rappresentazione di frasi in base alle somiglianze termine-termine. Esempio, date due frasi: S1: {"auto", "gara"} S2: {"moto", "velocità"} Con una somiglianza di coseno standard si ottiene 0,0 somiglianza (poiché non ci sono termini comuni). Ma puoi estendere questa rappresentazione utilizzando i "termini correlati" basati su DS, quindi le frasi diventano: S1: {"auto", "corsa", "veicolo", "automobile", "veloce"} S2: {"moto", "velocità", "bici", "veicolo", "veloce"} Ora avete alcune somiglianze, basate su "veloce" e "veicolo". – miguelmalvarez

0

Forse l'API cortical.io potrebbe aiutare con il tuo problema. L'approccio qui è che ogni parola viene convertita in un'impronta digitale semantica che ne caratterizza il significato con le caratteristiche semantiche 16K. Frasi, frasi o testi più lunghi vengono convertiti in impronte digitali mediante l'unione delle impronte digitali. Dopo questa conversione in una rappresentazione vettoriale (numerica) binaria, la distanza semantica può essere facilmente calcolata usando misure di distanza come la Distanza euclidea o la somiglianza del coseno. Tutte le necessarie funzioni di conversione e confronto sono fornite dall'api.

Problemi correlati