###聞きたいこと
ICUのcom.ibm.icu.text.RuleBasedBreakIteratorのコンストラクタは次のような形式をしています.
public RuleBasedBreakIterator(String rules)
Construct a RuleBasedBreakIterator from a set of rules supplied as a string.
Parameters:
rules - The break rules to be used.
このパラメータのrulesの書き方をWEBで当たったのですが私の力ではどうしてもたどり着けません.もし御存じの方がおられましたら教えてください.
###背景
若干背景を説明しておきます.中国語簡体字の文字列から単語を切り出し、正確なピンインを知りたいのです.com.ibm.icu.text.BreakIteratorを使って例えば次のようなテストプログラムを作ってみました.中国語は適当です.
java
1import com.ibm.icu.text.BreakIterator; 2import java.util.Locale; 3public class StringSplitTest { 4 public static void main(String[] args) { 5 //重形式轻内容 zhong4 xing2 shi4 qing1 nei4 rong2 6 //重修旧好 chong2 xiu1 jiu4 hao3 7 String stringToExamine = "重形式轻内容和重修旧好"; 8 //print each word in order 9 BreakIterator boundary = BreakIterator.getWordInstance(Locale.SIMPLIFIED_CHINESE); 10 boundary.setText(stringToExamine); 11 printEachForward(boundary, stringToExamine); 12 } 13 public static void printEachForward(BreakIterator boundary, String source) { 14 int start = boundary.first(); 15 for (int end = boundary.next(); 16 end != BreakIterator.DONE; 17 start = end, end = boundary.next()) { 18 System.out.println(source.substring(start,end)); 19 } 20 } 21}
これを実行すると
重
形式
轻
内容
和
重修旧好
と出力されます."重"は中国語でzhong4(重い)とchong2(重なる)の読みがあり、それ一文字ではどちらか判別できません.もしこれが
重形式轻内容
和
重修旧好
と単語分割されれば、単語から辞書を引いて正確なピンインを得ることができます.ICU備え付けの辞書ではどうもそうなってくれないようなので逆にcom.ibm.icu.text.RuleBasedBreakIteratorのインスタンスをそれなりの単語数の辞書を使ったルールを使って生成して使えばうまく分割されるのではないか?と考えた次第です.
以上 よろしくお願いします.
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/10/27 00:55