• User

    Categorie automatiche

    Per dividere i testi per lingua, uso le liste di stop words (articoli, avverbi, esclamazioni, interiezioni, preposizioni, pronomi), cioè se debbo selezionare solo testi in italiano, calcolo la quantità di stop words italiane contenute nel testo e se rappresentano almeno il 20% del totale delle parole, classifico il testo come italiano.

    Per dividere i testi in un centinaio di categorie, occorrerebbero elenchi simili alle stop words, cioè se abbiamo un elenco con qualche centinaio di parole relative all'alimentazione, e calcolando la percentuale di parole presenti nel testo, potremmo stabilire se il testo è abbinabile alla categoria Alimentazione.

    Dove posso trovare tali elenchi? o meglio ancora: esistono programmi pronti per categorizzare i testi?


  • Moderatore

    @Petru said:

    Dove posso trovare tali elenchi? o meglio ancora: esistono programmi pronti per categorizzare i testi?

    Gli elenchi di parole caratterizanti un (sub)dominio di conoscenza dovresti (auto)determinarli su base statistica (1) o probabilistica (2) oppure determinare le frasi (keyphrase) che meglio rappresentano un documento e poi classificarle con algoritmi di clustering (3).

    Links:
    2) Automatic Document Classification with Bayesian Theory

    Per gli atri punti ne abbiamo già parlato in post precedenti elencati nella home page di nelsenso.it


  • User

    Quale base di dati utilizzare.

    Dovendo creare un elenco di parole relative alla categoria, per esempio, Musica, che base di dati utilizzo.

    • Ricerco musica su Google, spiderizzo le prime 500 pagine di risultati e cerco di tirare fuori le parole comuni in molte pagine?

    • Spiderizzo completamente il sito che più rispecchia la categoria "Musica" per estrapolare le parole necessarie?

    • cerco Musica su wikipedia ed utilizzo i titoli dei primi 1000 risultati?

    • Faccio gli elenchi a mano?

    • Se avessi un grosso sito di musica, probabilmente potrei estrarre le parole più ricercate dal contatore delle visite.

    -Uso solo i classici tools per la ricerca di parole chiave?

    Lo scopo finale è di avere le liste di parole relative ad un centinaio di categorie in modo da poter abbinare automaticamente un testo ad una o più categorie prestabilite.


  • Moderatore

    L'articolo suggerito nel mio precedente post l'ho tradotto sul mio Blog:

    "Il Classificatore ingenuo di Bayes"

    Per quanto riguarda la costruzione supervisionata di ontologie credo che una buona tecnica si a quella di fare un mix dei passi che propone Petru 😉

    :ciauz:


  • User Attivo

    Petru se vuoi usare un sistema semplice ma abbastanza efficace (ovvio che non e' una soluzione scientifica come quella proposta da Paocavo) potresti fare cosi':

    Scarichi l'archivio di Wikipedia, e' gia compresso e libero. Cosi' eviti anche di dover spiderizzare decine di migliaia di pagine per il web.

    Poi con un semplice programmino conti per ogni sua pagina (per esempio) tutte le parole che contiene, e prendi per dire quelle che superano il 3%-5% di densita'.

    A questo punto ti ritroverai con un file contenente qualcosa del tipo (w1= parola1):

    w1 (6,3%) | w2 (5,8%) | w3 (5,7%) etc etc
    w24 (7,2%) | w44 (4,6%) | w2424 (3,7%) | w646 (3,5%) etc etc

    e cosi' per 320.000 volte se il wiki contiene 320.000 pagine (scarta magari quelle sotto una certa dimensione, per dire 5k)

    A questo punto il piu' e' fatto.

    Dal mio file estrarro' tutte le righe che contengono w1 e le salvo sul file w1.txt (per dire), basta il classico comando dos: findstr.
    Eseguo per tutte le w, usando un file .bat

    In una dir pertanto avrai per dire 400.000 file: w1.txt w2.txt etc etc
    Ora per ogni file accoperai-unirai le parole ripetute al suo interno, mettendole in ordine di presenza, da quelle che appaiono piu' volte a quelle che appaiono meno, e a parita' di numero di volte (che una parola si ripete) tenerrai conto della media delle %.

    Ammettiamo di prendere in considerazione i risultati di musica.txt, avremo:

    Cantanti | 1024
    canzone | 967
    chitarra | 722 (3,2%)
    concerto | 722 (3,1%)
    etc

    Ovviamente le parole che non raggiungono piu' di un tot di valore a tua scelta saranno da te escluse dalla lista (magari prendi solo le prime 50, o quelle che non raggiungono almeno una certa % di presenza rispetto le altre, inutile salvare flauto se appare solo 5 volte rispetto parole che appaiono centinania di volte, come canzone o concerto...).

    Con un buon pc e 30k di programma te la dovresti cavare in un weekend, ottenendo cosi' un buon archivio di riferimento, contenente in pratica tutte le parole italiane e relative parole correlate.

    Se poi da li vuoi creare delle macrocategorie, allora lavorai su questi risultati finali procedendo con calcoli simili.


    Interessante notare come con questo sistema si possa escludere gia' al primo passaggio (con un semplice calcolo intermedio) tutte le stopkey, infatti dal mio primissimo file posso cancellare (prima di effettuare i conteggi) tutte quelle w che si ripetono piu' di una certa % di volte, per dire 0,5% o 2%... come preferiamo.

    E' solo un'idea, ma piu' facile a farsi che a spiegarsi.

    Personalmente ho usato una tecnica diversa per lo stesso calcolo sulle parole inglesi (ma tiene conto anche delle doppie e triple parole) ma sulle parole singole anche con questo sistema ho verificato che i risultati erano abbastanza correlabili tra i 2 metodi.

    Nel caso poi si implementi lo stemmer i risultati migliorano, ma nel tuo caso non dovrebbe servirti.