summaryrefslogtreecommitdiff
path: root/src/runtime/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/runtime/java')
-rw-r--r--src/runtime/java/Test.java1
-rw-r--r--src/runtime/java/org/grammaticalframework/pgf/NercLiteralCallback.java30
2 files changed, 29 insertions, 2 deletions
diff --git a/src/runtime/java/Test.java b/src/runtime/java/Test.java
index 77de413b3..7ac11d8a3 100644
--- a/src/runtime/java/Test.java
+++ b/src/runtime/java/Test.java
@@ -18,6 +18,7 @@ public class Test {
System.out.println(gr.getAbstractName());
for (Map.Entry<String,Concr> entry : gr.getLanguages().entrySet()) {
System.out.println(entry.getKey()+" "+entry.getValue()+" "+entry.getValue().getName());
+ entry.getValue().addLiteral("PN", new NercLiteralCallback(gr,entry.getValue()));
}
int count = 10;
diff --git a/src/runtime/java/org/grammaticalframework/pgf/NercLiteralCallback.java b/src/runtime/java/org/grammaticalframework/pgf/NercLiteralCallback.java
index 627cbdd4f..8d206667d 100644
--- a/src/runtime/java/org/grammaticalframework/pgf/NercLiteralCallback.java
+++ b/src/runtime/java/org/grammaticalframework/pgf/NercLiteralCallback.java
@@ -4,6 +4,14 @@ import java.util.Collections;
import java.util.Iterator;
public class NercLiteralCallback implements LiteralCallback {
+ private PGF pgf;
+ private Concr concr;
+
+ public NercLiteralCallback(PGF pgf, Concr concr) {
+ this.pgf = pgf;
+ this.concr = concr;
+ }
+
public CallbackResult match(int lin_idx, String sentence, int offset) {
StringBuilder sbuilder = new StringBuilder();
@@ -29,8 +37,26 @@ public class NercLiteralCallback implements LiteralCallback {
}
if (i > 0) {
- Expr expr = new Expr(sbuilder.toString());
- expr = new Expr("MkSymb", expr);
+ String name = sbuilder.toString();
+ String lemma = null;
+ double prob = 0;
+ for (MorphoAnalysis an : concr.lookupMorpho(name)) {
+ if ("PN".equals(pgf.getFunctionType(an.getLemma()).getCategory()) &&
+ prob < an.getProb()) {
+ lemma = an.getLemma();
+ prob = an.getProb();
+ }
+ }
+
+ Expr expr;
+ if (lemma == null) {
+ expr = new Expr(name);
+ expr = new Expr("MkSymb", expr);
+ expr = new Expr("SymbPN", expr);
+ } else {
+ expr = new Expr(lemma, new Expr[0]);
+ }
+
return new CallbackResult(new ExprProb(expr, 0), end_offset);
}