|
譯自:http://weka./Text categorization with WEKA< xmlnamespace prefix ="o" ns ="urn:schemas-microsoft-com:office:office" /> 導(dǎo)入進(jìn)行任何分類任務(wù),數(shù)據(jù)都必須是ARFF或是XRFF格式。 目錄你可以用下面的工具將文本文件轉(zhuǎn)換成ARFF格式: 1. TextDirectoryToArff工具 它將一個(gè)包含文本文件的目錄轉(zhuǎn)換成一個(gè)ARFF文件。 2. TextDirectoryLoader 轉(zhuǎn)換器 這個(gè)轉(zhuǎn)換器基于TextDirectoryToArff工具實(shí)現(xiàn),它在weka.core.converters包中。 要使用TextDirectoryLoader,你要將目錄處理成下面這種結(jié)構(gòu)(譯注:簡(jiǎn)單的說就是將每個(gè)類別的文本文件放到一個(gè)目錄中,并將這個(gè)目錄名命令為類別名,如果你還不明白,在下面的例子節(jié),你可以去下載)(用tree命令可以看你的目錄結(jié)構(gòu),linux和windows都可以): ... | - text_example | - class1 | | | file1.txt | | | file2.txt | | | ... | - class2 | | | another_file1.txt | | | another_file2.txt | | | ... 上面的目錄結(jié)構(gòu)可以用下面的命令轉(zhuǎn)換成一個(gè)ARFF文件: java weka.core.converters.TextDirectoryLoader -dir text_example > text_example.arff CSV 文件CSV文件可以很容易地通過Weka Explorer或是通過命令行用CSVLoader導(dǎo)入: java weka.core.converters.CSVLoader file.csv > file.arff 默認(rèn)情況下,非數(shù)值型屬性會(huì)以NOMINAL(離散型)屬性方式導(dǎo)入,這對(duì)于文本型數(shù)據(jù)是不太合適的,特別是有人想在后面使用StringToWordVector過濾器時(shí),要將屬性指定為STRING類型,可以對(duì)數(shù)據(jù)運(yùn)行NominalToString過濾器(在weka.filters.unsupervised.attribute包中),并指定屬性下標(biāo)或指定要轉(zhuǎn)換的范圍(注意,這個(gè)過濾器會(huì)將類別屬性也進(jìn)行轉(zhuǎn)換)。為了保留屬性類型,你需要將文件保存為ARFF或是XRFF格式(或是以一種壓縮格式版本進(jìn)行保存)。 第三方工具TagHelper工具,它可以將文本轉(zhuǎn)換成切詞或是非切詞的unigrams,bigrams,part-of-speech bigrams,和一些用戶定義的特性,然后保存成ARFF格式,現(xiàn)在支持的語言有英文,德文,中文。西班牙文和葡萄牙語的處理工作正在進(jìn)行。 處理文本數(shù)據(jù)轉(zhuǎn)換Weka中的大多數(shù)分類器不能處理String類型的屬性,所以如果你要學(xué)習(xí)一個(gè)分類器,應(yīng)該將String類型先轉(zhuǎn)換成合適的格式,比如,StringToWordVector過濾器可以進(jìn)行TF/IDF 轉(zhuǎn)換。 StringToWordVector過濾器將類別屬性放在輸出文件的開始,如果你喜歡它還是在最后的位置,你可以用如下設(shè)置使用Recorder過濾器: weka.filters.unsupervised.attribute.Reorder -R 2-last,first 另外,你可以用MultiFilter你可以將兩個(gè)過濾器一次運(yùn)行,這樣在比如Explorer方式下就簡(jiǎn)單點(diǎn)。 停詞StringToWordVector過濾器可以使用不同的停詞表,它自身也有一個(gè)內(nèi)嵌的停詞表(基于Rainbow系統(tǒng))。你可以用-stopwords選擇來加載外部的停詞文件,停詞文件的格式就是一行一個(gè)停詞,如果前面有’#’就會(huì)被認(rèn)為是注釋被忽略。 UTF-8如果你要處理的文本文件是non-ASCII碼文件,比如阿拉伯文,你也許會(huì)在Windows下遇到一些顯示上的問題,Java是支持顯示UTF-8的,所以也包括阿拉伯語,默認(rèn)情況下,Java在Windows下使用code page 1252,它會(huì)使顯示其它問題時(shí)有問題。為了修正這個(gè)錯(cuò)誤,你需要在啟動(dòng)Weka時(shí)修改java命令行。 java -Dfile.encoding=utf-8 -classpath ... -Dfile.encoding=utf-8是告訴Java使用UTF-8編碼而不是默認(rèn)的CP1252。 如果你想通過啟動(dòng)目錄方式啟動(dòng)weka,你可以在RunWeka.ini的修改fileEncoding值為UTF-8。 例子text_example.zip – 包含一個(gè)作為示例的目錄和文件,它可以被TextDirectoryLoader轉(zhuǎn)換器載入。 text_example.zip – 它使用TextDirectoryLoader轉(zhuǎn)換器將一個(gè)目錄轉(zhuǎn)換成一個(gè)數(shù)據(jù)集,并用StringToWordVector過濾,再用過濾過的數(shù)據(jù)建立一個(gè)分類器。
|
|
|