2016-01-11 20 views
5

WEKA API'yi gerçekten çiğnemeliyim. Tek yapmak istediğim, niteliklerime yeni nominal değerler vermek.AddValues ​​kullanarak Örneklere yeni nominal değerler nasıl eklenir?

@relation features 

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

@data 
:

Ben Cümle 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 

ve Cümle 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 

Ve ne boş bir örnek veri kümesine olanlar ekliyor başarmak için denemek gibi verilere sahip

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; 
} 

ama sadece değerler eklemek yerine instances üzerine yazılmasını ediyor:Bu Bunu yapmaya çalıştım nasıl.

cevap

0

Aynı kodu iki kez kullanıyorsunuz.

instances = Filter.useFilter(instances, addValues); 

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

bu deneyin:

instances = Filter.useFilter(instances, addValues); 

return instances; 

Ya da bir sonraki seviyeye:

return Filter.useFilter(instances, addValues 
+1

Maalesef bu gerçek yalnızca bir kod kalan oldu. Ben sadece basitleştirmek ve ikinci 'useFilter()' – displayname

+0

Btw çağrısı kaldırmak unuttum * zaten * * * * * yönetilen * yapmak * eklemek * Kısmen AddValues ​​endeksleme ya da bir şey umurumda değil gibi görünüyor çünkü veri Sadece etkileniyor ... hala birisini beklemek nasıl yapılacağını bilir * doğru *. – displayname