2017-01-09 4 views
-1

Я просто разработал базовый английский язык для словаря Чавакано (родной язык) в андроиде.Алгоритм перевода для моего приложения

Ну, я уже закончил строку Tokenization, в которой для каждого слова, которое было Tokenize, приложение выберет соответствующий эквивалент в базе данных.

Чтобы визуально понять это, я собираюсь объяснить его далее, используя диаграммы и коды.

БАЗ ДАННЫЕ:

_id | english | chavacano 
1  I   yo 
2  you   tú 
3 I love you ta ama yo contigo 

Главная Activity.java

DataBaseHelper myDatabaseHelper = new DataBaseHelper(this); 

//Declared EditText 
TextView view = (TextView) getView().findViewById(R.id.editText4); 
TextView view2 = (TextView) getView().findViewById(R.id.editText3); 
enter code here 

//First check if text input is phrase and store to String but if not return false 

myDatabaseHelper.openDatabase(); 
String preText = myDatabaseHelper.Translator(view2.getText().toString()); 
    myDatabaseHelper.closeDataBase(); 

//Check if bool is true , true if the text is translated but if false means there's no corresponding translation for it so do the String Tokenization 

if(myDatabaseHelper.indicator==true{ 
view.setText(preText.getText()); 
} 

else if (myDatabaseHelper.indicator==false{ 
//Lets do the string tokenization 
StringTokenizer st = new StringTokenizer(view2.getText().toString()); 
while (st.hasMoreTokens()) { 
       myDatabaseHelper.openDatabase(); 

       String text = myDatabaseHelper.translator(st.nextToken().toString()); //this is the method to query 

       myDatabaseHelper.closeDataBase(); 


        sb.append(text); 
        sb.append(" "); 

      } 
      view.setText(sb.toString()); 
} 

Код для DatabaseHelper.java

boolean indicator=false; 
public String translator(String answer) { 

    String translated="x"; 
    SQLiteDatabase db = this.getReadableDatabase(); 
    Cursor c = db.rawQuery("SELECT chavacano FROM dictionary where english'"+answer+"'", null); 
    if(c.moveToFirst()){ 
     do{ 


      translated= c.getString(0); 



     }while(c.moveToNext()); 
     indicator=false; 
    } 
    else{ 
     indicator=true; 
     return answer; 
    } 
    c.close(); 
    db.close(); 

return translated; 
} 

Так вот мы идем, я мог перевести Я люблю тебя в тот ama you contigo Но если я поместил другой текст в Я люблю тебя. Как я люблю тебя Девочка

Будет переведена на «yo love tu girl» И как я могу получить «ta ama you contigo Girl»?

Что вам нужно сделать или какой алгоритм следует добавить, чтобы сделать это приложение более точным? Одна из вещей, что я также думал использую Разделить строку, если текст содержит (AND, punctations знаков) и так далее

Спасибо

ответ

3

Почему бы вам не использовать переводчик Apis, который делает намного лучше то, что вы сделали

его просто как ниже линии

GoogleAPI.setKey(/* Enter your API key here */); 

String translatedText = Translate.DEFAULT.execute("Bonjour le monde", Language.FRENCH, Language.ENGLISH); 

см эту ссылку для андроид переводчик https://developers.google.com/translate/

ссылку Демонстрационный проект See here

полный пример есть в этом блоге http://android-er.blogspot.in/2009/10/androidtranslate-using-google-translate.html

+0

Как я уже сказал, это родной язык. Этот язык недоступен в google tranlsate api. Если это доступно, почему я сделал бы это. Итак, я должен разработать свой собственный перевод. Есть ли решение в моей проблеме? Спасибо –

2

Как вы уже выяснили для себя, перевод текста, просто отображение слов и фраз на основе шаблонов или справочной таблицы не дает хорошее Результаты.

Однако сделать достойную работу по переводу очень сложно. Если вы начали с нуля (и хороший учебник), вам понадобится много усилий.

Таким образом, более практичный подход - либо использовать существующую интеграцию Google Translate, либо исследовать альтернативные сторонние альтернативные варианты ... для Android.

Если это студенческий проект, то я бы посоветовал найти хороший учебник и прочитать его. Кроме того, обсудите с вашим консультантом по проекту, насколько хорошо «хорошо» ... потому что делать действительно хорошую работу, скорее всего, невозможно.

(Мы не можем объяснить, как сделать перевод языка в ответ на переполнение стека. Тема слишком велика.)

Смежные вопросы