日本語辞書の順序でソートする「日本語辞書順ソート」

Pocket

プログラムを使って、ひらがなをソートすると、文字コード順にソートしてしまうので、日本語辞書通りにはなりません。
大きな原因の一つは、小さな文字(捨て文字)と大きな文字の順序が逆である点です。例えば「しやく(試薬)」と「しゃく(尺)」では「しやく」が前になるはずですが、文字コードでは「ゃ」<「や」であるため、プログラムでは「しゃく」が前に来てしまいます。
また長音が正しく処理できません。例えば「あー」と「あか」では「あー」が前になるはずです。「あー」は「ああ」と読むからです。しかし文字コードでは「か」<「ー」であるため、プログラムでは「あか」が前に来てしまいます。なお「あー」は「ああ」の前に来ます。

手順

日本語辞書順にソートするには次のような手順が必要です。

処理1

  • 小さな文字を大きな文字に変換する。
  • 濁音、半濁音を清音に変換する。
  • 長音を清音に変換する。

例えば「しやく(試薬)」と「じゃく(弱)」は同じであるとします。

処理2

  • 小さな文字を大きな文字に変換する。
  • 長音を清音に変換する。

例えば「せっかい(石灰)」は「せつがい(雪害)」より前に来ます。

処理3

  • 小さな文字と大きな文字を入れ替える。
  • 長音をハイフンに変換する。

今度は小さな文字と大きな文字を入れ替えます。例えば「しやく(試薬)」は「しゃく(尺)」より前に来ます。
また「ー」はどのひらがなよりも前ですので、例えば「-」に変換します。「あー」は「ああ」より前に来ます。

ソート

処理1、処理2、処理3の優先順位でソートします。

ツール

これらの手順に従って日本語をソートする仕組みを作りました。

日本語辞書順ソート

kana_dic_sort

[ 2015年3月15日 | カテゴリー: Tool | タグ: , ]

« | »

コメント

  1. 島田正雄 より:

    キー文字列は第一キーと第二キーの二つを生成して、ひらがなよりも小さい文字を挟んで並べると楽ですよ。
    第一キーは音素の並び、第二キーはアトリビュート文字列とします。で、長音、濁音
    カタカナといった属性は第二キーに押し込めます。それをデータベースの整列キーとして使えば簡単です。辞書の見出し語ていどならこれで十分ですが、会社名だと前株か後株かのケアがあったりします。enpediaの「日本語の辞書順整列」の項に書く予定。
    ちなみに三十ほど前に実装した経験があります。

  2. stabucky より:

    >島田さん
    ありがとうございます。その方法だと確かに一発でソートできて処理も早そうですね。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

送信してください。


タグ

カテゴリー

最近の投稿

最近のコメント

固定ページ

アーカイブ

stabucky

写真

メタ情報