我知道这个问题已被多次询问,但我无法找到将其应用于我的代码的方法。 所以我的建议如下: 我有两个文件 griechenland_test.txt 和 outagain5.txt 。我想阅读它们,然后在另一个文件中获得 outagain5.txt 的百分比。
Outagain5有这样的输入:
mit dem 542824
und die 517126
Griechenland是来自维基百科的关于该主题的正常文章(所以与正常文本一样,没有频率计数)。
1。问题 - 如何在bigramms中拆分输入?喜欢每两个字,但总是与之前的一个?所以,如果我有单词A,B,C,D - >得到AB,BC,CD? 我有这个:
while ((sCurrentLine = in.readLine()) != null) {
// System.out.println(sCurrentLine);
arr = sCurrentLine.split(" ");
for (int i = 0; i < arr.length; i++) {
if (null == hash.get(arr[i])) {
hash.put(arr[i], 1);
} else {
int x = hash.get(arr[i]) + 1;
hash.put(arr[i], x);
}
}
然后我用这段代码读了另一个文件(我只是添加了这个词,而不是数字(我把它分成4个空格,所以这两个词都是h [0])。
for (String line = br.readLine(); line != null; line = br.readLine()) {
String h[] = line.split(" ");
words.add(h[0]);
}
2。问题 现在我在hash中的String x和单词中的String之间进行比较。我已将else System out.print用于获取 outagain5.txt 中未包含的单词,但是打印出了几个单词,其中 ARE 包含在outagain5.txt中。我不明白为什么:D 因此,我认为比较不能很好地工作,或者这可能会解决,这将解决第一个问题。
ArrayList<String> words = new ArrayList<String>();
ArrayList<String> neuS = new ArrayList<String>();
ArrayList<Long> neuZ = new ArrayList<Long>();
for (String x : hash.keySet()) {
summe = summe + hash.get(x);
long neu = hash.get(x);
for (String s : words) {
if (x.equals(s)) {
neuS.add(x);
neuZ.add(neu);
disc = disc + 1;
} else {
System.out.println(x);
break;
}
}
}
希望我明白我的问题,非常感谢!!
答案 0 :(得分:0)
如果我记得,String有一个名为split(正则表达式,计数)的方法,它将根据特定点拆分项目,你可以告诉它多少次。
我引用了这个JavaDoc https://docs.oracle.com/javase/6/docs/api/java/lang/String.html#split(java.lang.String,int)。
我想在两个文本文件之间运行比较时,我建议让你的代码读取它们,填充两个独特的数组,然后尝试每次在两个字符串之间进行比较。希望我帮忙。