2013-08-17 3 views
0

Я хочу взять пиньинь (английский) в качестве ввода и вернуть китайские иероглифы, которые пользователь может выбрать. Я видел, что это было реализовано во многих местах (поддержка OS-клавиатур и различных веб-сайтов), но не может найти библиотеку для этого.Convert pinyin to Chinese Character

Возможно, даже если это не так сложно или требуется большой объем данных.

ответ

0

Самый простой способ сделать это - использовать javachinesepinyin, легкий китайский метод ввода пиньинь. Вы можете найти соответствующий код here.

private String[] pinyinToWord(String[] o) { 
    Result ret = null; 
    try { 
     ret = ptw.labelStateOfNodes(Arrays.asList(o)); 
    } catch (Exception ex) { 
     System.out.println(ex.getMessage()); 
    } 
    Map<Double, String> results = new HashMap<Double, String>(); 
    if (null != ret && ret.states() != null) { 
     for (int pos = 0; pos < ret.states()[o.length - 1].length; pos++) { 
      StringBuilder sb = new StringBuilder(); 
      int[] statePath = Viterbi.getStatePath(ret.states(), ret.psai(), o.length - 1, o.length, pos); 
      for (int state : statePath) { 
       Character name = ptw.getStateBy(state); 
       sb.append(name).append(" "); 
      } 
      results.put(ret.delta()[o.length - 1][pos], sb.toString()); 
     } 
     List<Double> list = new ArrayList<Double>(results.keySet()); 
     Collections.sort(list); 
     Collections.reverse(list); 
     return results.get(list.get(0)).trim().split(" "); 
    } 
    return null; 
} 

Интро Слайды на английском языке: http://docs.google.com/present/edit?id=0AbbbdNFzwcADZGR3Z3N0NG1fMTk4M2hraGZjNmRw&hl=en

Live Demo: http://951438.appspot.com/pinyin.jsp?txt=zhongwenpinyinshurufa

Если нужны дополнительные функции, возможно, вам следует рассмотреть возможность использования Rime Input Method Engine или sunpinyin.

FYI, Python Binding for sunpinyin.