io non sono sicuro di quello che ha cura dei suoi attributi possono assumere, ma forse questo esempio vi aiuterà a:
Supponiamo stiamo conducendo un esperimento di apprendimento supervisionato per cercare di determinare se un periodo segna la fine di una frase oppure no, EOS
e NEOS
rispettivamente. I dati di allenamento è venuto da frasi normali in un formato stile di paragrafo, ma sono stati trasformati per il seguente modello vettore:
- Colonna 1: Classe: End-of-frase o Non-End-of-Sentence
- Colonne 2-8: le parole +/- 3 che circondano il periodo in questione
- colonne 9,10: il numero di parole a sinistra/destra, rispettivamente, del periodo precedente al successivo delimitatore di frase attendibile (ad esempio?,! O un segno di paragrafo).
- Colonna 11: il numero di spazi dopo il periodo.
Naturalmente, questo non è un problema molto complicato da risolvere, ma è una bella introduzione a Weka. Non possiamo semplicemente usare le parole come caratteristiche (spazio veramente di alta dimensione), ma possiamo prendere i loro tag POS (parte del discorso). Possiamo anche estrarre la lunghezza delle parole, indipendentemente dal fatto che la parola sia stata maiuscola, ecc.
Quindi, è possibile alimentare qualsiasi cosa come dati di test, purché sia possibile trasformarlo nel modello vettoriale sopra ed estrarre le funzionalità utilizzate in .arff.
Il seguente (molto piccola porzione di) .arff file è stato utilizzato per determinare se un periodo in una frase ha segnato la fine del oppure no:
@relation period
@attribute minus_three {'CC', 'CD', 'DT', 'FW', 'IN', 'JJ', 'JJR', 'JJS', 'LS', 'MD', 'NN', 'NNPS', 'NNS', 'NP', 'PDT', 'PRP', 'PRP$', 'RB', 'RBR', 'RBS', 'RP', 'UH', 'VB', 'VBD', 'VBG', 'VBN', 'VBP', 'VBZ', 'WDT', 'WP','WRB', 'NUM', 'PUNC', 'NEND', 'RAND'}
@attribute minus_three_length real
@attribute minus_three_case {'UC','LC','NA'}
@attribute minus_two {'CC', 'CD', 'DT', 'FW', 'IN', 'JJ', 'JJR', 'JJS', 'LS', 'MD', 'NN', 'NNPS', 'NNS', 'NP', 'PDT', 'PRP', 'PRP$', 'RB', 'RBR', 'RBS', 'RP', 'UH', 'VB', 'VBD', 'VBG', 'VBN', 'VBP', 'VBZ', 'WDT', 'WP','WRB', 'NUM', 'PUNC', 'NEND', 'RAND'}
@attribute minus_two_length real
@attribute minus_two_case {'UC','LC','NA'}
@attribute minus_one {'CC', 'CD', 'DT', 'FW', 'IN', 'JJ', 'JJR', 'JJS', 'LS', 'MD', 'NN', 'NNPS', 'NNS', 'NP', 'PDT', 'PRP', 'PRP$', 'RB', 'RBR', 'RBS', 'RP', 'UH', 'VB', 'VBD', 'VBG', 'VBN', 'VBP', 'VBZ', 'WDT', 'WP','WRB', 'NUM', 'PUNC', 'NEND', 'RAND'}
@attribute minus_one_length real
@attribute minus_one_case {'UC','LC','NA'}
@attribute plus_one {'CC', 'CD', 'DT', 'FW', 'IN', 'JJ', 'JJR', 'JJS', 'LS', 'MD', 'NN', 'NNPS', 'NNS', 'NP', 'PDT', 'PRP', 'PRP$', 'RB', 'RBR', 'RBS', 'RP', 'UH', 'VB', 'VBD', 'VBG', 'VBN', 'VBP', 'VBZ', 'WDT', 'WP','WRB', 'NUM', 'PUNC', 'NEND', 'RAND'}
@attribute plus_one_length real
@attribute plus_one_case {'UC','LC','NA'}
@attribute plus_two {'CC', 'CD', 'DT', 'FW', 'IN', 'JJ', 'JJR', 'JJS', 'LS', 'MD', 'NN', 'NNPS', 'NNS', 'NP', 'PDT', 'PRP', 'PRP$', 'RB', 'RBR', 'RBS', 'RP', 'UH', 'VB', 'VBD', 'VBG', 'VBN', 'VBP', 'VBZ', 'WDT', 'WP','WRB', 'NUM', 'PUNC', 'NEND', 'RAND'}
@attribute plus_two_length real
@attribute plus_two_case {'UC','LC','NA'}
@attribute plus_three {'CC', 'CD', 'DT', 'FW', 'IN', 'JJ', 'JJR', 'JJS', 'LS', 'MD', 'NN', 'NNPS', 'NNS', 'NP', 'PDT', 'PRP', 'PRP$', 'RB', 'RBR', 'RBS', 'RP', 'UH', 'VB', 'VBD', 'VBG', 'VBN', 'VBP', 'VBZ', 'WDT', 'WP','WRB', 'NUM', 'PUNC', 'NEND', 'RAND'}
@attribute plus_three_length real
@attribute plus_three_case {'UC','LC','NA'}
@attribute left_before_reliable real
@attribute right_before_reliable real
@attribute spaces_follow_period real
@attribute class {'EOS','NEOS'}
@data
VBP, 2, LC,NP, 4, UC,NN, 1, UC,NP, 6, UC,NEND, 1, NA,NN, 7, LC,31,47,1,NEOS
NNS, 10, LC,RBR, 4, LC,VBN, 5, LC,?, 3, NA,NP, 6, UC,NP, 6, UC,93,0,0,EOS
VBD, 4, LC,RB, 2, LC,RP, 4, LC,CC, 3, UC,UH, 5, LC,VBP, 2, LC,19,17,2,EOS
Come si può vedere, ogni attributo può assumere qualunque si vuole:
real
indica un numero reale
- ho recuperato
LC
e UC
per indicare maiuscole e minuscole, rispettivamente,
- La maggior parte degli altri valori sono
POS
tag
È necessario capire esattamente quali sono le vostre caratteristiche sono, e quali valori che verrà utilizzato per rappresentare/classificarli. Quindi, devi trasformare i tuoi dati nel formato definito dal tuo .arff.
Per toccare la domanda di punteggiatura, supponiamo di avere frasi che finiscono tutte in .
o ?
.Si può avere un attributo chiamato punc, che prende due valori:
@attribute punc {'p','q'}
non ho usato ?
perché questo è ciò che è (convenzionalmente) assegnato quando un punto di dati è mancante. Potremmo avere attributi booleani che indicano se un personaggio o cosa sei stato presente (con 0, 1 o falso, vero). Un altro esempio, ma per la qualità:
@attribute quality {'great','good', 'poor'}
Come si determina tale classificazione dipende da voi, ma quanto sopra dovrebbe iniziare. In bocca al lupo.
Non sai esattamente cosa stai cercando, ma spero che il mio piccolo esempio ti possa aiutare. In bocca al lupo. –