【问题标题】:Unable to determine structure as arff when using utf-8 arff file in Weka在 Weka 中使用 utf-8 arff 文件时无法将结构确定为 arff
【发布时间】:2016-11-09 16:48:23
【问题描述】:

当我尝试使用 Weka 打开 arff 文件时遇到问题。

当 arff 文件的编码设置为 ANSI 时,一切似乎都运行良好。但是当我将编码设置为 utf-8(这是我的数据所需要的)时,我收到以下错误:

无法将结构确定为 arff(原因 java.io.Exception:关键字 @relation 预期,读取令牌 [@relation],第 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
.......

注意:我还在 RunWeka.ini 文件中将文件编码更改为 utf-8

【问题讨论】:

    标签: machine-learning nlp weka


    【解决方案1】:

    作为错误提到第1行,我有疑似UTF-8文件在文件开始时用BOM写入。该不需要的零宽度空间由Notepad使用Windows下的Notepad从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!
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-06
      • 1970-01-01
      • 2017-12-09
      • 1970-01-01
      • 2020-12-19
      • 2014-05-14
      • 2015-04-30
      • 2015-06-24
      相关资源
      最近更新 更多