« タチアオイ繚乱 | トップページ | エディタをアップグレード »

2021/06/10

Refsort/Ruby v3.60 released

辞書参照型ソーティング・フィルタ Refsort/Ruby (新しいほうから *1 *2 *3 *4 *5)の改訂版 v3.60 をリリースしました.今回の改訂の目玉は,新オプション "didyoumean" を実装したことです.入力の実質名が辞書ファイル中に見つからなかった場合,従来はただ

"入力実質名" not found in 辞書ファイル名

と警告メッセージを表示していただけだったのですが,このオプション --didyoumean または -y を指定すると,上の警告文に引き続いて,

Did you mean? "辞書ファイル中の類似名"

と辞書ファイルの中から入力の実質名と類似度の高いエントリーを探して表示するものです.ただし辞書ファイルの中をくまなく探索するので実行速度が低下します.

この文字列の間の類似度は,編集距離の一種 Levenshtein 距離の発展形である Damerau-Levenshtein 距離を用いて評価しています.この距離を求めるアルゴリズムはあまり効率が良くないため,比較する文字列が長ければ長いほど,そして辞書ファイルのレコード数が多ければ多いほど加速度的に時間がかかるようになります.日本鳥類目録程度だとほとんど気になりませんが,IOC List の辞書ファイルでは体感できるほど実行速度が落ちます.そのために少なくとも先頭の 1 文字が一致するものに限定して探索するようにしました.これは,どんなにタイプミスや思い違いをしたとしても,最初の 1 文字くらいは正しく入力できているだろうと期待するからです.

Refsort_v360_demo

実行速度は落ちるもののこの探索の威力は大きく,ちょっとしたタイプミスや思い違い程度の誤りに対しては,ほとんど漏らさずに正解候補を提示できます.上のコンソール画面の例を見ると,たくさんの誤った入力に対して,ひょっとしてこれのことかな?と正解候補を提示できていることがわかります.ただし最初の 1 文字が一致しないものは探索候補としませんので,ミヤマセキレイなどに対する正解候補はないということになります.

「ノリス」に対して「ノスリ」を提示できているのは我ながらエライ.こういう文字の入れ替え間違いは日本語でも欧文でもありがちなので,わざわざ Damerau-Levenshtein 距離を持ってきたのです.しかし類似度の閾値を緩くしすぎると多くの無意味な候補が引っかかるので閾値のとり方は難しく,現状はまだ暫定値だと思ってください.

このオプションの新設以外にも,潜在的なバグの芽を摘み取り,スクリプトをより簡潔なものに最適化しています.

この改訂に伴い,Excel とのインターフェースである Refsort on Excelについても新しい v2.30 をリリースしました.新設のオプション "didyoumean" を指定するためのチェックボックスをコントロールパネルに設けました.

Refsort/Ruby とそれに関するコンテンツのアーカイブを Microsoft One Drive に置いています.画面右側コラムの “Archive” の中の “Refsort/Ruby Archive” をクリックしていただくと,私の OneDrive 上に設けたライブラリが開きますので,そこから過去分も含めてファイルをダウンロードすることができます.Refsort 本体の “refsort.rb” は “refsort_v360.rb” というファイル名でアップロードされていますので,ダウンロード後に適宜 “refsort.rb” に変更するとよいでしょう.改行コードも CR/LF になっていますので,適宜変更してお使いください.

Refsort on Excel v2.30 や 日本鳥類目録 v7 に準拠した辞書ファイル,IOC List v11.1 に準拠した辞書ファイル,最新版に準拠したユーザーズガイドやプレゼンテーション用のスライドもこのアーカイブに収録されていますので,どうかご利用ください.

| |

« タチアオイ繚乱 | トップページ | エディタをアップグレード »

自然」カテゴリの記事

IT関連情報」カテゴリの記事

科学」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




« タチアオイ繚乱 | トップページ | エディタをアップグレード »