1
0
forked from GitHub/gf-core

filter out identical duplicated translations from the Android UI

This commit is contained in:
kr.angelov
2014-06-18 09:17:33 +00:00
parent c1eb47a67a
commit b41a8a1c16
2 changed files with 47 additions and 22 deletions

View File

@@ -1,7 +1,9 @@
package org.grammaticalframework.ui.android; package org.grammaticalframework.ui.android;
import java.io.Serializable; import java.io.Serializable;
import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set;
import android.app.Activity; import android.app.Activity;
import android.content.Intent; import android.content.Intent;
@@ -286,8 +288,27 @@ public class MainActivity extends Activity {
private void handleSpeechInput(final String input) { private void handleSpeechInput(final String input) {
final List<MorphoAnalysis> list = mTranslator.lookupMorpho(input); final List<MorphoAnalysis> list = mTranslator.lookupMorpho(input);
mConversationView.updateLastUtterance(input);
new AsyncTask<Void,Void,Pair<String,List<ExprProb>>>() {
@Override
protected void onPreExecute() {
showProgressBar();
}
@Override
protected Pair<String,List<ExprProb>> doInBackground(Void... params) {
return mTranslator.translate(input);
}
@Override
protected void onPostExecute(Pair<String,List<ExprProb>> res) {
String text = res.first;
List<ExprProb> transl = res.second;
Object alts = null;
// filter out duplicates // filter out duplicates
int i = 0; int i = 0;
if (list.size() > 0) {
while (i < list.size()) { while (i < list.size()) {
MorphoAnalysis an = list.get(i); MorphoAnalysis an = list.get(i);
boolean found = false; boolean found = false;
@@ -304,23 +325,27 @@ public class MainActivity extends Activity {
i++; i++;
} }
} }
alts = list;
mConversationView.updateLastUtterance(input); } else {
new AsyncTask<Void,Void,Pair<String,List<ExprProb>>>() { Set<String> strings = new HashSet<String>();
@Override while (i < transl.size()) {
protected void onPreExecute() { String s = mTranslator.linearize(transl.get(i).getExpr());
showProgressBar(); if (s.length() > 0 &&
(s.charAt(0) == '%' || s.charAt(0) == '*' || s.charAt(0) == '+')) {
s = s.substring(2);
} }
@Override if (strings.contains(s))
protected Pair<String,List<ExprProb>> doInBackground(Void... params) { transl.remove(i);
return mTranslator.translate(input); else {
strings.add(s);
i++;
}
}
alts = transl;
} }
@Override
protected void onPostExecute(Pair<String,List<ExprProb>> res) {
String text = res.first;
Object alts = (list.size() == 0) ? res.second : list;
if (DBG) Log.d(TAG, "Speaking: " + res.first); if (DBG) Log.d(TAG, "Speaking: " + res.first);
CharSequence text2 = CharSequence text2 =
mConversationView.addSecondPersonUtterance(input, text, alts); mConversationView.addSecondPersonUtterance(input, text, alts);