summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authoraarne <aarne@chalmers.se>2014-04-01 16:24:35 +0000
committeraarne <aarne@chalmers.se>2014-04-01 16:24:35 +0000
commitd4cbadb6addabd90813b1d8bc8947d5240f002dd (patch)
treea06498f94ca1fad09819229bc6ac2c282c779e61 /src
parent23c9a042cb69fc7f2a058b752f5248528f74bc2c (diff)
use chunking before morpho lookup in backup parsing ; show results with unknown linearizations in darkest red
Diffstat (limited to 'src')
-rw-r--r--src/ui/android/src/org/grammaticalframework/ui/android/ConversationView.java13
-rw-r--r--src/ui/android/src/org/grammaticalframework/ui/android/Translator.java29
2 files changed, 28 insertions, 14 deletions
diff --git a/src/ui/android/src/org/grammaticalframework/ui/android/ConversationView.java b/src/ui/android/src/org/grammaticalframework/ui/android/ConversationView.java
index 2e848ef9d..07e401ef8 100644
--- a/src/ui/android/src/org/grammaticalframework/ui/android/ConversationView.java
+++ b/src/ui/android/src/org/grammaticalframework/ui/android/ConversationView.java
@@ -104,17 +104,20 @@ public class ConversationView extends ScrollView {
mInflater.inflate(R.layout.second_person_worst_utterance, mContent, false) ;
text = text.subSequence(2, text.length()) ;
}
+
+ // parse error or unknown translations (in []) present, darkest red colour
+ else if (text.toString().contains("parse error:") || text.toString().contains("[")) {
+ view = (TextView)
+ mInflater.inflate(R.layout.second_person_worst_utterance, mContent, false) ;
+ }
+
// parse by chunks, marked by *, red colour
else if (text.charAt(0) == '*') {
view = (TextView)
mInflater.inflate(R.layout.second_person_chunk_utterance, mContent, false) ;
text = text.subSequence(2, text.length()) ;
}
- // parse error or unknown translations (in []) present, red colour
- else if (text.toString().contains("parse error:") || text.toString().contains("[")) {
- view = (TextView)
- mInflater.inflate(R.layout.second_person_worst_utterance, mContent, false) ;
- }
+
// parse by domain grammar, marked by +, green colour
else if (text.charAt(0) == '+') {
view = (TextView)
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 2cbbd9f12..61e2437b4 100644
--- a/src/ui/android/src/org/grammaticalframework/ui/android/Translator.java
+++ b/src/ui/android/src/org/grammaticalframework/ui/android/Translator.java
@@ -267,19 +267,30 @@ public class Translator {
public String translateWord(String input) {
- List<MorphoAnalysis> morphos = lookupMorpho(input) ;
+ String output = "[" + input + "]" ; // if all else fails, return the word itself in brackets
+ Concr sourceLang = getSourceConcr() ;
+ Concr targetLang = getTargetConcr() ;
- String output = "[" + input + "]" ;
+ String lowerinput = input.toLowerCase() ; // also consider lower-cased versions of the word
- Concr targetLang = getTargetConcr();
+ try {
+ Expr expr = sourceLang.parseBest("Chunk", input) ; // try parse as chunk
+ output = targetLang.linearize(expr);
+ return output ;
+ } catch (ParseError e) { // if this fails
+
+ List<MorphoAnalysis> morphos = lookupMorpho(input) ; // lookup morphological analyses
+
+ morphos.addAll(lookupMorpho(lowerinput)) ; // including the analyses of the lower-cased word
- for (MorphoAnalysis ana : morphos) {
- if (targetLang.hasLinearization(ana.getLemma())) {
- output = targetLang.linearize(Expr.readExpr(ana.getLemma())) ;
- break ;
+ for (MorphoAnalysis ana : morphos) {
+ if (targetLang.hasLinearization(ana.getLemma())) { // check that the word has linearization in target
+ output = targetLang.linearize(Expr.readExpr(ana.getLemma())) ;
+ break ; // if yes, don't search any more
}
- }
- return output ;
+ }
+ return output ;
+ }
}
public String parseByLookup(String input) {