talk about rss feed #15
Tuesday, January 24, 2012 7:07:11 PM
形態素解析に ChaSen を使うようにした。
前の記事のとおりアクセントの確定に ChaOne を使うわけだが、さらに数値文字列+接尾辞を自然な読み上げに変換するために NumTrans も使うようにした。
これらのツールに対して、いくつか不満がないわけではない。
とまあどうでもいいものばかりだ。一方で性能はとてもよいと思う。ChaOne については名詞が連続した際のアクセント位置の移動も行ってくれるようだ。たぶん。なので、呼び出し側で行う事前処理はモーラが連続する際の読点の自動挿入だけになった。これは助詞と助詞以外(ただし非自立な動詞は除く)の境界で、直前の読点から 12 モーラより離れている場合に読点を挿入するというものだ。こうしないと読点少な目の長めの文章を一気に読まれて聞き取りづらくなる。12 という値は経験則だ(5、7、12、17 あたりの数値から選択した)。
NumTrans について。ChaOne と同様に xsl ファイルで構成される。したがって、入力は xml のはずなのだけど、なぜかマニュアルが同梱されていない。
とりあえずいじってみた感じ、変換対象になるプレーンテキストを xml の形式にでっち上げて入力すればいいようだ。当然、でっち上げたとしても整形式である必要はある。
変換前のテキストが
であれば
な感じにして NumTrans に与える(つまり、この xml を入力として、numtrans.xsl を読み込んだ XSL プロセッサに与えて、変換を行う)。名前空間とタグ名は重要ではない。たぶん名前空間はなくてもいいし、オレオレ名前空間でもいいし、タグ名もなんでもいい。
ただし、変換対象になる文字列の末尾には改行を入れておかないと変換されない。
変換するとこんな具合になる。
num:A 要素の属性は今のところ特に必要ではないので、cha:D 要素の textContent 属性を取り出して、一番最初のプレーンテキストに上書きすればいい。
前の記事のとおりアクセントの確定に ChaOne を使うわけだが、さらに数値文字列+接尾辞を自然な読み上げに変換するために NumTrans も使うようにした。
これらのツールに対して、いくつか不満がないわけではない。
- やはり再配布禁止 + ダウンロードするにはユーザ登録が必要、という規定が厳しすぎる
- ChaOne、NumTrans は xslt で書かれているわけだが、とても重い
- NumTrans のアーカイブにマニュアルが同梱されていないので、どういう入力をすればいいのか、他のプログラムのソースを覗かないとわからない
- 茶筅、茶碗と来てなんで NumTrans は茶柱とかじゃないの! ばかなの! しぬの!
とまあどうでもいいものばかりだ。一方で性能はとてもよいと思う。ChaOne については名詞が連続した際のアクセント位置の移動も行ってくれるようだ。たぶん。なので、呼び出し側で行う事前処理はモーラが連続する際の読点の自動挿入だけになった。これは助詞と助詞以外(ただし非自立な動詞は除く)の境界で、直前の読点から 12 モーラより離れている場合に読点を挿入するというものだ。こうしないと読点少な目の長めの文章を一気に読まれて聞き取りづらくなる。12 という値は経験則だ(5、7、12、17 あたりの数値から選択した)。
NumTrans について。ChaOne と同様に xsl ファイルで構成される。したがって、入力は xml のはずなのだけど、なぜかマニュアルが同梱されていない。
とりあえずいじってみた感じ、変換対象になるプレーンテキストを xml の形式にでっち上げて入力すればいいようだ。当然、でっち上げたとしても整形式である必要はある。
変換前のテキストが
ニュージーランドのゴールデン湾で、100頭近くのゴンドウクジラが浜辺に乗り上げているのが見つかった。
であれば
<?xml version="1.0" encoding="UTF-8"?> <cha:D xmlns="http://www.unidic.org/chasen/ns/structure/1.0"> ニュージーランドのゴールデン湾で、100頭近くのゴンドウクジラが浜辺に乗り上げているのが見つかった。 </cha:D>
な感じにして NumTrans に与える(つまり、この xml を入力として、numtrans.xsl を読み込んだ XSL プロセッサに与えて、変換を行う)。名前空間とタグ名は重要ではない。たぶん名前空間はなくてもいいし、オレオレ名前空間でもいいし、タグ名もなんでもいい。
ただし、変換対象になる文字列の末尾には改行を入れておかないと変換されない。
変換するとこんな具合になる。
<?xml version="1.0" encoding="UTF-8"?> <cha:D xmlns:cha="http://www.unidic.org/chasen/ns/structure/1.0">ニュージーランドのゴールデン湾で、<num:A xmlns:num="http://www.unidic.org/numtrans/ns/structure/1.0" type="decimal" origText=" 100">百</num:A>頭近くのゴンドウクジラが浜辺に乗り上げているのが見つかった。 </cha:D>
num:A 要素の属性は今のところ特に必要ではないので、cha:D 要素の textContent 属性を取り出して、一番最初のプレーンテキストに上書きすればいい。



How to use Quote function: