march alex's blog
          hello,I am march alex
          posts - 52,comments - 7,trackbacks - 0
          在之前我寫過一個(gè)英漢翻譯的java小程序EnglishChineseTranslater,今天在原來的基礎(chǔ)上加了一些改進(jìn)。
          TranalateMaster類用于翻譯一個(gè)文件內(nèi)的所有單詞。
          通過之前講到的文件操作進(jìn)行文件內(nèi)容的讀取,再通過StringTokenizer來分詞,最后一個(gè)一個(gè)的翻譯。
          這里有一個(gè)優(yōu)化,就是通過HashMap來去重,這樣可以優(yōu)化文件中一些單詞重復(fù)出現(xiàn)所消耗的時(shí)間。translateAll函數(shù)翻譯并直接輸出,translateAllLocal函數(shù)翻譯并保存到本地。
          import java.io.BufferedReader;
          import java.io.BufferedWriter;
          import java.io.FileReader;
          import java.io.FileWriter;
          import java.util.HashMap;
          import java.util.StringTokenizer;


          public class TranslateMaster {
              private static HashMap<String, String> map = null;
              
              public static void getWords(String filename) throws Exception {
                  map = new HashMap<String, String>();
                  BufferedReader reader = new BufferedReader(new FileReader(filename));  
                  String line = null;
                  while((line = reader.readLine()) != null){
                      StringTokenizer st = new StringTokenizer(line, ",.-!? \t");
                      while(st.hasMoreElements()) {
                          String key = st.nextToken();
                          if(map.containsKey(key) == false) {
                              try {
                                  String value = EnglishChineseTranslater.getWordName(key) + ": " + EnglishChineseTranslater.getTranslation(key);
                                  map.put(key, value);
                              } catch (Exception e) {
                                  continue;
                              }
                          }
                      }
                  }
                  reader.close();
              }
              
              public static void translateAll(String filename) throws Exception {
                  getWords(filename);
                  BufferedReader reader = new BufferedReader(new FileReader(filename));  
                  String line = null;
                  while((line = reader.readLine()) != null){
                      StringTokenizer st = new StringTokenizer(line, ",.-!? \t");
                      while(st.hasMoreElements()) {
                          String key = st.nextToken();
                          System.out.println(map.get(key));
                      }
                  }
                  reader.close();
              }
              
              public static void translateAllLocal(String inputfilename, String outputfilename) throws Exception {
                  getWords(inputfilename);
                  BufferedReader reader = new BufferedReader(new FileReader(inputfilename));  
                  BufferedWriter writer  = new BufferedWriter(new FileWriter(outputfilename));
                  String line = null;
                  while((line = reader.readLine()) != null){
                      StringTokenizer st = new StringTokenizer(line, ",.-!? \t");
                      while(st.hasMoreElements()) {
                          String key = st.nextToken();
                          writer.write(map.get(key) + "\r\n");
                          //System.out.println(map.get(key));
                      }
                  }
                  writer.close();
                  reader.close();
              }
              
              
              public static void main(String[] args) throws Exception {
                  translateAll("D:\\test.txt");
                  translateAllLocal("D:\\test.txt", "D:\\output.txt");
              }
          }
          輸入文件中的內(nèi)容為:
          an apple a day,keep healthy a way.
          輸出結(jié)果顯示為:
          an: 一(在元音字母前代替不定代詞a);一任一某一;一個(gè)
          apple: 蘋果;蘋果樹;蘋果公司
          a: 一(個(gè));每一(個(gè));任一(個(gè))
          day: 一天;白天;時(shí)期;節(jié)日
          keep: 保持;保留;遵守;阻止
          healthy: 健康的;健全的;大量的;有益于健康的
          a: 一(個(gè));每一(個(gè));任一(個(gè))
          way: 道路;方法;方向;某方面
          posted on 2015-03-04 14:21 marchalex 閱讀(262) 評(píng)論(0)  編輯  收藏 所屬分類: java小程序
          主站蜘蛛池模板: 沈阳市| 衡东县| 陕西省| 华容县| 无极县| 姜堰市| 彝良县| 平利县| 大宁县| 齐齐哈尔市| 尚义县| 连城县| 昆山市| 沁水县| 五大连池市| 虎林市| 永济市| 黔西县| 建瓯市| 托克托县| 绥江县| 南京市| 岳普湖县| 荔浦县| 喀喇沁旗| 台山市| 达日县| 海盐县| 扎囊县| 广灵县| 上思县| 宁乡县| 会同县| 石棉县| 佛坪县| 昭平县| 会昌县| 项城市| 远安县| 土默特右旗| 丽水市|