Search in sources :

Example 6 with Unify

use of nars.term.subst.Unify in project narchy by automenta.

the class NLPGen method train.

private void train(String natural, Task t) {
    Compound pattern = (Compound) (index.get(t.term(), true).term());
    rules.add((tt, freq, conf, tense) -> {
        if (timeMatch(t, tense)) {
            if (Math.abs(t.freq() - freq) < 0.33f) {
                if (Math.abs(t.conf() - conf) < 0.33f) {
                    final String[] result = { null };
                    Unify u = new Unify(VAR_PATTERN, terminal.random(), Param.UnificationStackMax, terminal.matchTTLmean.intValue()) {

                        @Override
                        public void tryMatch() {
                            final String[] r = { natural };
                            xy.forEach((x, y) -> {
                                String var = x.toString();
                                if (!var.startsWith("%"))
                                    return;
                                // HACK conversion between normalized pattern vars and the vars used in the input pattern
                                var = String.valueOf(((char) (var.charAt(1) - '1' + 'A')));
                                r[0] = r[0].replace(var, y.toString());
                            });
                            result[0] = r[0];
                        }
                    };
                    u.unify(pattern, tt, true);
                    if (result[0] != null)
                        return result[0];
                }
            }
        }
        return null;
    });
}
Also used : Unify(nars.term.subst.Unify) Compound(nars.term.Compound)

Aggregations

Unify (nars.term.subst.Unify)6 XorShift128PlusRandom (jcog.math.random.XorShift128PlusRandom)3 Compound (nars.term.Compound)3 AtomicBoolean (java.util.concurrent.atomic.AtomicBoolean)2 Term (nars.term.Term)2 Random (java.util.Random)1 Combinations (jcog.math.Combinations)1 Ellipsis (nars.derive.match.Ellipsis)1 Termutator (nars.derive.mutate.Termutator)1 PatternIndex (nars.index.term.PatternIndex)1 ShuffledSubterms (nars.subterm.ShuffledSubterms)1