package edu.stanford.nlp.ling.tokensregex;
import edu.stanford.nlp.ling.SentenceUtils;
import edu.stanford.nlp.util.CoreMap;
import junit.framework.TestCase;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
/**
* Tests triggering of sequence patterns
*
* @author Angel Chang
*/
public class SequencePatternTriggerTest extends TestCase {
public void testSimpleTrigger() throws Exception {
List<TokenSequencePattern> patterns = new ArrayList<TokenSequencePattern>();
patterns.add(TokenSequencePattern.compile("which word should be matched"));
MultiPatternMatcher.SequencePatternTrigger<CoreMap> trigger =
new MultiPatternMatcher.BasicSequencePatternTrigger<CoreMap>(
new CoreMapNodePatternTrigger(patterns));
Collection<SequencePattern<CoreMap>> triggered = trigger.apply(SentenceUtils.toCoreLabelList("one", "two", "three"));
assertEquals(0, triggered.size());
triggered = trigger.apply(SentenceUtils.toCoreLabelList("which"));
assertEquals(0, triggered.size());
triggered = trigger.apply(SentenceUtils.toCoreLabelList("which", "word", "should", "be", "matched"));
assertEquals(1, triggered.size());
}
public void testOptionalTrigger() throws Exception {
List<TokenSequencePattern> patterns = new ArrayList<TokenSequencePattern>();
patterns.add(TokenSequencePattern.compile("which word should? be matched"));
MultiPatternMatcher.SequencePatternTrigger<CoreMap> trigger =
new MultiPatternMatcher.BasicSequencePatternTrigger<CoreMap>(
new CoreMapNodePatternTrigger(patterns));
Collection<SequencePattern<CoreMap>> triggered = trigger.apply(SentenceUtils.toCoreLabelList("one", "two", "three"));
assertEquals(0, triggered.size());
triggered = trigger.apply(SentenceUtils.toCoreLabelList("which"));
assertEquals(0, triggered.size());
triggered = trigger.apply(SentenceUtils.toCoreLabelList("matched"));
assertEquals(1, triggered.size());
triggered = trigger.apply(SentenceUtils.toCoreLabelList("should"));
assertEquals(0, triggered.size());
triggered = trigger.apply(SentenceUtils.toCoreLabelList("which", "word", "be"));
assertEquals(0, triggered.size());
triggered = trigger.apply(SentenceUtils.toCoreLabelList("which", "word", "be", "matched"));
assertEquals(1, triggered.size());
triggered = trigger.apply(SentenceUtils.toCoreLabelList("which", "word", "should", "be", "matched"));
assertEquals(1, triggered.size());
}
public void testOptionalTrigger2() throws Exception {
List<TokenSequencePattern> patterns = new ArrayList<TokenSequencePattern>();
patterns.add(TokenSequencePattern.compile("which word should? be matched?"));
MultiPatternMatcher.SequencePatternTrigger<CoreMap> trigger =
new MultiPatternMatcher.BasicSequencePatternTrigger<CoreMap>(
new CoreMapNodePatternTrigger(patterns));
Collection<SequencePattern<CoreMap>> triggered = trigger.apply(SentenceUtils.toCoreLabelList("one", "two", "three"));
assertEquals(0, triggered.size());
triggered = trigger.apply(SentenceUtils.toCoreLabelList("which"));
assertEquals(1, triggered.size());
triggered = trigger.apply(SentenceUtils.toCoreLabelList("matched"));
assertEquals(0, triggered.size());
triggered = trigger.apply(SentenceUtils.toCoreLabelList("should"));
assertEquals(0, triggered.size());
triggered = trigger.apply(SentenceUtils.toCoreLabelList("which", "word", "be"));
assertEquals(1, triggered.size());
triggered = trigger.apply(SentenceUtils.toCoreLabelList("which", "word", "should", "be", "matched"));
assertEquals(1, triggered.size());
}
public void testOptionalTrigger3() throws Exception {
List<TokenSequencePattern> patterns = new ArrayList<TokenSequencePattern>();
patterns.add(TokenSequencePattern.compile("which word ( should | would ) be matched?"));
MultiPatternMatcher.SequencePatternTrigger<CoreMap> trigger =
new MultiPatternMatcher.BasicSequencePatternTrigger<CoreMap>(
new CoreMapNodePatternTrigger(patterns));
Collection<SequencePattern<CoreMap>> triggered = trigger.apply(SentenceUtils.toCoreLabelList("one", "two", "three"));
assertEquals(0, triggered.size());
triggered = trigger.apply(SentenceUtils.toCoreLabelList("which"));
assertEquals(1, triggered.size());
triggered = trigger.apply(SentenceUtils.toCoreLabelList("matched"));
assertEquals(0, triggered.size());
triggered = trigger.apply(SentenceUtils.toCoreLabelList("should"));
assertEquals(0, triggered.size());
triggered = trigger.apply(SentenceUtils.toCoreLabelList("which", "word", "be"));
assertEquals(1, triggered.size());
triggered = trigger.apply(SentenceUtils.toCoreLabelList("which", "word", "should", "be", "matched"));
assertEquals(1, triggered.size());
}
public void testOptionalTrigger4() throws Exception {
List<TokenSequencePattern> patterns = new ArrayList<TokenSequencePattern>();
patterns.add(TokenSequencePattern.compile("which word should? be matched{1,2}"));
MultiPatternMatcher.SequencePatternTrigger<CoreMap> trigger =
new MultiPatternMatcher.BasicSequencePatternTrigger<CoreMap>(
new CoreMapNodePatternTrigger(patterns));
Collection<SequencePattern<CoreMap>> triggered = trigger.apply(SentenceUtils.toCoreLabelList("one", "two", "three"));
assertEquals(0, triggered.size());
triggered = trigger.apply(SentenceUtils.toCoreLabelList("which"));
assertEquals(0, triggered.size());
triggered = trigger.apply(SentenceUtils.toCoreLabelList("matched"));
assertEquals(1, triggered.size());
triggered = trigger.apply(SentenceUtils.toCoreLabelList("should"));
assertEquals(0, triggered.size());
triggered = trigger.apply(SentenceUtils.toCoreLabelList("which", "word", "be"));
assertEquals(0, triggered.size());
triggered = trigger.apply(SentenceUtils.toCoreLabelList("which", "word", "be", "matched"));
assertEquals(1, triggered.size());
triggered = trigger.apply(SentenceUtils.toCoreLabelList("which", "word", "should", "be", "matched"));
assertEquals(1, triggered.size());
}
public void testOptionalTrigger5() throws Exception {
List<TokenSequencePattern> patterns = new ArrayList<TokenSequencePattern>();
patterns.add(TokenSequencePattern.compile("which word should? be matched{1,8}"));
MultiPatternMatcher.SequencePatternTrigger<CoreMap> trigger =
new MultiPatternMatcher.BasicSequencePatternTrigger<CoreMap>(
new CoreMapNodePatternTrigger(patterns));
Collection<SequencePattern<CoreMap>> triggered = trigger.apply(SentenceUtils.toCoreLabelList("one", "two", "three"));
assertEquals(0, triggered.size());
triggered = trigger.apply(SentenceUtils.toCoreLabelList("which"));
assertEquals(1, triggered.size());
triggered = trigger.apply(SentenceUtils.toCoreLabelList("matched"));
assertEquals(0, triggered.size());
triggered = trigger.apply(SentenceUtils.toCoreLabelList("should"));
assertEquals(0, triggered.size());
triggered = trigger.apply(SentenceUtils.toCoreLabelList("which", "word", "be"));
assertEquals(1, triggered.size());
triggered = trigger.apply(SentenceUtils.toCoreLabelList("which", "word", "be", "matched"));
assertEquals(1, triggered.size());
triggered = trigger.apply(SentenceUtils.toCoreLabelList("which", "word", "should", "be", "matched"));
assertEquals(1, triggered.size());
}
}