2012-02-23 3 views
1

간단한 cli (명령 행)를 사용하여 Weka로 텍스트 분류 (Naive Bayes)를하고 싶습니다.하지만 한 가지 문제점이 있습니다. Weka는 문자열을 처리 할 수 ​​없으며 변환해야합니다. 그러나 cli를 통해 arff 파일의 문자열을 변환 할 수 있습니까? 나는 텍스트를 변경 모델Weka 명령 행 및 문자열

java weka.classifiers.bayes.NaiveBayes -t data.arff -d data.model 

답변

2

을 사용 StringToWordVector을 만들려면 다음 명령을 사용하고

@relation data set 

@attribute text string 
@attribute class {swedish,'?',english} 

@data 
'detta är en svensk text',swedish 
'this is an english text',english 
'what is the name of this book?',english 
'vilken färg är en liten stuga?',swedish 
'you are the best',english 
'en enstaka fjäder i hatten fördröjer livet ett tag',swedish 
'detta är en annan svensk text',swedish 

sentences.arff 예는 숫자 값 속성을. weka의 대부분의 분류 기준은 텍스트 값을 사용할 수 없습니다 (Working with textual data 참조). 그 후에는 NaiveBayes 을 정상적으로 사용할 수 있습니다. 나는 당신의 예제의 인스턴스 번호부터 3 폴드 (-x 3)을 사용할 필요가

java weka.filters.unsupervised.attribute.StringToWordVector -i datasets\sentences.arff > datasets\sentencesWordVector.arff 
java weka.classifiers.bayes.NaiveBayes -t datasets\sentencesWordVector.arff -c 1 -x 3 

참고 기본값 (10) 보다 짧은 I 사용할 클래스 인덱스 1 (-c 1).

내 컴퓨터에서 혼란 행렬을 따릅니다. 예제에는 '?'가없는 인스턴스가 있기 때문에 정상적으로 처리됩니다.

=== Confusion Matrix === 

a b c <-- classified as 
4 0 0 | a = swedish 
0 0 0 | b = ? 
0 0 3 | c = english 
+0

감사합니다. 테스트 할 문장을 똑같이해야합니까? 모델을 만들고 테스트 파일을 변환 한 후 교육 및 테스트 세트가 호환되지 않습니다. – Thomas

+0

@ 토마스 모든 문서에 대해이 작업을 수행해야합니다. 그것이 당신을 도운다면 upvote하고 대답으로 표시하십시오. –

+0

(+1) 좋은 응답. – chl