From fe49ddf16d132eb0b9af299d4ab6c8da5c1cacb9 Mon Sep 17 00:00:00 2001 From: "kr.angelov" Date: Tue, 17 Jun 2014 06:57:12 +0000 Subject: now the named entities recognizer returns dictionary entries if the name is known --- .../pgf/NercLiteralCallback.java | 30 ++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) (limited to 'src/runtime/java/org') 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); } -- cgit v1.2.3