Refsort/Ruby v3.74 released
辞書参照型ソーティング・フィルタ Refsort/Ruby (新しいほうから *1 *2 *3 *4 *5)の改訂版 v3.74 をリリースしました.今回の改訂は新しい埋め込みオプションと,それとペアとなるコマンドライン・オプションの追加です.
Refsort は並べ替えの下働きをするためのプログラムですが,特に生物種の分類学的な並べ替えを得意分野として開発してきました.ところが生物種の学名のリストは結構厄介な対象です.短くはないラテン語のスペリングを正確に書いておかないと,辞書との照合に失敗して撥ねられてしまうからです.
一般の文章の中で学名を使うときも同様の課題があります.例えば「アカガシラソリハシセイタカシギ」の学名は Recurvirostra novaehollandiae と和名に負けず大変長ったらしいものです.この学名を文章の中で初めて使う場合はそのまま正確に書くしかないのですが,その直後に再び言及する際には,学名のうちの属名を “R.” と短縮して書く慣習があります.さらに亜種の学名だと属名,種小名,亜種名と 3 つの単語が並ぶわけですが,文脈から自明な場合には種小名も短縮して頭文字とピリオドにしてしまい,亜種名だけをフルスペリングで書くことも珍しくありません.
この短縮ルールを並べ替えにも使いたいというアイデアは開発のごく初期から課題リストに入れていました.当初は辞書ファイルの別名機能を使って何とか実装できないかと思ったのですが,辞書に短縮形を入れてしまうと多数の重複レコードが生じてしまい,辞書ファイルが機能しなくなってしまいます.
そこで,入力側でユーザーが自分で短縮形を定義するという発想で実装したのが今回の改訂版です.それには入力ファイルに新しい埋め込みオプション #!a を追加して次のように書きます.
#!a R. = Recurvirostra
すると Refsort はこの行以降のキーフィールドに “R. ” という文字列があれば,それを全て “Recurvirostra” に置き換えたうえで辞書との照合を行います.そして並べ替えられた結果を出力するときには元の入力されたままの “R.” を用います.また辞書中にそのキーフィールドが見つからなかったときには,短縮形ではなく置き換えられた文字列でエラーメッセージを吐きます.
置き換えのルールはユーザーが自分で自由に定義します.短縮形が頭文字とピリオドでなければならないという決まりはないので,
#!a Rec. = Recurvirostra
#!a mela = Melanitta
としても何の問題もありません.この置き換えのルールは入力の途中でいくらでも上書きして変更することができます.また
#!a Rec. =
と何も書かなければ以降の “Rec.” の置き換えをキャンセルします.
実用上は,ある程度まとまった分量の,同一の科や属の種を順不同でたくさん書いたリストを並べ替えるときに役立つと思います.長い属名を頭文字とピリオドだけで済ませることができるからです.
いったんルールを決めると,入力行に “Rec.” という文字列があれば,それがキーフィールドにある限りは,すべて置き換えたうえで辞書との照合と並べ替えを行います.そのため短縮形の設計は慎重に行う必要があります.
短縮形のままの出力では都合が悪い場合もあるでしょう.そのときは出力結果をエディタや表計算ソフトの置き換え機能を使って書き換えればよいのですが,Refsort に新設したオプション “--expandkeys, -p” または “--expandwhole, -P” も使うことができます.前者は入力レコードのうちキーフィールドにある短縮形を置き換えて出力しますが,他の部分については入力されたままの文字列を出力します.
後者のオプションは劇薬で,入力ファイルにある短縮形を,それがどのフィールドにあろうと,たとえコメントの中にあろうと問答無用で置き換えて,辞書との照合,並べ替え,出力を行います.従って入力ファイルに短縮形で書いた属名や種小名やその他任意の単語を,短縮しない形に置き換えて出力しますので,短縮形の設計には細心の注意が必要です.
一つ使い方について注意をしておくと,間違っても,
#!a a = Anser
などと書かないでください.キーフィールドにあるすべての “a” という文字が,あるいは “--expandwhole, -P” オプションを使った場合は入力中のすべての “a” が “Anser” に置き換えられて処理されるからです.せめて
#!a A. = Anser
と大文字にしてピリオドを加えておかないと,意図しない置き換えが大量に発生する恐れがあります.
この機能を使った使用例を改訂したユーザーズガイドに加筆しましたので,使用する前にはぜひお読みください.また新オプションの追加に伴って,Excel とのインターフェースである Refsort on Excel も新版の v2.42 に改訂しました.新しいチェックボックスを設けましたので画面がだいぶ窮屈になってしまいました.
Refsort/Ruby とそれに関連するコンテンツのアーカイブを Microsoft One Drive に置いています.画面右側コラムの Archive の中の Refsort/Ruby Archive をクリックしていただくと,私の OneDrive 上に設けたライブラリが開きますので,そこから過去分も含めてファイルをダウンロードすることができます. Refsort 本体の refsort.rb は refsort_v374.rb というファイル名でアップロードされていますので,ダウンロード後に refsort.rb に変更するとよいでしょう.改行コードも CR/LF になっていますので,適宜変更してお使いください.エンコーディングは US-ASCII ですので,そのままでよいでしょう.
| 固定リンク | 0
「自然」カテゴリの記事
- 鳥といっしょに空を飛ぶ(2023.09.21)
- Refsort on Excel v2.50U released(2023.09.09)
- Refsort/Ruby v3.77 released(2023.09.09)
- 汗だくの里山散歩(2023.09.03)
- 大型翼竜は飛べたのか?(2023.08.31)
「IT関連情報」カテゴリの記事
- Refsort on Excel v2.50U released(2023.09.09)
- Refsort/Ruby v3.77 released(2023.09.09)
- Microsoft Teamsの複雑な仕様がやっとわかった(2023.08.20)
- IOC List v13.2 Released(2023.07.28)
- Refsort/Ruby v3.76 released(2023.07.22)
「科学」カテゴリの記事
- Refsort on Excel v2.50U released(2023.09.09)
- Refsort/Ruby v3.77 released(2023.09.09)
- 大型翼竜は飛べたのか?(2023.08.31)
- ベクレル becquerel とは?(2023.08.24)
- 君はひょっとしてナヴィエ・ストークス方程式に取り組んでいるのではないか?(2023.08.17)
コメント