译自:http://weka./Text categorization with WEKA< xmlnamespace prefix ="o" ns ="urn:schemas-microsoft-com:office:office" /> 导入进行任何分类任务,数据都必须是ARFF或是XRFF格式。 目录你可以用下面的工具将文本文件转换成ARFF格式: 1. TextDirectoryToArff工具 它将一个包含文本文件的目录转换成一个ARFF文件。 2. TextDirectoryLoader 转换器 这个转换器基于TextDirectoryToArff工具实现,它在weka.core.converters包中。 要使用TextDirectoryLoader,你要将目录处理成下面这种结构(译注:简单的说就是将每个类别的文本文件放到一个目录中,并将这个目录名命令为类别名,如果你还不明白,在下面的例子节,你可以去下载)(用tree命令可以看你的目录结构,linux和windows都可以): ... | - text_example | - class1 | | | file1.txt | | | file2.txt | | | ... | - class2 | | | another_file1.txt | | | another_file2.txt | | | ... 上面的目录结构可以用下面的命令转换成一个ARFF文件: java weka.core.converters.TextDirectoryLoader -dir text_example > text_example.arff CSV 文件CSV文件可以很容易地通过Weka Explorer或是通过命令行用CSVLoader导入: java weka.core.converters.CSVLoader file.csv > file.arff 默认情况下,非数值型属性会以NOMINAL(离散型)属性方式导入,这对于文本型数据是不太合适的,特别是有人想在后面使用StringToWordVector过滤器时,要将属性指定为STRING类型,可以对数据运行NominalToString过滤器(在weka.filters.unsupervised.attribute包中),并指定属性下标或指定要转换的范围(注意,这个过滤器会将类别属性也进行转换)。为了保留属性类型,你需要将文件保存为ARFF或是XRFF格式(或是以一种压缩格式版本进行保存)。 第三方工具TagHelper工具,它可以将文本转换成切词或是非切词的unigrams,bigrams,part-of-speech bigrams,和一些用户定义的特性,然后保存成ARFF格式,现在支持的语言有英文,德文,中文。西班牙文和葡萄牙语的处理工作正在进行。 处理文本数据转换Weka中的大多数分类器不能处理String类型的属性,所以如果你要学习一个分类器,应该将String类型先转换成合适的格式,比如,StringToWordVector过滤器可以进行TF/IDF 转换。 StringToWordVector过滤器将类别属性放在输出文件的开始,如果你喜欢它还是在最后的位置,你可以用如下设置使用Recorder过滤器: weka.filters.unsupervised.attribute.Reorder -R 2-last,first 另外,你可以用MultiFilter你可以将两个过滤器一次运行,这样在比如Explorer方式下就简单点。 停词StringToWordVector过滤器可以使用不同的停词表,它自身也有一个内嵌的停词表(基于Rainbow系统)。你可以用-stopwords选择来加载外部的停词文件,停词文件的格式就是一行一个停词,如果前面有’#’就会被认为是注释被忽略。 UTF-8如果你要处理的文本文件是non-ASCII码文件,比如阿拉伯文,你也许会在Windows下遇到一些显示上的问题,Java是支持显示UTF-8的,所以也包括阿拉伯语,默认情况下,Java在Windows下使用code page 1252,它会使显示其它问题时有问题。为了修正这个错误,你需要在启动Weka时修改java命令行。 java -Dfile.encoding=utf-8 -classpath ... -Dfile.encoding=utf-8是告诉Java使用UTF-8编码而不是默认的CP1252。 如果你想通过启动目录方式启动weka,你可以在RunWeka.ini的修改fileEncoding值为UTF-8。 例子text_example.zip – 包含一个作为示例的目录和文件,它可以被TextDirectoryLoader转换器载入。 text_example.zip – 它使用TextDirectoryLoader转换器将一个目录转换成一个数据集,并用StringToWordVector过滤,再用过滤过的数据建立一个分类器。
|
|