将.txt文件(ANSI编码)转换为.Arff而不会丢失重音

时间:2016-05-21 18:49:10

标签: java netbeans weka ansi

我很难找到如何将ANSI编码中的.txt文件转换为weka中的.arff文件而不会丢失一些重音和过程中单词的含义。我正在读西班牙语的文章,问题是带有重音的单词被转换得很糟糕,因为带有重音的字母会像这样转换。

我原来的.txt | .arff文件转换结果

Minería|矿化

字母“í”在此过程中丢失了。

我的代码现在是这个(代码由weka大学提供)

public Instances createDataset(String directoryPath) throws Exception {

FastVector atts = new FastVector(2);
atts.addElement(new Attribute("filename", (FastVector) null));
atts.addElement(new Attribute("contents", (FastVector) null));
Instances data = new Instances("text_files_in_" + directoryPath, atts, 0);

File dir = new File(directoryPath);
String[] files = dir.list();
for (int i = 0; i < files.length; i++) {
  if (files[i].endsWith(".txt")) {
try {
  double[] newInst = new double[2];
  newInst[0] = (double)data.attribute(0).addStringValue(files[i]);
  File txt = new File(directoryPath + File.separator + files[i]);
  // meto codigo nuevo aqui dentro


  // hasata aqui
  InputStreamReader is;
  is = new InputStreamReader(new FileInputStream(txt));
  StringBuffer txtStr = new StringBuffer();
  int c;
  while ((c = is.read()) != -1) {
    txtStr.append((char)c);
    // s pstir de aqui contamino yo el codigo
     // System.out.println("Sale " + is.toString();

  }
  newInst[1] = (double)data.attribute(1).addStringValue(txtStr.toString());
  data.add(new Instance(1.0, newInst));
} catch (Exception e) {
  //System.err.println("failed to convert file: " + directoryPath + File.separator + files[i]);
}
  }
}
return data;

}

我正在使用Netbeans从我计算机中的文件中投射文件。 你可能会认为我在这个页面的其他帖子中问了同样的事情,但实际上我并不是因为我真正需要的是能够正确转换西班牙语重音的转换器。

我试图将Netbeans中的编码改为UTF-8和ANSI,但没有一个解决方案适用于我(我去了Netbeans8.1中的配置文件 - &gt;等 - &gt; netbeans .conf并在行netbeans_default_options = .........中添加-J-Dfile.encoding = UTF-8但仍然无效)。我对这个问题感到有点沮丧。

我失去理智后找到了局部解决方案。事实上,这个解决方案并不是一个真正的解决方案,所以有一天我会找到一些可以挽救数据挖掘世界的东西。解决方案包括将文本保存为UTF-8而不使用BOM(UTF-8 sin BOM)。您还必须将Netbeans配置为读取UTF8,如上所述。

1 个答案:

答案 0 :(得分:0)

我有这个问题,我的解决方案是编码为ANSI。

我使用了Notepad ++

步骤:

  • 打开文件

  • 转到顶部面板

  • Enconding - &gt;用ANSI

  • 编码