2016-07-07 67 views
0

當我嘗試使用Weka打開arff文件時遇到問題。在Weka中使用utf-8 arff文件時無法確定結構爲什麼

當arff文件的編碼設置爲ANSI時,一切看起來都很順利。但是,當我將編碼設置爲UTF-8(這是我的數據需要)我得到以下錯誤:

Unable to determine structure as arff(Reason java.io.Exception: keyword @relation expected,read token[@relation], line 1).

我ARFF文件似乎是正確的格式。

@relation myrelation 

@attribute pagename string 
@attribute pagetext string 
@attribute pagecategory string 
@attribute pageclass {0,1,2,3,4,5,6,7,8,9,10} 

@data 
....... 

注:我也改變了文件編碼爲UTF-8在RunWeka.ini文件

回答

1

作爲錯誤中提到線1,我有UTF-8文件與BOM在寫入的懷疑文件的開始。 Windows下的記事本使用此不需要的零寬度空間來從UTF-8文本文件中分解ANSI文本文件。

創建沒有BOM的文件,U+FEFF。這可以通過程序員的編輯器(JEdit,Notepad ++),一些十六進制編輯器完成,或者您可以刪除第一行並重新輸入。檢查文件大小。

許多解析器不會期望這樣的BOM,不要認爲它是空白的,並且掛起。

Path path = Paths.get("..."); 
String s = new String(Files.readAllBytes(path), StandardCharsets.UTF_8); 
String t = s.replaceFirst("^\uFEFF", ""); 
if (!s.equals(t)) { 
    System.out.println("BOM character present in UTF-8 text"); 
    Files.write(path, t.getBytes(StandardCharsets.UTF_8)); // Replaces file! 
} 
+0

工作正常!非常感謝! – xro7