2012-04-02 18 views
5

Considera una casella di testo arbitraria che registra la risposta alla domanda, che cosa vuoi fare prima di morire?Algoritmo per confrontare la somiglianza delle idee (come stringhe)

Utilizzando una raccolta di stringhe di risposta (lunghezza massima 240), mi piacerebbe in qualche modo ordinarle e raggrupparle e contarle per idea (che potrebbe essere solo la somiglianza delle stringhe come descritto in this question).

  1. C'è un altro o un modo migliore per fare qualcosa del genere?
  2. È diverso lo della somiglianza di stringa?
  3. Questa è la domanda giusta da porre?

L'idea è quella di avere persone scrivono in una casella di testo più e più volte, e mi di fornire un numero che descrive, in generale, che 802 persone ha scritto circa la stessa cosa

+0

802 persone? vuoi un singolo numero? o una partizione? o una partizione che si sovrappone? – ninjagecko

+0

@ninjagecko questa è una bella domanda. Sceglier partizioni su un singolo numero? se sì, perché? – Kristian

+1

bene esso conserva più informazioni, ma dipenderà da ciò che realmente sta cercando di fare. – ninjagecko

risposta

8

E ' è molto più difficile della somiglianza tra stringhe. Questo è ciò che devi fare come minimo:

  • eseguire alcune operazioni di formattazione/pulizia di testo come la rimozione di punteggiatura caratteri e comuni "stop words"
  • Costruire un corpus (raccolta di parole con le loro statistiche di utilizzo) da i termini che si verificano risposte.
  • Calcolare un peso per ogni termine.
  • Costruire un vettore di documento da ogni risposta (ogni termine corrisponde a una dimensione in uno spazio euclideo di altissima dimensione)
  • Eseguire un algoritmo di clustering su vettori di documenti.

Leggere un buon libro elaborazione del linguaggio naturale statistica, o di ricerca di Google per le buone introduzioni/tutorial (termini probabili: NLP statistico, testo categorizzazione, il clustering) Probabilmente si può trovare alcune librerie (weka o nltk viene in mente) a seconda della lingua scelta, ma è comunque necessario comprendere i concetti per utilizzare la libreria.

2

Il Latent Semantic Analysis (LSA) potrebbe interessarti. Ecco a nice introduction.

analisi semantica latente (LSA) è una tecnica di elaborazione del linguaggio naturale, in particolare nella semantica vettoriali, di analizzare le relazioni tra una serie di documenti ed i termini in essi contenuti con la produzione di una serie di concetti relativi ai documenti e termini. [...]

+2

LSA è una tecnica per ridurre le dimensioni unendo termini simili con una seria magia matematica. Penso che abbia una lunga strada da percorrere (prima di costruire correttamente i vettori di documenti e poi il clustering) prima ancora di prendere in considerazione l'applicazione di LSA nel mezzo. –

1

Quello che vuoi è un problema molto aperto in PNL. @ La risposta di Ali descrive l'idea ad alto livello, ma la parte "Costruisci un vettore di documento per ogni risposta" è davvero difficile. Ci sono alcuni modi ovvi per costruire un vettore di documento da un vettore delle parole che contiene. L'aggiunta, la moltiplicazione e la media sono veloci, ma ignorano in modo affettivo la sintassi. Man bites dog e Dog bites man avranno la stessa rappresentazione, ma chiaramente non hanno lo stesso significato.Google compositional distributional semantics - per quanto ne so, ci sono persone nelle università del Texas, Trento, Oxford, Sussex e Google che lavorano nell'area.

Problemi correlati