summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkr.angelov <kr.angelov@gmail.com>2014-06-17 06:57:12 +0000
committerkr.angelov <kr.angelov@gmail.com>2014-06-17 06:57:12 +0000
commitfe49ddf16d132eb0b9af299d4ab6c8da5c1cacb9 (patch)
tree511ac7223435bcfb821ea8f614ebb7ca741212e3
parent99449161271f08e8a48ea71cae86ad9bd0e1e828 (diff)
now the named entities recognizer returns dictionary entries if the name is known
-rw-r--r--examples/app/Makefile2
-rw-r--r--src/runtime/java/Test.java1
-rw-r--r--src/runtime/java/org/grammaticalframework/pgf/NercLiteralCallback.java30
-rw-r--r--src/ui/android/src/org/grammaticalframework/ui/android/Translator.java2
4 files changed, 31 insertions, 4 deletions
diff --git a/examples/app/Makefile b/examples/app/Makefile
index 31ac95450..a51911396 100644
--- a/examples/app/Makefile
+++ b/examples/app/Makefile
@@ -9,7 +9,7 @@ Phrasebook:
cd ../phrasebook ; make forApp ; cd ../app
S=-s
-GFMKT=mkdir -p $(GFODIR) && gf $S -make -literal=Symb -probs=$(PROBSFILE) -gfo-dir $(GFODIR)
+GFMKT=mkdir -p $(GFODIR) && gf $S -make -literal=PN -probs=$(PROBSFILE) -gfo-dir $(GFODIR)
APP=AppEng.pgf AppBul.pgf AppChi.pgf AppGer.pgf AppSwe.pgf AppHin.pgf AppFin.pgf AppFre.pgf AppIta.pgf AppSpa.pgf AppDut.pgf
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) {