use of org.grupolys.samulan.rule.Rule in project uuusa by aghie.
the class RuleManager method getOperations.
/**
* @param dg
* @param address
* @return
*/
public List<Operation> getOperations(SentimentDependencyGraph dg, short address) {
SentimentDependencyNode currentNode = dg.getNode(address);
List<Operation> operations = new ArrayList<Operation>();
for (Rule r : rules) {
if (r.match(dg, currentNode)) {
Operation o = r.getOperation();
// System.out.println("currentNode: "+currentNode+" r: "+r+" o: "+o);
if (dg.getNode(address).getSi() == null)
dg.getNode(address).setSi(new SentimentInformation());
if (!o.getOperationName().equals(Operation.DEFAULT)) {
dg.getNode(address).getSi().setType(o.getOperationName());
if (o.getStrategy() instanceof NChildrenStrategy) {
((NChildrenStrategy) o.getStrategy()).setReference(address);
}
if (o.getStrategy() instanceof FirstSubjectiveChildrenStrategy) {
((FirstSubjectiveChildrenStrategy) o.getStrategy()).setReference(address);
}
}
operations.add(r.getOperation());
}
}
if (operations.contains(getOperation(Operation.DEFAULT)) && operations.size() > 1)
operations.remove(getOperation(Operation.DEFAULT));
return operations;
}
use of org.grupolys.samulan.rule.Rule in project uuusa by aghie.
the class RuleManager method addRules.
private void addRules(Element fstElement, Set<String> sentiForms, Set<String> postags, Set<String> dependencies, short levelsup, short priority, Set<String> validHead) {
for (String sentiForm : sentiForms) {
Operation o = getOperationFinal(this.getXMLNodeValue(fstElement, TYPE), sentiForm);
if (o != null) {
Set<String> patternForms = new HashSet<String>();
Set<Pattern> patterns = new HashSet<Pattern>();
if (isNonRegexForm(sentiForm)) {
patterns = new HashSet<Pattern>(Arrays.asList(Pattern.compile(sentiForm)));
} else {
patternForms = new HashSet<String>(Arrays.asList(sentiForm));
}
Rule r = new Rule(patterns, patternForms, postags, dependencies, levelsup, priority, validHead, o);
this.addRule(r);
}
}
}
Aggregations