• User Attivo

    E' esattamente come dite.

    Il primo passo e' di raggruppare in sottocategorie un insieme ben determinanto.

    Il secondo sarebbe quello di raggruppare in sottocategorie insieni generici, ed in questo caso entrano in gioco sinonimi, contrari, semantica e via dicendo.

    Diciamo che siamo nella prima fase, che di suo e' gia' abbastanza complicata, appena superato questo primo difficile lavoro dovremo affrontare il secondo aspetto, che si preannuncia ben peggiore!


  • User Attivo

    ci sarebbe anche una cosa che non va trascurata troppo... e cioe' il db, perche', per esperienza, ti ritrovi a manipolare in un attimo centinaia di migliaia di record... e questo nn è bello per le prestazioni...
    Uno sbaglio che feci all'inizio fu di sottovalutare questo aspetto e cambiare poi in corsa la struttura è stato un bel casino :S


  • Moderatore

    @CZero said:

    ci sarebbe anche una cosa che non va trascurata troppo... e cioe' il db, perche', per esperienza, ti ritrovi a manipolare in un attimo centinaia di migliaia di record... e questo nn è bello per le prestazioni...
    Uno sbaglio che feci all'inizio fu di sottovalutare questo aspetto e cambiare poi in corsa la struttura è stato un bel casino :S

    Infatti...è fondamentale una progettazione ad hoc del modello relazionale che sta alla base del DB. Per far ciò è però necessario aver fatto prima per bene l'analisi funzionale (la sequenza delle "operazioni") del problema...spesso facciamo il contrario .. 😄


  • Moderatore

    @agoago said:

    ...
    Il secondo sarebbe quello di raggruppare in sottocategorie insiemi generici, ed in questo caso entrano in gioco sinonimi, contrari, semantica e via dicendo...

    Prima di passare ad insiemi generici ricordo che:
    come ho detto nel primo post del 3D lo scopo di questa analisi era raggruppare le visite provenienti da ricerche sui MDR in categorie "auto-detected" di keywords in modo da avere un report sintetico su quali siano le sezioni di un sito web che "tirano" di più.
    Completata questa fase con buoni risultati mi propongo ora il seguente nuovo obiettivo:

    1. Dato che un keyphrase può comparire in diffenti categorie è possibile determinare un categoria "principale" per una data KeyP? Se si come?
      Un idea potrebbe essere quella di tener conto di:
      1.a) La posizione della parola che identifica la categoria all'interno della keyphrase.
      1.b) La "forza" della categoria, cioè il numero di keyphrases che costituiscono la corrispondente BagOfWords.

    Infatti se da un lato il contenuto informativo (entropia?) di una Keyphrase
    utilizzata nei motori di ricerca è molto spesso confinato nelle primissime posizioni all'interno della frase, dall'altro non si dovrebbe trascurare l'effetto di "specializzazione" introdotto da categorie "deboli"...


  • User Attivo

    Come Paocavo ben sa, mi sto dedicando a questo bellissimo studio su come creare delle categorie in base ad un elenco di key, tematiche e no.

    Devo dire che pensavo fosse piu' semplice.

    Innanzitutto mi sono scontrato con i limiti hardware e di programmazione, uso un pc solo per questa analisi e mi si inchioda regolarmente.

    Poi ho problemi di ordine matematico, ho notato che non riesco a trovare un algoritmo che vada bene sempre, ho come l'impressione che in una prima fase dovro' analizzare il tipo di key (lunghezza, numero, ecc ecc) e poi decidere quale algoritmo usare a seconda della lista di key.

    Inoltre vado ciucco con le lingue, uso sempre key inglesi e cosa sembra funzionare per la lingua inglese non va per quella italiana, un vero disastro.

    In compenso ero partito per fare un semplice test per vedere se i miei valori erano simili a quelli di Paocavo, ora mi sto appassionante perche' e' veramente un argomento bellissimo, oltre ogni mia piu' rosea aspettativa.

    Auguro a chi ha un po' di tempo di provarci, perche' e' veramente stimolante e a mio giudizio puo' dare anche grosse soddisfazioni in campo seo.


  • Moderatore

    @agoago said:

    Innanzitutto mi sono scontrato con i limiti hardware e di programmazione, uso un pc solo per questa analisi e mi si inchioda regolarmente.

    Effettivamente sono in ballo strutture dati abbastanza articolate, oltre ad un buon processore e tanta RAM il lavoro si facilita se, a seguito di una progettazione Object Oriented, si adottano in maniera massiccia Collection di Oggetti e recordset disconnessi per gli ordinamenti e raggruppamenti...

    Poi ho problemi di ordine matematico, ho notato che non riesco a trovare un algoritmo che vada bene sempre, ho come l'impressione che in una prima fase dovro' analizzare il tipo di key (lunghezza, numero, ecc ecc) e poi decidere quale algoritmo usare a seconda della lista di key.

    In fase di decisione della "categoria principale" sono necessarie, sopratutto per le keyword + importanti soluzioni euristiche: il sistema deve proporre le categorie "candidate" sulla base di dati statistici (data mining) e poi si lascia la possibilità di decidere all'amministratore.

    image

    Per le categorie meno importanti l'applicazione decide in questo modo:
    a) Considera la posizione e la forza di ciascuna categoria presente in una keyphrase allora la categoria "principale" è quella più debole e che sta più a "sinistra" all'interno della frase.

    Inoltre vado ciucco con le lingue, uso sempre key inglesi e cosa sembra funzionare per la lingua inglese non va per quella italiana, un vero disastro.

    Ovviamente gli algoritmi cambiano perchè cambia la grammatica, anche se sto preparando un test ad-hoc per le key di AgoAgo...(a presto i risultati 😎 ). Il test è ad hoc per il sistema di alimentazione: invece che prendere i dati dai miei log li prelevo da un file di testo.

    In compenso ero partito per fare un semplice test per vedere se i miei valori erano simili a quelli di Paocavo, ora mi sto appassionante perche' e' veramente un argomento bellissimo, oltre ogni mia piu' rosea aspettativa.
    Auguro a chi ha un po' di tempo di provarci, perche' e' veramente stimolante e a mio giudizio puo' dare anche grosse soddisfazioni in campo seo.

    Quoto, è un campo veramente affascinante!


  • Super User

    Domanda: a cosa serve tutto ciò?

    A costruire spamengine più avanzati?


  • Moderatore

    @Everfluxx said:

    Domanda: a cosa serve tutto ciò?

    come ho detto nel primo post del 3D lo scopo di questa analisi era raggruppare le visite provenienti da ricerche sui MDR in categorie "auto-detected" di keywords in modo da avere un report sintetico su quali siano le sezioni di un sito web che "tirano" di più.

    Effetti e scopi secondari non sono esclusi... 😎 dipende da cosa devi fare,
    sta poi alla (in)coscienza del webmaster l'utilizzo dei risultati per tecniche di posizionamento poco "ortodosse", anche se qualcuno tempo fa parlava di [url=http://www.giorgiotave.it/forum/viewtopic.php?p=89195]DIV "seo-oriented"...


  • Super User

    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.


  • 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.

    Ho dato un'occhiata agli algoritmi di clustering k-means e devo dire che sono molto interessanti (appena avrò un pò di tempo cerchrò di implementarne uno ad-hoc) .

    In un certo senso l'algortimo che ho proposto in questo 3D è un algoritmo di clustering k-means, nel senso che:

    1. Considero media e deviazione standard del set iniziale.
    2. La "metrica" è quella on/off (il centroide esiste/non esiste nella KeyP)
    3. Categorie <=> Cluster
    4. Sub-centroidi <=> Categorie "principali"
      dovrò lavorare sui "raffinamenti" ovvero sulla determinazione dei Sub-centroidi con iterazioni ricorsive...

    Infatti, aggiungendo le stop-words inglesi al sistema sembra che i risultati non siano da scartare, vero agoago?
    PS: Ci stiamo scambiando algoritmi e set di keyphrase per confrontare i risultati. Le sue KeyP sono inglesi e generiche, le mie italiane e "tematizzate"


  • Super User

    @paocavo said:

    1. La "metrica" è quella on/off (il centroide esiste/non esiste nella KeyP)

    Hmm... a meno che io non abbia compreso, credo che su questo punto il tuo algoritmo differisca parecchio con quello che si può ottenere con un k-means.

    Correggimi se sbaglio: lanciando [url=http://www.cavone.com/services/KeyphraseAnalyzer.asp?numKey=999&btngo=+Go%21+]il tuo tool si nota che ogni categoria raccoglie keyphrase contenenti sempre la keyword che identifica la categoria.

    Nel k-means non è così: la keyword o keyphrase che identifica la categoria non necessariamente appare nelle keyphrase assegnate alla categoria.


  • Moderatore

    @LowLevel said:

    ...
    Correggimi se sbaglio: lanciando [url=http://www.cavone.com/services/KeyphraseAnalyzer.asp?numKey=999&btngo=+Go%21+]il tuo tool si nota che ogni categoria raccoglie keyphrase contenenti sempre la keyword che identifica la categoria.
    ...

    In effetti è proprio così! non per niente ho detto "in un certo senso..." l'algoritmo appartiene alla classe suddetta: certo, la metrica utilizzata è quella più triviale ma è pur sempre una metrica 😉 .

    Appena ho un pò di tempo passerò a quelle euclidee degli spazi n-dimensionali :mmm:


  • Moderatore

    A tal proposito segnalo questi due link, mi sembrano un buon punto di partenza (se qualcun altro si volesse divertire...):

    1. [url=http://www-cs-students.stanford.edu/~dalewis/classificoogle.pdf]Classificoogle: High Level Feature-Based HTML Document Classification

    2. [url=http://www.sourcecodesworld.com/source/show.asp?ScriptID=807]k-means Cluster Analysis Algorithm. - Algorithms Source Code in Java

    :ciauz:


  • 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 !