2017-04-03 6 views
0

1- 자바 코드로 StringToWordVector 필터를 텍스트에 적용하려고 시도했지만 작동하지 않습니다. 필터 출력이 올바르지 않습니다. 내가 사용하는 코드 :텍스트 분류에 대한 Java의 StringToWordVectore 오류

Instances instances = source.getDataSet(); 
instances.setClassIndex(instances.numAttributes()-1); 
StringToWordVector stwv = new StringToWordVector(); 
//Splits a string into an n-gram with min and max grams. 
NGramTokenizer tokenizer = new NGramTokenizer(); 
tokenizer.setNGramMinSize(1); 
tokenizer.setNGramMaxSize(1); 
tokenizer.setDelimiters(" \r\n\t.,;:'\"()?!'"); 
stwv.setTokenizer(tokenizer); 

stwv.setDoNotOperateOnPerClassBasis(true); 
stwv.setOutputWordCounts(true); 
stwv.setDictionaryFileToSaveTo(new File("/forEclips/RandomForset/DictionaryFile.txt")); 
//------------------------ 
stwv.setInputFormat(instances); 
// Apply the filter 
Instances dataFiltered = weka.filters.Filter.useFilter(instances, stwv); 
System.out.println("\n\nFiltered data:\n\n" + dataFiltered.toString()); 

출력은 다음과 같습니다

@relation 'DIMS-weka.filters.unsupervised.attribute.StringToWordVector-R1-W10-prune-rate-1.0-C-N0-stemmerweka.core.stemmers.NullStemmer-stopwords-handlerweka.core.stopwords.Null-M1-O-tokenizerweka.core.tokenizers.NGramTokenizer -max 1 -min 1 -delimiters \" \\r\\n\\t.,;:\\\'\\\"()?!\\\'\"-dictionary/forEclips/RandomForset/DictionaryFile.txt 
@attribute class {Di,MS} 
@attribute اشبو numeric 
@attribute اللي numeric 
@attribute المويه numeric 
@attribute النار numeric 
@attribute تشوفوا numeric 
@attribute تعرفون numeric 
@attribute حبايبي numeric 
@attribute حجازي numeric 
@attribute خلال numeric 
@attribute دي numeric 
@attribute زي numeric 
@attribute سيدي numeric 
@attribute صور numeric 
@attribute في numeric 
@attribute كتير numeric 
@attribute كتييير numeric 
@attribute كتيييير numeric 
@attribute كده numeric 
@attribute مثل numeric 
@attribute من numeric 
@attribute مو numeric 
@attribute هل numeric 
@attribute وعيشوا numeric 
@attribute وقدود، numeric 
@attribute يا numeric 
@attribute يده numeric 

@data 
{0 MS,9 1,13 3,20 2} 
{0 MS,9 3,13 1,20 2} 
{0 MS,6 1,22 1} 
{5 1,16 1,17 1,23 1,24 1} 
{2 2,3 1,4 1,8 1,11 1,14 2,19 1,21 1,26 2} 
{1 1,7 1,10 1,12 1,15 1,18 1,20 1,25 1}` 

우리는이 섹션에서 섹션 @의 attribute.In 추가의 끝에서 클래스를 넣어하지 않습니다 여기에서 볼 수 있습니다 @ 데이터, 첫 번째 세 인스턴스, 첫 번째 클래스, 마지막 세 가지 동안 클래스 및 클래스의 ID가 없습니다. ID가있는 클래스의 끝에 있어야합니다.

2- 또한 동일한 가중치 (값 = 44)를 가진 모든 인스턴스에 대해 numeric 유형의 속성 (newattribut)을 추가하려고합니다. 섹션 @attribute 같은 모양을 의미
는 :

@attribute اشبو numeric 
    @attribute اللي numeric 
    @attribute المويه numeric 
    @attribute النار numeric 
    @attribute تشوفوا numeric 
    @attribute تعرفون numeric 
    @attribute حبايبي numeric 
    @attribute حجازي numeric 
    @attribute خلال numeric 
    @attribute دي numeric 
    @attribute زي numeric 
    @attribute سيدي numeric 
    @attribute صور numeric 
    @attribute في numeric 
    @attribute كتير numeric 
    @attribute كتييير numeric 
    @attribute كتيييير numeric 
    @attribute كده numeric 
    @attribute مثل numeric 
    @attribute من numeric 
    @attribute مو numeric 
    @attribute هل numeric 
    @attribute وعيشوا numeric 
    @attribute وقدود، numeric 
    @attribute يا numeric 
    @attribute يده numeric 
    @attribute newattribute numeric 
    @attribute class {Di,MS} 


    @data 
    {8 1,12 3,19 2,26 44,27 MS} 
    {8 3,12 1,19 2,26 44, 27 MS} 
    {5 1,21 1,26 44,27 MS} 
    {4 1,15 1,16 1,22 1,23 1,26 44,27 Di} 
    {1 2,2 1,3 1,7 1,10 1,13 2,18 1,20 1,25 2,26 44,27 Di} 
    {0 1,6 1,9 1,11 1,14 1,17 1,19 1,24 1,26 44,27 Di} 

3 나는 나이브 BAISE, 임의의 숲, 그리고 SVM에 의해 텍스트를 분류하는이 훈련 데이터를 사용하고 싶습니다. Java에서 weka 라이브러리를 사용하여 데이터를 학습하고 테스트하기위한 교차 유효성 검사를 작성하는 방법. 나는 Libsvm을 Java building path에 추가하여 SVM을 사용하려고 시도하는데 오류가 발생한다.

감사합니다.

+0

어떤 명령이나 제안이 있습니까? 부디. –

+0

이 예제에서 동일한 아이디어를 시도하지만 http://stackoverflow.com/documentation/weka/7753/text-classification/25415/text-classification-with-liblinear#t=201702100929141774578하지만 작동하지 않습니다. –

답변