2011-11-29 18 views
7

Per favore fatemi sapere come rappresentare l'attributo o la classe per la classificazione del testo in weka. Usando quale attributo posso fare la classificazione? frequenza delle parole o solo parole? Quale sarebbe la possibile struttura del formato ARFF? Puoi darmi diverse righe di esempio di quella struttura?Come rappresentare il testo per la classificazione in weka?

Grazie mille in anticipo.

risposta

11

Una delle alternative più semplici è quello di iniziare con un file ARFF per un problema a due classi, come:

 
@relation corpus 

@attribute text string 
@attribute class {pos,neg} 

@data 
'long text with words ... ',pos 

Il testo è rappresentato come un tipo String e la classe è una nominali con due valori.

Poi si potrebbe applicare due filtri:

  1. StringToWordVector che trasforma i testi in una rappresentazione di parola vettore. Il filtro utilizza un attributo per ogni parola. È possibile modificare i parametri per scegliere la rappresentazione binaria/frequenza, lo stemming o la stopword. La migliore rappresentazione dipende dal problema. Se il testo non è lungo, solitamente è sufficiente la rappresentazione binaria.
  2. Riordina per spostare la classe assegnata all'ultima posizione, Weka presume che sia lì.

Si possono trovare maggiori informazioni e altri approcci per trasformare i dati in questa pagina Wiki Weka: http://weka.wikispaces.com/Text+categorization+with+WEKA

0

In WEKA, è possibile scegliere il proprio attributo. In questo esempio, abbiamo solo 2 classi e tutte le parole uniche sono usate come attributi. Se scegli la frequenza delle parole come attributo, allora assegni "2" se quella parola si verifica due volte nel tuo testo, e "0" se non lo è, o "1" se quella parola si verifica solo una volta.

Ecco l'esempio del formato .arff.

@RELATION anyrelation 

@ATTRIBUTE word1 
@ATTRIBUTE word2 
... 
@ATTRIBUTE wordn 
@ATTRIBUTE class {class1, class2} 

@DATA 
1,2,....,0,class1 
0,3,....,1,class2 
Problemi correlati