地名なので、神戸はkoubeじゃなくてkobe、東京はtoukyouじゃなくてtokyoなどという、公共的に正しいスペルになるようにしなければいけません。
そこで、「こうべ」などの単語中に「○う」がつく言葉は優先的に置換処理しました。(「こう」→「ko」「とう」→「to」)
しかしその弊害で、羅臼や豊浦、滝上などの地名までそれぞれ「rasu」「toyora」「takinoe」になってしまいます。
この場合、浦や臼などの文字のみを例外処理する以外に、スマートな解決策はないものでしょうか。
http://contents-factory.net/2roma/
神戸のように、前の漢字の語尾にuが含まれている場合は飛ばし、羅臼や滝上のように後ろの漢字に含まれる音がuである場合は飛ばさないという前提にしてみればどうでしょうか?
単語の一部を置き換えると経験なされたように副作用が起きます。
単語ごとに置換するしか無いと思います。
自分はPerl使いですので頭悪いですけど以下のように並べつくします。
s/toukyou/Tokyo/g;
s/tokyo/Tokyo/g;
s/koube/Kobe/g;
s/kobe/Kobe/g;
単語は長い単語から置き換えないと、
また一部置き換えが発生しますので、そこんとこ注意です。
○=う・お段の音の場合のみだと思うのですが?
この辺の判定が難しくて。
「こう・べ」「とう・きょう」の「ou」は二重母音となります。kou-be→ko-be、tou-kyou→to-kyoというふうに、単語単位ではなく漢字単位で考えれば変換できると思います。
一方、「とよ・うら」「ら・うす」の場合は、二重母音ではなく、母音が二つ並んだ状態(o-u、a-u)なので、これは置換しません。
というルールに添って考えれば、原則的な地名については大丈夫ではないかと思います。
もっとも、場所によってはこのルールはうまくいかないこともあります。仲哀天皇の「穴門豊浦宮」は「あなとのとよらのみや」と読みます。「とようらのみや」ではありません。日本語でもリエゾンすることはあるので、気をつけないといけません。兵庫県加古川市尾上町は「おのうえ」ではなく「おのえ」のようです。
また、漢字は同じなのに「にほんばし」と「にっぽんばし」で別の地名ということもあるので、厄介ですね。
回答ありがとうございます。
やはり単漢字での評価と組み合わせて、どこで区切りがあるのかを調べるのが一番効果的みたいですね。
1500個もあると例外処理の量もばかにならない数になってしまうので、自動化できる部分は出来る限りしたいです。
(「こくりつ」と「くにたち」みたいなどうしようもないケースもあるので、あくまで可能な限りで)
やっぱりkakasiかchasenを使って再度チャレンジしようかと思います。
おかげさまで、「にほんばし」と「にっぽんばし」のような例外を除けばほぼバグは消えたようです。
皆さん、本当にありがとうございました。