2013-08-26 17 views
8

Attualmente sto sviluppando un programma con la capacità di confrontare un testo piccolo (ad esempio 250 caratteri) con una raccolta di testi simili (circa 1000-2000 testi).Confronto di testo NLP/Machine Learning

Lo scopo è valutare se il testo A è simile a uno o più testi nella raccolta e, in tal caso, il testo nella raccolta deve essere recuperabile per ID. Ogni testo avrà un ID univoco.

C'è che mi piacerebbe l'uscita di essere due modi:

Opzione 1: Testo A abbinato Testo B con il 90% di somiglianza, di testo C con il 70% di somiglianza, e così via.

Opzione 2: Testo Un testo corrispondente D con la massima somiglianza

Ho letto alcune machine learning a scuola, ma non sono sicuro che l'algoritmo adatta questo problema il migliore o se devo considerare l'utilizzo di PNL (non ha familiarità con l'argomento).

Qualcuno ha un suggerimento su quale algoritmo utilizzare o dove posso trovare la letteratura del nessecary per risolvere il mio problema?

Grazie per qualsiasi contributo!

risposta

4

Ho trovato un ottimo articolo per la misurazione della similarità semantica che è perfetto per il mio problema.

WordNet based semantic similarity measurement

Grazie per tutti gli input!

+0

Sono abbastanza nuovo in ML e speravo di utilizzare i servizi cloud ML Google, Azire, Watson. Devo risolvere anche il confronto testuale, cosa hai implementato? – jasan

19

Non sembra essere un problema di apprendimento automatico, si sta semplicemente cercando qualche misura di somiglianza testo . Una volta selezionato, basta ordinare i dati in base ai "punteggi" ottenuti.

A seconda delle vostre testi, è possibile utilizzare uno dei seguenti metriche (list from the wiki) oppure definire il proprio:

  • distanza di Hamming
  • Levenshtein distanza e Damerau-Levenshtein distanza
  • Needleman-Wunsch distanza o Algoritmo dei venditori
  • distanza Smith-Waterman
  • distanza Gotoh o distanza Smith-Waterman-Gotoh
  • Monge Elkan distanza
  • distanza Blocco o L1 distanza o blocco di Città distanza
  • Jaro-Winkler distanza
  • distanza Soundex metrica
  • semplice coefficiente corrispondente (SMC) coefficiente
  • di Dadi
  • Jaccard somiglianza o Coefficiente di Jaccard o coefficiente Tanimoto
  • indice Tversky
  • Coefficiente di sovrapposizione
  • distanza euclidea o L2 distanza
  • coseno di similitudine
  • Variazionali distanza
  • Hellinger distanza o Bhattacharyya distanza
  • raggio informazione (Jensen-Shannon divergenza)
  • skew divergenza
  • confusione probabilità
  • Tau metrica, un'approssimazione della divergenza Kullback-Leibler
  • Fellegi e Sunters metrica (SFS)
  • Maximal partite
  • Lee distanza

Alcuni di quanto sopra (come ad esempio. somiglianza del coseno) richiedono la trasformazione dei dati in formato vettoriale. Questo processo può anche essere raggiunto in molti modi, con il più semplice bagaglio di parole/tecniche tfidf.

L'elenco è lontano dall'essere completo, è solo una bozza di tali metodi. In particolare, ci sono molti kernel di stringhe, che sono anche adatti per misurare la similarità del testo. In particolare, Wordnet Kernel è in grado di misurare la somiglianza semantica basata su uno dei databse semantici più completi della lingua inglese.

+0

Puoi darmi il link a wiki? Grazie per l'input – RobertH

+0

aggiunto il link al testo – lejlot

+0

mi piacerebbe scoprire il motivo del downvote, posso per favore un commento? – lejlot