@Override public List<Rule> annotate(List<String> tokens) { if(tokens.size() == 1) { String s = tokens.get(0).toLowerCase(); Rule r = parseMonth(s); if(r == null) r = parseDay(s); if(r == null) r = parseTime(s); if(r != null) return Collections.singletonList(r); else return parseNumber(s); } return Collections.emptyList(); }
public static Model makeReminderModel(){ List<Rule> rules = new LinkedList<>(); rules.addAll(Rules.BASE); rules.addAll(Rules.fromFile("model/reminders.rules")); rules.addAll(DateTimeAnnotator.rules()); List<Annotator> annotators = Arrays.asList( TokenAnnotator.INSTANCE, PhraseAnnotator.INSTANCE, NumberAnnotator.INSTANCE, DateTimeAnnotator.INSTANCE ); Grammar grammar = new Grammar(rules, "$ROOT"); Parser parser = new Parser(grammar, new BasicTokenizer(), annotators); return new Model(parser); }
@Test void annotate() { Annotator annotator = new TokenAnnotator(); List<String> tokens = Collections.singletonList("Single"); String expected = "Single"; List<Rule> actual = annotator.annotate(tokens); assertEquals(1, actual.size()); assertEquals("$TOKEN", actual.get(0).getLHS()); assertEquals(expected, actual.get(0).getRHS().toString()); assertEquals(expected, actual.get(0) .getSemantics().apply(null) .get(0).get(SemanticUtils.KEY_UNNAMED));; } }
@Test void annotate() { Annotator annotator = new NumberAnnotator(); List<String> tokens = Collections.singletonList("123"); List<Rule> actual = annotator.annotate(tokens); assertEquals(1, actual.size()); assertEquals("$NUMBER", actual.get(0).getLHS()); assertEquals("123", actual.get(0).getRHS().toString()); assertEquals(123.0, actual.get(0) .getSemantics().apply(null) .get(0).get(SemanticUtils.KEY_UNNAMED)); } }
@Test void annotate() { Annotator annotator = new PhraseAnnotator(); List<String> tokens = Arrays.asList( "The", "boy", "who", "cried" ); String expected = "The boy who cried"; List<Rule> actual = annotator.annotate(tokens); assertEquals(1, actual.size()); assertEquals("$PHRASE", actual.get(0).getLHS()); assertEquals(expected, actual.get(0).getRHS().toString()); assertEquals(expected, actual.get(0) .getSemantics().apply(null) .get(0).get(SemanticUtils.KEY_UNNAMED));; } }