2016-01-11 3 views
5

Naprawdę muszę przełknąć API WEKA. Wszystko, co chcę zrobić, to wprowadzić nowe nominalne wartości do moich atrybutów.Jak dodać nowe wartości nominalne do wystąpień za pomocą właściwości AddValues?

Mam danych jak Sentence 1

@relation i-do-not-care 

@attribute sentence_id {1090587:0} 
@attribute word {here,girlfriend,bday,23rd,go,for,my,just} 
@attribute relations {nmod:poss-,amod+;nsubj-,nsubj+;nmod+;advmod+,amod-,nmod-;case+;nmod:poss+,advmod-,case-} 
@attribute target {0} 

@data 
1090587:0,go,nsubj+;nmod+;advmod+,0 
1090587:0,my,nmod:poss-,0 

i Zdanie 2

@relation i-do-not-care 

@attribute sentence_id {1090587:1} 
@attribute word {be,idea,house,weehawken,offer,view,top,along,of,have,if,you,a,in,the,ever,to,river,chart} 
@attribute relations {aux-,cop-,nmod-;case+,nsubj+;acl:relcl-;xcomp+,advmod-,det-,nsubj-,advcl+;nsubj+;dobj+,case-,acl:relcl+;det+;nmod+;dobj-,mark+;nsubj+;det+;nmod+;cop+;aux+;case+;advcl-;advmod+,compound+;nsubj-;det+,mark+;xcomp-,mark-,compound-,det+;nmod+;nmod-;case+} 
@attribute target {0,1} 

@data 
1090587:1,a,det-,0 
1090587:1,have,advcl+;nsubj+;dobj+,0 

i co staram się wykonać jest dodanie tych do pustej Instancji zbiorze:

@relation features 

@attribute sentence_id {} 
@attribute word {} 
@attribute relations {} 
@attribute target {0,1} 

@data 

W ten sposób starałem się zrobić to:

public Instances add(Instances instances, Instances newInstances) { 

    AddValues addValues = new AddValues(); 

    try { 
     // This should just copy 'sentence_id' values 
     // but I am not sure about that.    
     addValues.setAttributeIndex("1"); 
     addValues.setInputFormat(newInstances); 

     instances = Filter.useFilter(instances, addValues); 

     return instances;    
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

    return null; 
} 

ale to jest po prostu nadpisywania instances zamiast dodanie wartości.

Odpowiedz

0

Używasz tego samego kodu dwa razy.

instances = Filter.useFilter(instances, addValues); 

return instances = Filter.useFilter(instances, addValues); 

Spróbuj tego:

instances = Filter.useFilter(instances, addValues); 

return instances; 

lub następnego poziomu:

return Filter.useFilter(instances, addValues 
+1

Niestety, było to po prostu reszta rzeczywistego kodu. Uprościłem to i zapomniałem usunąć drugie wywołanie 'useFilter()' – displayname

+0

Btw: Już "* managed *" zrobiłem część * add *, ale wygląda na to, że AddValues ​​nie dba o indeksowanie lub coś, ponieważ dane są po prostu zaczynamy się czuć ... wciąż czekam, aż ktoś wie, jak to zrobić * prawo *. – displayname

Powiązane problemy