我有严重的麻烦,找到如何转换ANSI编码的.txt文件到weka的.arff文件,而不会丢失一些口音和单词的含义在这个过程中。我阅读的文章在西班牙语和问题是,有口音的话是不好的转换,因为有口音的字母是这样转换的。
我原来的.txt|.arff文件转换结果
米内里亚|�系我��
字母“í”在此过程中丢失。
我现在的代码是这样的(代码由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 --〉etc --〉netbeans.conf中的配置文件,并在netbeans_default_options=..........行中添加-J-Dfile.encoding=UTF-8,但仍然不起作用)。我对这个问题感到有点沮丧。
好吧,我找到了一个部分的解决方案后,我的头脑放松。事实上,这个解决方案是不是一个真实的的解决方案,所以我希望有一天有人回答的东西,可能会保存世界的数据挖掘。解决方案包括保存文本在UTF-8没有BOM(UTF-8 sin BOM)。你也必须配置Netbeans读取UTF-8,正如我上面解释的那样。
1条答案
按热度按时间s4chpxco1#
我遇到了这个问题,我的解决方案是编码到ANSI。
我用Notepad ++
步骤: