private void findSpecs() throws TeEngineMlException, RuleBaseException { this.specs = new LinkedHashSet<RuleSubstituteNodeSpecification<T>>(); for (ExtendedNode node : TreeIterator.iterableTree(treeAndParentMap.getTree())) { if (isRelevantNode(node)) { if (InfoObservations.infoHasLemma(node.getInfo())) { LemmaAndPos lemmaAndPos = new LemmaAndPos( InfoGetFields.getLemma(node.getInfo()), InfoGetFields.getPartOfSpeechObject(node.getInfo())); ImmutableSet<T> rules = getRulesForLemmaAndPos(lemmaAndPos); for (T rule : rules) { if (isRelevantRule(rule)) { NodeInfo newNodeInfo = new DefaultNodeInfo( rule.getRhsLemma(), rule.getRhsLemma(), node.getInfo().getNodeInfo().getSerial(), node.getInfo().getNodeInfo().getNamedEntityAnnotation(), new DefaultSyntacticInfo(rule.getRhsPos())); RuleSubstituteNodeSpecification<T> spec = createSpec(node, newNodeInfo, ruleBaseName, rule); // new RuleSubstituteNodeSpecification<T>(node, newNodeInfo, // node.getInfo().getAdditionalNodeInformation(), rule.getConfidence(), ruleBaseName, // rule); addAdditionalDescription(spec, rule); specs.add(spec); } } } } } }
protected boolean ruleLhsEqualsRhs(T rule) { boolean ret = false; boolean lemmasAreEqual = false; if (Constants.USE_ADVANCED_EQUALITIES) { lemmasAreEqual = AdvancedEqualities.lemmasEqual(rule.getLhsLemma(), rule.getRhsLemma()); } else { lemmasAreEqual = Equalities.lemmasEqual(rule.getLhsLemma(), rule.getRhsLemma()); } boolean posesAreEqual = false; if (Constants.USE_ADVANCED_EQUALITIES) { posesAreEqual = AdvancedEqualities.posEqual(rule.getLhsPos(), rule.getRhsPos()); } else { posesAreEqual = Equalities.posEqual(rule.getLhsPos(), rule.getRhsPos()); } if (lemmasAreEqual && posesAreEqual) { ret = true; } return ret; }