Ho un progetto di classificazione dei documenti in cui sto ottenendo il contenuto del sito e quindi assegnando una delle numerose etichette al sito Web in base al contenuto.
Ho scoperto che tf-idf potrebbe essere molto utile per questo. Tuttavia, non ero sicuro di quando usarlo esattamente.
Supponendo che un sito Web che si occupa di un argomento specifico ne faccia ripetutamente menzione, questo è stato il mio processo attuale:
- Recupera il contenuto del sito, analizza il testo normale
- Normalizzare e contenere il contenuto
- Tokenize in unigrams (forse anche bigrams)
- Recupera un conteggio di ciascun unigramma per il documento dato, filtrando le parole a bassa e bassa occorrenza
- Addestra un classificatore come NaiveBayes sul set risultante
La mia domanda è la seguente: dove si adatterebbe tf-idf qui ? Prima di normalizzare / derivare? Dopo la normalizzazione ma prima della tokenizzazione? Dopo aver tokenizzato?
Qualsiasi approfondimento sarebbe molto apprezzato.
Modificare:
A un esame più attento, penso che potrei essermi imbattuto in un malinteso su come funziona TF-IDF. Al passaggio 4 sopra che descrivo, avrei dovuto alimentare la totalità dei miei dati in TF-IDF in una volta? Se, ad esempio, i miei dati sono i seguenti:
[({tokenized_content_site1}, category_string_site1),
({tokenized_content_site2}, category_string_site2),
...
({tokenized_content_siten}, category_string_siten)}]
Qui, la struttura più esterna è un elenco, contenente tuple, contenente un dizionario (o hashmap) e una stringa.
Avrei per alimentare la totalità di tali dati nella calcolatrice TF-IDF in una sola volta per ottenere l'effetto desiderato? In particolare, ho esaminato il TfidfVectorizer di scikit-learn per farlo, ma non sono sicuro del suo utilizzo, poiché gli esempi sono piuttosto scarsi.
({tokenized content}, category)
. Dato che ho la formazione impostata siti Web in un database e già classificato, non è un problema. Le etichette che il classificatore sarà in grado di applicare saranno solo quelle che ha visto dal set di addestramento annotato, giusto?