diff options
| author | kr.angelov <kr.angelov@gmail.com> | 2014-06-17 06:57:12 +0000 |
|---|---|---|
| committer | kr.angelov <kr.angelov@gmail.com> | 2014-06-17 06:57:12 +0000 |
| commit | fe49ddf16d132eb0b9af299d4ab6c8da5c1cacb9 (patch) | |
| tree | 511ac7223435bcfb821ea8f614ebb7ca741212e3 /src | |
| parent | 99449161271f08e8a48ea71cae86ad9bd0e1e828 (diff) | |
now the named entities recognizer returns dictionary entries if the name is known
Diffstat (limited to 'src')
3 files changed, 30 insertions, 3 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); } diff --git a/src/ui/android/src/org/grammaticalframework/ui/android/Translator.java b/src/ui/android/src/org/grammaticalframework/ui/android/Translator.java index 4cda887af..4643eaf4e 100644 --- a/src/ui/android/src/org/grammaticalframework/ui/android/Translator.java +++ b/src/ui/android/src/org/grammaticalframework/ui/android/Translator.java @@ -495,7 +495,7 @@ public class Translator { long t1 = System.currentTimeMillis(); mConcr = mGrammarLoader.getGrammar().getLanguages().get(mLanguage.getConcrete()); mConcr.load(in); - mConcr.addLiteral("Symb", new NercLiteralCallback()); + mConcr.addLiteral("PN", new NercLiteralCallback(mGrammarLoader.getGrammar(), mConcr)); long t2 = System.currentTimeMillis(); Log.d(TAG, name + " loaded ("+(t2-t1)+" ms)"); } catch (FileNotFoundException e) { |
