HiiHahWIKI - making some notes for... -
Java:ICUを使ってみた
をテンプレートにして作成
開始行:
*Java:ICUを使ってみた [#v5945071]
ICUとは、「International Components for Unicode」で、ユニ...
ひらがな→ローマ字とかローマ字→ひらがな、大文字、小文字と...
以下のリンクよりダウンロードできます。
-http://site.icu-project.org/download
とりあえず、執筆時点での最新であるICU4J 50.1をダウンロー...
ただ動かすだけであれば以下のファイルのみで動きます。
-icu4j-50_1.jar
***使った感触 [#odc2bf2e]
ヘボン式で変換したかったんだけど、出し方がわからず。
ここが気になる。なんとなくできる気がするけど、どうやって...
-http://fossies.org/unix/misc/icu4c-50_1-src.tgz:a/icu/so...
実際には、geonames.orgで公開している時空間情報の市区町村...
geonames.orgのデータはこちらから。海外のサービスってとこ...
-http://www.geonames.org/
-http://download.geonames.org/export/dump/
ここから、JPってやつをDLすれば手に入ります。
ちなみに、こちらの記事でawkで前処理してます。
-http://www.hiihah.info/index.php?awk%E3%81%AB%E3%81%A4%E...
実際のデータを読み→ローマ字で照合のがよいか、ローマ字→ひ...
最初は「漢字→ひらがな→ローマ字」に変換して、ローマ字表記...
***サンプル [#v5131c27]
以下、サンプルです。
ソースコード
-icutest.&ref(TestICU.java);
-resources/icu/&ref(cityname.txt);
以下、ソースコードのハードコピーですw
package icutest;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Enumeration;
import com.ibm.icu.text.Transliterator;
public class TestICU {
public static void main(String args[]) {
// 使用可能なIDリストを標準出力。
// printAvailableIDs();
// 単体変換のサンプル。
// String src = "おううち";
// String src2 = "sendai-shi";
// transliteratorTest(src);
// transliteratorTest(src2);
// 外部ファイルを変換元として、一括して変換し標準出力...
String id = "Latin-Hiragana";
transCityNames(id);
}
/**
* goenamesのJPをDLしたものの3カラム目を抜いたテキスト...
* 引数のIDで変換して標準出力に出力。
* */
private static final void transCityNames(String id) {
try {
File file = new File("./resources/icu/cityname.txt");
BufferedReader br = new BufferedReader(new FileReader...
String str;
while ((str = br.readLine()) != null) {
//System.out.println(str);
testTransliterator(str, id);
}
br.close();
} catch (FileNotFoundException e) {
System.out.println(e);
} catch (IOException e) {
System.out.println(e);
}
}
/**
* 変換元の文字列、IDを引数として、IDで変換した値を標準...
* */
private static final void testTransliterator(String src...
Transliterator tr1 = Transliterator.getInstance(id);
System.out.println(src + "→(" + id + ")→" + tr1.tran...
}
/**
* 気になるIDを適当に指定して入力値をIDをもとに変換し標...
* */
private static final void test(String src) {
Transliterator tr1 = Transliterator.getInstance("Japan...
System.out.println(src + "→(JapaneseKana-Latin/BGN)→...
Transliterator tr2 = Transliterator.getInstance("Hirag...
System.out.println(src + "→(Hiragana-Latin)→" + tr2....
Transliterator tr3 = Transliterator.getInstance("ja_La...
System.out.println(src + "→(ja_Latn-ko)→" + tr3.tran...
Transliterator tr4 = Transliterator.getInstance("ja_La...
System.out.println(src + "→(ja_Latn-ru)→" + tr4.tran...
Transliterator tr5 = Transliterator.getInstance("Any-k...
System.out.println(src + "→(Any-katakana)→" + tr5.tr...
}
/**
* 使用可能なa system transliterator IDを標準出力に出力。
* */
private static final void printAvailableIDs() {
Enumeration e = Transliterator.getAvailableIDs();
String tmp = "";
while (e.hasMoreElements()) {
System.out.println(e.nextElement().toString());
}
}
/**
* 使用可能なIDを使用して、入力と出力が異なるIDの場合に...
* */
private static final void transliteratorTest(String src...
Enumeration e = Transliterator.getAvailableIDs();
String id = "";
String tmp = "";
while (e.hasMoreElements()) {
id = e.nextElement().toString();
Transliterator tr = Transliterator.getInstance(id);
tmp = tr.transliterate(src);
if (!src.contentEquals(tmp)) {
System.out.println(src + "→(" + id + ")→" + tmp);
}
}
}
}
続いて、出力サンプルです。
Bekkai-cho→(Latin-Hiragana)→べっかい-ちょ
Atsuma-cho→(Latin-Hiragana)→あつま-ちょ
Ashoro-mura→(Latin-Hiragana)→あしょろ-むら
Ashoro-cho→(Latin-Hiragana)→あしょろ-ちょ
Aseishi-mura→(Latin-Hiragana)→あせいし-むら
Arasawa-mura→(Latin-Hiragana)→あらさわ-むら
Akan-cho→(Latin-Hiragana)→あかん-ちょ
Abashiri-shicho→(Latin-Hiragana)→あばしり-しちょ
Kitauwa-gun→(Latin-Hiragana)→きたうわ-ぐん
Kamiukena-gun→(Latin-Hiragana)→かみうけな-ぐん
Shisui-machiyakuba→(Latin-Hiragana)→しすい-まちやくば
Nonoichi-machiyakuba→(Latin-Hiragana)→ののいち-まちや...
Saza-choyakuba→(Latin-Hiragana)→さざ-ちょやくば
終了行:
*Java:ICUを使ってみた [#v5945071]
ICUとは、「International Components for Unicode」で、ユニ...
ひらがな→ローマ字とかローマ字→ひらがな、大文字、小文字と...
以下のリンクよりダウンロードできます。
-http://site.icu-project.org/download
とりあえず、執筆時点での最新であるICU4J 50.1をダウンロー...
ただ動かすだけであれば以下のファイルのみで動きます。
-icu4j-50_1.jar
***使った感触 [#odc2bf2e]
ヘボン式で変換したかったんだけど、出し方がわからず。
ここが気になる。なんとなくできる気がするけど、どうやって...
-http://fossies.org/unix/misc/icu4c-50_1-src.tgz:a/icu/so...
実際には、geonames.orgで公開している時空間情報の市区町村...
geonames.orgのデータはこちらから。海外のサービスってとこ...
-http://www.geonames.org/
-http://download.geonames.org/export/dump/
ここから、JPってやつをDLすれば手に入ります。
ちなみに、こちらの記事でawkで前処理してます。
-http://www.hiihah.info/index.php?awk%E3%81%AB%E3%81%A4%E...
実際のデータを読み→ローマ字で照合のがよいか、ローマ字→ひ...
最初は「漢字→ひらがな→ローマ字」に変換して、ローマ字表記...
***サンプル [#v5131c27]
以下、サンプルです。
ソースコード
-icutest.&ref(TestICU.java);
-resources/icu/&ref(cityname.txt);
以下、ソースコードのハードコピーですw
package icutest;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Enumeration;
import com.ibm.icu.text.Transliterator;
public class TestICU {
public static void main(String args[]) {
// 使用可能なIDリストを標準出力。
// printAvailableIDs();
// 単体変換のサンプル。
// String src = "おううち";
// String src2 = "sendai-shi";
// transliteratorTest(src);
// transliteratorTest(src2);
// 外部ファイルを変換元として、一括して変換し標準出力...
String id = "Latin-Hiragana";
transCityNames(id);
}
/**
* goenamesのJPをDLしたものの3カラム目を抜いたテキスト...
* 引数のIDで変換して標準出力に出力。
* */
private static final void transCityNames(String id) {
try {
File file = new File("./resources/icu/cityname.txt");
BufferedReader br = new BufferedReader(new FileReader...
String str;
while ((str = br.readLine()) != null) {
//System.out.println(str);
testTransliterator(str, id);
}
br.close();
} catch (FileNotFoundException e) {
System.out.println(e);
} catch (IOException e) {
System.out.println(e);
}
}
/**
* 変換元の文字列、IDを引数として、IDで変換した値を標準...
* */
private static final void testTransliterator(String src...
Transliterator tr1 = Transliterator.getInstance(id);
System.out.println(src + "→(" + id + ")→" + tr1.tran...
}
/**
* 気になるIDを適当に指定して入力値をIDをもとに変換し標...
* */
private static final void test(String src) {
Transliterator tr1 = Transliterator.getInstance("Japan...
System.out.println(src + "→(JapaneseKana-Latin/BGN)→...
Transliterator tr2 = Transliterator.getInstance("Hirag...
System.out.println(src + "→(Hiragana-Latin)→" + tr2....
Transliterator tr3 = Transliterator.getInstance("ja_La...
System.out.println(src + "→(ja_Latn-ko)→" + tr3.tran...
Transliterator tr4 = Transliterator.getInstance("ja_La...
System.out.println(src + "→(ja_Latn-ru)→" + tr4.tran...
Transliterator tr5 = Transliterator.getInstance("Any-k...
System.out.println(src + "→(Any-katakana)→" + tr5.tr...
}
/**
* 使用可能なa system transliterator IDを標準出力に出力。
* */
private static final void printAvailableIDs() {
Enumeration e = Transliterator.getAvailableIDs();
String tmp = "";
while (e.hasMoreElements()) {
System.out.println(e.nextElement().toString());
}
}
/**
* 使用可能なIDを使用して、入力と出力が異なるIDの場合に...
* */
private static final void transliteratorTest(String src...
Enumeration e = Transliterator.getAvailableIDs();
String id = "";
String tmp = "";
while (e.hasMoreElements()) {
id = e.nextElement().toString();
Transliterator tr = Transliterator.getInstance(id);
tmp = tr.transliterate(src);
if (!src.contentEquals(tmp)) {
System.out.println(src + "→(" + id + ")→" + tmp);
}
}
}
}
続いて、出力サンプルです。
Bekkai-cho→(Latin-Hiragana)→べっかい-ちょ
Atsuma-cho→(Latin-Hiragana)→あつま-ちょ
Ashoro-mura→(Latin-Hiragana)→あしょろ-むら
Ashoro-cho→(Latin-Hiragana)→あしょろ-ちょ
Aseishi-mura→(Latin-Hiragana)→あせいし-むら
Arasawa-mura→(Latin-Hiragana)→あらさわ-むら
Akan-cho→(Latin-Hiragana)→あかん-ちょ
Abashiri-shicho→(Latin-Hiragana)→あばしり-しちょ
Kitauwa-gun→(Latin-Hiragana)→きたうわ-ぐん
Kamiukena-gun→(Latin-Hiragana)→かみうけな-ぐん
Shisui-machiyakuba→(Latin-Hiragana)→しすい-まちやくば
Nonoichi-machiyakuba→(Latin-Hiragana)→ののいち-まちや...
Saza-choyakuba→(Latin-Hiragana)→さざ-ちょやくば
ページ名: