2012-02-23 48 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