internal TripletCurioDialogSystem(string lexiconRoot)
 {
     _lexicalParser = new LexicalParser(lexiconRoot);
     _tripletParser = new TripletParser();
     _tripletManager = new CurioManager();
     _nlGenerator = new TripletNLG(TripletManager.Me);
 }
示例#2
0
 internal TripletRule(string pattern, TripletFactory factory, TripletParser owner)
 {
     _pattern = pattern;
     _owner = owner;
     _factory = factory;
     _constraints = createConstraints(pattern);
 }
示例#3
0
 internal PredicateRule(string pattern, PredicateFactory factory, TripletParser owner)
 {
     _pattern = pattern;
     _owner = owner;
     _factory = factory;
     _constraints = getPredicateConstraints(pattern);
 }
        internal TripletRuleConstraint(string pattern, TripletParser owner)
        {
            _pattern = pattern;
            _owner = owner;
            
            var isWordGroup = pattern.StartsWith("{") && pattern.EndsWith("}");
            var isLexicalType = pattern.StartsWith("[") && pattern.EndsWith("]");
            var isPredicate = pattern.StartsWith("#");
            var isSubject = pattern.StartsWith("+");
            var isTriplet = pattern.StartsWith("@");

            if (isWordGroup)
            {
                Id = pattern.WithoutParentheses();
                _matcher = createWordGroupMatcher(Id, _owner);
            }
            else if (isLexicalType)
            {
                Id = pattern.WithoutParentheses();
                _matcher = createLexicalTypeMatcher(Id);
            }
            else if (isPredicate)
            {
                Id = pattern.Substring(1);
                _matcher = createPredicateMatcher();
            }
            else if (isSubject)
            {
                Id = pattern.Substring(1);
                _matcher = createSubjectMatcher();
                IsMultiMatch = true;
            }
            else if (isTriplet)
            {
                Id = pattern.Substring(1);
                _matcher = createTripletMatcher();
            }
            else
            {
                Id = ".word-" + pattern;
                _matcher = createExactWordMatcher(pattern);
            }
        }
        internal PredicateRuleConstraint(string pattern, TripletParser owner)
        {
            Pattern = pattern;

            var isWordGroup = pattern.StartsWith("{") && pattern.EndsWith("}");
            var isLexicalType = pattern.StartsWith("[") && pattern.EndsWith("]");

            if (isWordGroup)
            {
                CanBeSubstituted = true;
                _matcher = createWordGroupMatcher(pattern.WithoutParentheses(), owner);
            }
            else if (isLexicalType)
            {
                CanBeSubstituted = true;
                _matcher = createLexicalTypeMatcher(pattern.WithoutParentheses());
            }
            else
            {
                CanBeSubstituted = false;
                _matcher = createExactWordMatcher(pattern);
            }
        }
示例#6
0
 /// <summary>
 /// Creates group matcher that matches every word group from the group.
 /// </summary>
 /// <param name="lexicalType">Name of the word group.</param>
 /// <returns>The created matcher.</returns>
 protected Predicate<TripletWordGroup> createWordGroupMatcher(string groupName, TripletParser owner)
 {
     var wordGroup = owner.GetGroup(groupName);
     return g => wordGroup.Contains(g.TextSpan);
 }