0

ピンイン (英語) を入力として受け取り、ユーザーが選択できる漢字を返したいと考えています。これは多くの場所で実装されていることがわかりました (OS キーボードやさまざまな Web サイトによるサポート) が、それを行うためのライブラリが見つかりません。

または、それほど複雑でない場合や大量のデータが必要な場合は、自分で行うこともできます。

4

1 に答える 1

1

これを行う最も簡単な方法は、軽量の中国語ピンイン入力メソッドであるjavachinesepinyinを使用することです。関連するコードはこちらにあります

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

ライブデモ: http://951438.appspot.com/pinyin.jsp?txt=zhongwenpinyinshurufa

高度な機能が必要な場合は、Rime Input Method Engineまたはsunpinyin の使用を検討する必要があります。

参考までに、sunpinyinのPython バインディング。

于 2014-07-17T02:42:44.623 に答える