bigrams匹配的功能

时间:2011-07-18 11:31:27

标签: java

我有以下功能:

public static ArrayList<String> matchLists(ArrayList<String> ar1, ArrayList<String> ar2, ArrayList<String> ar3) {

  ArrayList<String> result = new ArrayList<String>();

  for (int i = 0; i < ar1.size(); i++) {
    for (int j = 0; j < ar2.size(); j++) {
      for (int k = 0; k < ar3.size(); k++) {

        String[] s1 = ar1.get(i).split("\\s");
        String[] s2 = ar2.get(j).split("\\s");
        String[] s3 = ar3.get(k).split("\\s");

        if (s1[1].equals(s2[0]) && s2[1].equals(s3[0])) {
          result.add(s1[0] + " " + s2[0] + " " + s3[0] + " " + s3[1]);
        }
      }
    }
  }
  return result;
}       

它需要输入3个bigrams的ArrayLists并进行比较。如果第一个数组列表中的第二个单词与第二个数组列表中的单词匹配,则它们会创建一个句子。

示例:

1st Array List: he ate
2nd Array List: ate two
3rd Array List: two apples

创造了一个他吃了两个苹果的句子。但此功能仅限于3个ArrayLists。我想让它更健壮,所以它会接受一个2d ArrayList的字符串,其中每个ArrayList都是一个bigrams的集合,并将检查所有可能的bigrams匹配。有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

字符串的2D ArrayListArrayList<ArrayList<String>>。然后,您只需要更改循环以循环遍历所有其他ArrayLists。我不会告诉你如何做到这一点(因为这看起来非常像家庭作业),但你应该能够很容易地弄明白:)