2012-02-23 76 views
1

我想用Weka使用簡單的CLI(命令行)來做一些文本分類(樸素貝葉斯),但我有一個問題。 Weka無法處理字符串,必須進行轉換。 但是我怎麼能通過cli在我的arff文件中轉換字符串?Weka命令行和字符串

@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 

我使用下面的命令來創建一個模型

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

回答

2

使用StringToWordVector更改文本sentences.arff例如屬性數值。 weka中的大多數分類器都無法使用文本值,請參見Working with textual data。之後,您可以正常使用NaiveBayes

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 

請注意,我需要使用3倍(-x 3),因爲你的榜樣的實例數比默認值10 短我也用類指數1(-C 1)。

在我的電腦中,我收到以下Confusion Matrix。很正常,因爲你的例子沒有任何'?'的例子。

=== Confusion Matrix === 

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

謝謝。 我應該對我喜歡測試的句子做同樣的事嗎?創建模型並轉換測試文件 後,我得到錯誤: 培訓和測試集不兼容 – Thomas 2012-02-24 20:05:53

+0

@Thomas您應該爲所有文檔執行此操作。如果它幫助你,請註冊並標記爲答案。 – 2012-02-26 10:03:10

+0

(+1)回覆良好。 – chl 2012-02-26 17:48:48