• Moderatore

    @LowLevel said:

    Se siete interessati a qualche algoritmo di clustering non dipendente dalla lingua usata nei testi delle keyphrase, vi consiglio di dare un'occhiata a tutta la famiglia degli algoritmi k-means.

    Io ho ottenuto discreti risultati ignorando ogni aspetto linguistico ed usando una semplice lista di stop words.

    Ciao,
    ho iniziato a documentermi sull'argomento [url=http://www.cavone.com/keywords_analyzer/analisi-semantica-keyword-clustering.asp]"clustering K-means" e a tal proposito sto scrivendo degli appunti
    Nell'implementazione dell'algoritmo però rimangono aperte alcune questioni: Come scegliere il numero iniziale di cluster? I centroidi iniziali devono essere scelti o calcolati?
    Potrei utilizzare la suddetta procedura per le categorie al fine di considerarle "cluster" per poi applicare le iterazioni K-means?
    :ciauz:


  • Moderatore

    [url=http://www.cavone.com/keywords_analyzer/clusteringkmeans.aspx]Clustering K-Means di MDR-KeyPhrases

    PS: Volevo aggiornare il post precedente ma sembra che non sia possibile (vale solo per i post importati dal vecchio board spero...)

    😉


  • Community Manager

    Si possono modificare solo prima di 30 minuti che hai postato 🙂

    Interessante 😉


  • Moderatore

    Lo studio va avanti!!

    Adesso sto iniziando con il clustering non più di semplici keyphrase inserite nei MDR ma direttamente all'analisi dei testi (documenti testuali, pagine web, ecc...).

    Oltre all'algoritmo di clustering k-means (suggerito da Low) trovo molto utile il seguente principio:

    Il Principio di reciproco rinforzo

    E' possibile definire la "rilevanza" (saliency score) dei termini u(T) e delle frasi v(S) secondo il seguente principio:[INDENT]*"Un termine è tanto più rilevante quanto più è elevato il numero di frasi rilevanti a cui appartiene, allo stesso tempo, una frase è tanto più rilevante quanti più termini rilevanti essa contiene." *

    [/INDENT]I tools per l'analisi di un testo (text clustering, text mining, text summarization):

    Per il funzionamento considerate un qualsiasi articolo dal web (per esempio da wikipedia) in italiano o inglese, copia e incolla nella casella di testo, e selezionate il numero di cluster desiderato (inizialmente consiglio 3)

    I tools consentono di ottenere:

    1. La struttura del cluster ad albero.
    2. L'insieme delle frasi ordinate per "saliency score" (rilevanza semantica)
    3. L'insieme dei termini presenti nell'articolo ordinati per rilevanza semantica decrescente.
    4. Le tabelle sono riordinabili cliccando sulla relativa intestazione.

      I lavori sono in corso...

  • User Newbie

    Ciao a tutti,
    avrei un problema con l'algoritmo k-means. In pratica non riesco a trovare nessuna euristica che mi possa giudare nella scelta del valore di k=numero di cluster, ossia il paramentro che l'algoritmo richiede in input. Sono giorni che ci sbatto la testa ma non riesco a venirne fuori.
    Qualcuno potrebbe darmi una mano?
    Grazie mille!


  • Moderatore

    Ciao AutoInf e benvenuto nel Forum GT!
    Come primo post niente male ... 😉
    Il problema del valore di K è annoso e dipende diciamo così dall'esperienza di chi lancia l'algoritmo che dovrebbe conoscere quanti cluster dovrebbero essere determati (conoscendo a grandi linee il contenuto degli elementi...)

    Se lo vuoi determinare automaticamente io partirei da un valore minimo (es. K-min=10) e poi ripetere l'algoritmo con un valore max (es. K-max=100) dopodichè ti studi la distribuzione statistica del numero di elementi x ogni cluster nei due casi e provi con raffinamenti successivi a ripetere la cosa diminuendo il K-max.

    PS: Cerca altre info sui siti universitari americani e giapponesi.

    Ciao!


  • User Newbie

    grazie per il benvenuto e sopratutto per la dirtta! il problema è che io mi sto laureando in informatica e di statistica ne capisco poco e niente.
    ho fatto una prova con il data set butterfly e l'algoritmo kmean (fissando k=2 e numiterazioni=1000) che lancio mi restituisce un risultato del tipo:

    Cluster count: 2
    Cluster 0
    {{1=4.0, 2=2.0};9}
    {{1=5.0, 2=1.0};10}
    {{1=5.0, 2=2.0};11}
    {{1=5.0, 2=3.0};12}
    {{1=6.0};13}
    {{1=6.0, 2=2.0};14}
    {{1=6.0, 2=4.0};15}
    Cluster 1
    {{2=2.0};2}
    {{2=4.0};3}
    {{1=1.0};4}
    {{1=1.0, 2=1.0};5}
    {{1=1.0, 2=3.0};6}
    {{1=2.0, 2=2.0};7}
    {{1=3.0, 2=2.0};8}

    il numero dopo il ; è il numero del documento, ma tutto il resto cosa significa ??? scusate l'ignoranza, ma la statistica è un campo in cui non so proprio muovermi !


  • Moderatore

    Si tratta delle coordinate cartesiane in uno spazio bidimensionale:
    Prendi matita e un foglio a quadretti traccia gli assi e riporta i punti indicati.
    Otterrai la distribuzione bidimensionale dei due cluster...
    Per ogni punto (x,y)=(1=..., 2=...) riporta l'identificativo del documento.
    Nel caso in cui una delle due coordinate non è segnata vuol dire che è pari a 0.

    Per casi reali però non è così semplice in quanto si tratta di spazi n-dimensionali...

    Ciao


  • User Newbie

    grazie mille!almeno adesso riesco a capire i risultati...è già un punto di partenza!


  • User Newbie

    Purtroppo ho ancora problemi con la clusterizzazione dei documenti!
    Per il mio lavoro di tesi devo clusterizzare 6086 documenti, in media la dimensione è di 5 Kb! ho scaricato il pacchetto javaml, ma su un dataset così grande, tutti gli algoritmi di clustering a disposizione (kmeans, EMClustering, FarthestFirst) riscono a crearmi al più 3 cluster, poi, a partire da k=4 iniziano a ciclare all'infinito. Kmeans, per esempio, fissando k=4 ha girato per tutta la notte e stamattina non era ancora terminato!

    Cercando in rete ho visto che un buon algoritmo di clustering per grandi dataset è "diana", ho provato ad eseguirlo sul software statistico R, ma R accetta in input una Term by Document matrix completa, cioè non sparsa e la mia ha dimensione pari a circa 50Mb, quindi niente da fare neanche cn R. qualcuno saprebbe indicarmi un algoritmo che riesca a clusterizzare un dataset molto molto grande, di cui sia disponibile in rete un'implementazione java??
    Grazie per l'aiuto