il mio argomento è la similarità e il clustering di (un gruppo di) testo/i. In breve: voglio raggruppare i testi raccolti insieme e dovrebbero apparire in gruppi significativi alla fine. Per fare questo, il mio approccio fino ad ora è il seguente, il mio problema è nel clustering. Il software attuale è scritto in PHP.Clustering efficace di una matrice di similarità
1) Somiglianza: Tratto ogni documento come "sacchetto di parole" e converto parole in vettori. Uso
- filtraggio (soltanto in termini "reali")
- tokenization (frasi diviso in parole)
- derivanti (ridurre parole alla loro forma di base; Stemmer Porter)
- potatura (taglio di parole con troppo alta & bassa frequenza)
come metodi per la riduzione della dimensionalità. . Dopo di che, sto usando coseno di similitudine (come suggerito/descritto a vari siti sul web and here
Il risultato è quindi una matrice di similarità come questo:
A B C D E
A 0 30 51 75 80
B X 0 21 55 70
C X X 0 25 10
D X X X 0 15
E X X X X 0
A ... E sono i miei testi e il numero è la somiglianza in percentuale, più alto è il più simile sono i testi, poiché sim (A, B) == sim (B, A) è riempito solo a metà della matrice. Quindi la somiglianza del testo A al testo D è 71%
Voglio generare un numero sconosciuto di cluster (priori) fuori da questa matrice ora. I cluster dovrebbero rappresentare gli elementi simili (fino ad una certa fermata criterio p) insieme.
Ho provato un implementazione di base io stesso, che era fondamentalmente come questo (il 60% come soglia di somiglianza fissa)
foreach article
get similar entries where sim > 60
foreach similar entry
check if one of the entries already has a cluster number
if no: assign new cluster number to all similar entries
if yes: use that number
ha funzionato (in qualche modo), ma non era affatto buono ei risultati sono stati spesso mostro-cluster. Quindi, voglio ripetere questo e ho già dato un'occhiata a tutti i tipi di algoritmi di clustering, ma non sono ancora sicuro di quale funzionerà meglio. Penso che dovrebbe essere un algoritmo agglomerato, perché ogni coppia di testi può essere vista come un cluster all'inizio. Ma ancora le domande sono quali sono i criteri di arresto e se l'algoritmo dovrebbe dividere e/o unire insieme i cluster esistenti.
Scusate se alcune delle cose sembrano fondamentali, ma sono relativamente nuovo in questo campo. Grazie per l'aiuto.
Hai ricevuto qualche buona risposta? Non mi è nemmeno chiaro quante dimensioni il clustering dovrebbe funzionare in ... – Jim