private boolean isOneOf(Word word, AnalysisFragment fragment, String[] patterns) { for (String p : patterns) { if (word.matches(p, false, false)) return true; } return false; }
/** * ******************************************************************* * * <p>Calculating the actual distance between two words. This is done the following way: * * <p>- Disregard all words in the pattern, we only count the words between - Add 1 for minor * words (like the, a, on etc.) - Add 10 for major words (typically verbs, nouns and adjectives) * * @param w - first word * @param w2 - last word * @param fragment - for recursion * @param patterns * @return */ private int calculateDistance(int w, int w2, AnalysisFragment fragment, String[] patterns) { List<Word> words = fragment.getWords(); int distance = 0; // Statement to make pattern sequence irrelevant; if (w2 < w) { int temp = w; w = w2; w2 = temp; } for (int i = w + 1; i < w2; i++) { Word word = words.get(i); // System.out.println(word.display()); if (!isOneOf(word, fragment, patterns)) distance += (word.isMinor() ? 1 : 10); } return distance; }