我正在尝试从包含大量单词的 ArrayList 创建一个 N-gram 列表。我当前的代码如下所示:
public void ngram(int n){
int i = 0;
for(String a : arraylist){
if (i < arraylist.size() - 2) {
ngramlist.add(arraylist.get(i) + " " + arraylist.get(i+1) + " " + arraylist.get(i+2));
i++;
}
}
System.out.println(ngramlist);
}
其中arraylist 是包含单词的列表,ngramlist 是我想从arraylist 创建的列表。这段代码有效,但不是我想要的。如果我输入“猫狗鸟椅桌”之类的文本,输出将是“猫狗鸟,狗鸟椅,鸟椅桌”。我想要完成的是能够使用变量 n 输入我想连续添加的单词数量。所以如果我把 2 作为 n,它会是“猫狗,狗鸟,鸟椅,椅子桌”。
所以我希望我的代码是这样的:
public void ngram(int n){
int i = 0;
for(String a : arraylist){
if (i < arraylist.size() - n) {
(add all the words between i and i+n, so if n is 3 it adds 0-2, 1-3, 2-4 etc.)
i++;
}
}
System.out.println(ngramlist);
}