public SequenceMatchResult<CoreMap> apply(SequenceMatchResult<CoreMap> matchResult, int... groups) BasicSequenceMatchResult<CoreMap> res = matchResult.toBasicSequenceMatchResult(); List<? extends CoreMap> elements = matchResult.elements(); List<CoreMap> mergedElements = new ArrayList<>(); res.elements = mergedElements; Collections.sort(orderedGroups); for (int group:orderedGroups) { int groupStart = matchResult.start(group); if (groupStart >= last) { int groupEnd = matchResult.end(group); if (groupEnd - groupStart >= 1) { CoreMap merged = aggregator.merge(elements, groupStart, groupEnd); while (mergedGroup < res.matchedGroups.length) { if (res.matchedGroups[mergedGroup] != null) { if (res.matchedGroups[mergedGroup].matchBegin == matchResult.start(group) && res.matchedGroups[mergedGroup].matchEnd == matchResult.end(group)) { res.matchedGroups[mergedGroup].matchBegin = res.matchedGroups[group].matchBegin; res.matchedGroups[mergedGroup].matchEnd = res.matchedGroups[group].matchEnd; } else if (res.matchedGroups[mergedGroup].matchEnd <= matchResult.end(group)) { res.matchedGroups[mergedGroup] = null; } else { offset = matchResult.end(group) - res.matchedGroups[group].matchEnd;
private void annotateMatched(List<CoreLabel> tokens) { List<SequenceMatchResult<CoreMap>> matched = multiPatternMatcher.findNonOverlapping(tokens); for (SequenceMatchResult<CoreMap> m:matched) { Entry entry = patternToEntry.get(m.pattern()); int start = m.start(g); int end = m.end(g); String str = m.group(g); if (commonWords.contains(str)) { if (verbose) { logger.info("Not annotating (common word) '" + str + "': " + StringUtils.joinFields(m.groupNodes(g), CoreAnnotations.NamedEntityTagAnnotation.class) + " with " + entry.getTypeDescription() + ", sentence is '" + StringUtils.joinWords(tokens, " ") + "'"); logger.info("Not annotating '" + m.group(g) + "': " + StringUtils.joinFields(m.groupNodes(g), CoreAnnotations.NamedEntityTagAnnotation.class) + " with " + entry.getTypeDescription() + ", sentence is '" + StringUtils.joinWords(tokens, " ") + "'");
@Override public MatchedExpression apply(SequenceMatchResult<CoreMap> matched) { MatchedExpression te = extractor.createMatchedExpression(null, Interval.toInterval(matched.start(group), matched.end(group), Interval.INTERVAL_OPEN_END)); if (Double.isNaN(te.priority)) { te.priority = matched.priority(); } if (Double.isNaN(te.weight)) { te.weight = matched.score(); } if (this.group != 0) { // Save context so value evaluation can happen te.context = matched.toBasicSequenceMatchResult(); } return te; } }
public SequenceMatchResult<T> apply(SequenceMatchResult<T> matchResult, int... groups) { for (int group:groups) { int groupStart = matchResult.start(group); if (groupStart >=0) { int groupEnd = matchResult.end(group); ChunkAnnotationUtils.annotateChunks(matchResult.elements(), groupStart, groupEnd, attributes); } } return matchResult; }
/** * Append to replacement list the matched group with the specified group id * @param match Current matched sequence * @param list replacement list */ public void append(SequenceMatchResult<T> match, List list) { list.addAll(match.groupNodes(group)); } }
public SequenceMatchResult<T> apply(SequenceMatchResult<T> seqMatchResult, int... groups) { SequenceMatcher<T> matcher = pattern.getMatcher(seqMatchResult.elements()); if (matcher.find()) { return matcher; } else { return null; } } }
public Value evaluate(Env env, Object... args) { if (args != null && args.length > 0) { if (args[0] instanceof SequenceMatchResult) { SequenceMatchResult mr = (SequenceMatchResult) args[0]; Object v = get(); if (v instanceof String) { return new PrimitiveValue("MATCHED_GROUP_INFO", mr.groupInfo((String) v)); } else if (v instanceof Integer) { return new PrimitiveValue("MATCHED_GROUP_INFO", mr.groupInfo((Integer) v)); } else { throw new UnsupportedOperationException("String match result must be referred to by group id"); } } } return null; } }
public int compare(MatchResult e1, MatchResult e2) { double s1 = 0; if (e1 instanceof SequenceMatchResult) { s1 = ((SequenceMatchResult) e1).score(); }; double s2 = 0; if (e2 instanceof SequenceMatchResult) { s2 = ((SequenceMatchResult) e2).score(); }; if (s1 == s2) { return 0; } else { return (s1 > s2)? -1:1; } } };
for (SequenceMatchResult<CoreMap> matched : answers) { out.println(" Match #" + ++j); for (int k = 0; k <= matched.groupCount(); k++) { out.println(" group " + k + " = " + matched.group(k));
public int compare(MatchResult e1, MatchResult e2) { int o1 = 0; if (e1 instanceof SequenceMatchResult) {o1 = ((SequenceMatchResult) e1).getOrder(); }; int o2 = 0; if (e2 instanceof SequenceMatchResult) {o2 = ((SequenceMatchResult) e2).getOrder(); }; if (o1 == o2) { return 0; } else { return (o1 < o2)? -1:1; } } };
public SequenceMatchResult<T> apply(SequenceMatchResult<T> matchResult, int... groups) { for (int group:groups) { int groupStart = matchResult.start(group); if (groupStart >=0) { int groupEnd = matchResult.end(group); ChunkAnnotationUtils.annotateChunks(matchResult.elements(), groupStart, groupEnd, attributes); } } return matchResult; }
/** * Append to replacement list the matched group with the specified group name * @param match Current matched sequence * @param list replacement list */ public void append(SequenceMatchResult<T> match, List list) { list.addAll(match.groupNodes(groupName)); } }
public SequenceMatchResult<T> apply(SequenceMatchResult<T> seqMatchResult, int... groups) { SequenceMatcher<T> matcher = pattern.getMatcher(seqMatchResult.elements()); if (matcher.find()) { return matcher; } else { return null; } } }
public Value evaluate(Env env, Object... args) { if (args != null && args.length > 0) { if (args[0] instanceof SequenceMatchResult) { SequenceMatchResult mr = (SequenceMatchResult) args[0]; Object v = get(); if (v instanceof String) { return new PrimitiveValue("MATCHED_GROUP_INFO", mr.groupInfo((String) v)); } else if (v instanceof Integer) { return new PrimitiveValue("MATCHED_GROUP_INFO", mr.groupInfo((Integer) v)); } else { throw new UnsupportedOperationException("String match result must be referred to by group id"); } } } return null; } }
public int compare(MatchResult e1, MatchResult e2) { double s1 = 0; if (e1 instanceof SequenceMatchResult) { s1 = ((SequenceMatchResult) e1).score(); }; double s2 = 0; if (e2 instanceof SequenceMatchResult) { s2 = ((SequenceMatchResult) e2).score(); }; if (s1 == s2) { return 0; } else { return (s1 > s2)? -1:1; } } };
public int compare(MatchResult e1, MatchResult e2) { int o1 = 0; if (e1 instanceof SequenceMatchResult) {o1 = ((SequenceMatchResult) e1).getOrder(); }; int o2 = 0; if (e2 instanceof SequenceMatchResult) {o2 = ((SequenceMatchResult) e2).getOrder(); }; if (o1 == o2) { return 0; } else { return (o1 < o2)? -1:1; } } };