テキストエディター「Mery」ベータ版 Ver 3.5.3 を公開

テキストエディター「Mery」ベータ版 Ver 3.5.3 を公開

スポンサーリンク

あいまい検索に対応

Microsoft Word でおなじみ、ひらがなとカタカナなどを区別せずに検索できる「あいまい検索」に対応しました。

Word だとデフォルトであいまい検索がオンになっているため不評を招くこともありますが、誤字やスペルミスを無視してほぼ一致する文字列を検索できる、簡単で便利な機能なんです。

あいまい検索の使用

  1. [検索] メニューから [検索] をクリックして [検索] ダイアログ ボックスを表示します。
  2. [あいまい検索] を選択します。
  3. 検索する語句を [検索する文字列] に入力して [検索] ボタンをクリックします。

あいまい検索の使用

あいまい検索の設定

  1. [検索] ダイアログ ボックスの [あいまい検索] の右にある [...] ボタンをクリックすると、[あいまい検索のオプション] ダイアログ ボックスが表示されます。
  2. このダイアログ ボックスであいまい検索の条件を設定して、[OK] ボタンをクリックします。

あいまい検索の設定

濁点、半濁点を無視する

濁点、半濁点を無視して検索します。などの違いは無視されます。たとえば、アボカドアボガドは一致します。

全角、半角を区別しない

全角、半角を区別せずに検索します。AAなどは区別されません。たとえば、ドリアンドリアンは一致します。

ひらがな、カタカナを区別しない

ひらがな、カタカナを区別せずに検索します。などは区別されません。たとえば、ばななバナナは一致します。[全角、半角を区別しない] と組み合わせると、なども一致します。

仮名の大小を区別しない

仮名の大小を区別せずに検索します。や、などは区別されません。たとえば、シークヮーサーシークワーサーは一致します。[全角、半角を区別しない]、[ひらがな、カタカナを区別しない] と組み合わせると、なども一致します。

異体字セレクタを無視する

異体字セレクタを無視して検索します。たとえば、

異体字セレクタを無視する 1

異体字セレクタを無視する 2

の違いは無視されます。

絵文字シーケンスを無視する

絵文字シーケンスを無視して検索します。たとえば、

絵文字シーケンスを無視する 1

絵文字シーケンスを無視する 2

の違いは無視されます。

空白文字を無視する

空白文字を無視して検索します。たとえば、パイナップルパ イ ナ ッ プ ルの違いは無視されます。具体的には、以下の空白文字が無視されます。

  • U+0009 (CHARACTER TABULATION)
  • U+000B (LINE TABULATION)
  • U+000C (FORM FEED)
  • U+0020 (SPACE)
  • U+00A0 (NO-BREAK SPACE)
  • U+1680 (OGHAM SPACE MARK)
  • U+2000 .. U+200A (EN QUAD .. HAIR SPACE)
  • U+202F (NARROW NO-BREAK SPACE)
  • U+205F (MEDIUM MATHEMATICAL SPACE)
  • U+3000 (IDEOGRAPHIC SPACE)
  • U+FEFF (ZERO WIDTH NO-BREAK SPACE)

改行文字を無視する

改行文字を無視して検索します。たとえば、

パイナップル
パ
イナ
ップル

の違いは無視されます。

類似する文字列に一致する

雰囲気の似ている文字列を検索します。たとえば、ふんいきふいんきは一致します。[類似度] と [最大編集距離] を設定することであいまいレベルを調整できます。

類似度

文字列がどれだけ類似しているかを指定します。たとえば、75% (3/4) を指定すると 4 文字に 1 文字、誤字があっても一致します。

最大編集距離

[類似度] で指定した誤字の数の最大値を設定します。検索する文字列が長い場合は、ここで指定した値に制限されます。

[類似度]、[最大編集距離] などの言葉がやや難しいかもしれません。これらの項目はレーベンシュタイン距離に基づいています。

あいまい検索の詳細

あいまい検索で [類似する文字列に一致する] を有効にした場合、誤字やスペルミスを無視して類似した文字列を検索できます。

2 つの文字列がどれくらい似ているかを求める方法として、Mery では、レーベンシュタイン距離というアルゴリズムを使用しています。

レーベンシュタイン距離とは

レーベンシュタイン距離というのは、簡単に言うと 2 つの異なる文字列を同じ文字列にするのに必要な、文字の挿入、削除、置換の回数のことで、編集距離とも呼ばれます。

たとえば、

エル・プサイ・コンガリィ

エル・プサイ・コングルゥ

なら、に置換、に置換、に置換の 3 回の操作が必要なので編集距離は 3 です。

リーディング・シュークリーム

リーディング・シュタイナー

なら、に置換、に置換、に置換、を削除の 4 回の操作が必要なので編集距離は 4 です。

[類似度] 、[最大編集距離] とは

レーベンシュタイン距離 (以下、編集距離) という言葉の説明が終わったところで、[あいまい検索のオプション] ダイアログ ボックスの [類似度] と [最大編集距離] を見ていきましょう。

類似度とは

2 つの文字列がどのくらい異なっているかは編集距離で表せるということが分かりましたが、それなら項目は [最大編集距離] だけで良いのでは?と思われるかもしれません。

[類似度] がなかった場合を考えてみます。

たとえば、

キンキンに冷えたノンカロリーのドクペ

キンキンに冷えたノンカロリーのコーラ

は編集距離が 3 で、似ている文字列と言えそうです。

それでは、

ドクペ

コーラ

はどうでしょう?

こちらも編集距離は 3 ですが、似ている文字列とは言えません。

そこで、類似度として1 - 編集距離 ÷ 文字数を使用します。

キンキンに冷えたノンカロリーのドクペキンキンに冷えたノンカロリーのコーラなら、1 - 3 ÷ 18 = 0.83333... で類似度は 83%、似ている文字列と判断できます。

ドクペコーラなら、1 - 3 ÷ 3 = 0 で類似度は 0、似ていない文字列と判断できます。

最大編集距離とは

それなら [類似度] だけで良いのでは?と思われるかもしれません。

[最大編集距離] がなかった場合を考えてみます。

[類似度] を 2/3 (66%) に設定してドクペの 3 文字で検索する場合、許容される編集距離は 1 までとなります。

そうすると、検索する文字列が 6 文字なら編集距離は 2 まで、9 文字なら編集距離は 3 まで、99 文字なら編集距離は 33 までと、どんどん増えていってしまいます。

レーベンシュタイン距離は許容する編集距離が大きくなると低速になる傾向があるため、[最大編集距離] で上限を設ける必要があるというわけです。

ダメラウ・レーベンシュタイン距離とは

ところで、Mery では制限ダメラウ・レーベンシュタイン距離というものを使用しています。

ダメラウ・レーベンシュタイン距離では、文字の挿入、削除、置換に加えて、転置、つまり、隣り合う文字の入れ替えを 1 回の操作として数えます。

たとえば、

ふいんき

ふんいき

は、レーベンシュタイン距離を使用すると、に置換、に置換の 2 回の操作が必要なので編集距離は 2、類似度は 50% となり、似ているとも似ていないとも言えません。

そこで、ダメラウ・レーベンシュタイン距離を使用すると、いんの転置 (隣り合う文字の入れ替え) で済むので編集距離は 1、類似度は 75% となり、似ている文字列と判断できるわけです。

制限ダメラウ・レーベンシュタイン距離とは

ダメラウ・レーベンシュタイン距離には、制限ダメラウ・レーベンシュタイン距離と (非制限) ダメラウ・レーベンシュタイン距離というものがあります。

制限ダメラウ・レーベンシュタイン距離では、文字列を 2 回以上編集する操作は許容されません。

たとえば、ぽぬぬるぽにする場合、ぽぬからを削除してとなり、を挿入してぬるとなり、を挿入してぬるぽとなるので、編集距離は 3 です。

しかしながら、(非制限) ダメラウ・レーベンシュタイン距離では、文字列を 2 回以上編集する操作を許容します。

ぽぬを転置してぬぽとなり、を挿入してぬるぽとなるので、編集距離は 2 です。

Mery では速度を優先して、制限ダメラウ・レーベンシュタイン距離を使用しています。

仕様上の制限

あいまい検索に関する仕様、および制限を記載しておきます。

  • [あいまい検索] は [正規表現を使用する] と同時に有効にすることはできません。
  • [大文字と小文字を区別する] は [検索] ダイアログ ボックスの設定が適用されます。
  • 文字を無視する検索では、無視する文字のみの検索はできません。たとえば、[濁点、半濁点を無視する] を有効にするとのみを検索することはできなくなります。
  • 編集距離は全角、半角、サロゲートペアにかかわらず 1 文字として数えます。
  • 改行文字をまたいだ検索文字列の強調表示は 1 行目のみとなります。

変更ログ

本バージョンではいくつかの不具合修正や機能改善が含まれています。現在お使いのバージョンで問題がある場合はバージョンアップで改善されるかもしれません。

3.5.3 (2023-05-25)

3.5.2 (2023-05-11)

3.5.1 (2023-05-06)

  • [検索]、[置換]、[ファイルから検索]、[ファイルから置換] ダイアログのレイアウトを変更

    [検索] と [置換]、[ファイルから検索] と [ファイルから置換] ダイアログを切り替えたときに項目の位置がある程度固定されていたほうが視認性が向上しそう。あと、Ver 3.5.0 では [置換] ダイアログが縦長でダサかったので。

  • [検索] ダイアログの [すべて検索] で [選択範囲のみ] を検索できるようにした

    [検索] ダイアログの [すべて検索] で選択範囲の中から指定した文字列を選択状態にできるようになりました。選択範囲はマルチカーソルにも対応しています。

  • マクロのdocument.selection.Find()document.selection.Replace()のフラグにmeFindReplaceSelOnlyを追加。それに伴い、meReplaceSelOnlyは廃止予定

    [検索] に [選択した範囲のみ] を追加したので定数の名前を変更しました。下位互換性のためmeReplaceSelOnlyも使用できるようにしていますが、マクロで操作を記録した場合、[選択した範囲のみ] はmeFindReplaceSelOnlyで記録されるのでご注意ください。

  • [ファイルから置換] ダイアログから [ファイルから検索] ダイアログに戻れるようにした

    [<< 検索] ボタンで [ファイルから検索] ダイアログに戻れるようになりました。

  • 右側のペインを閉じたときにスクロールバーの跡が残ることがあった問題を修正
  • ウィンドウを分離した状態でタブを閉じたときにタイトル バーが更新されないことがあった問題を修正

    フォーラム タブを切り離したウインドウでタブを閉じてもウインドウのタイトルバーが更新されない

  • Ver 3.5.0 から [検索] ダイアログの [検索する文字列] のドロップダウンで Enter キーが利かなくなっていたのを修正
  • その他、細かい修正

3.5.0 (2023-04-29)

  • あいまい検索に対応
  • Ver 3.3.5 から [選択した範囲のみ] の置換で選択範囲の終端が行末とみなされなくなっていたのを修正

    Ver 3.3.5 の鬼雲がフリーズする問題の対策が原因でした。

  • [最近のファイル表示数] を減らしたときに Mery を終了するまでは履歴を保持するようにした

    フォーラム 最近のファイル表示数

  • マクロの ReadSettings、WriteSettings でキーボードの設定を読み書きしていたのを廃止
  • マクロの ReadSettings で引数に INI ファイルを指定できるようにしてみた

    editor.ReadSettings("Mery2.ini");のように指定した INI ファイルから設定を読み込むことができます。制限事項として、ウィンドウの位置やファイルの履歴、キーボードの設定など、一部の項目はサポートしていません。

    フォーラム オプション全般をセットとして切替

  • [置換後の文字列] に改行が含まれていたときに変更行の位置がずれていたのを修正

    フォーラム 検索、置換で改行を含む文章が選択できません

  • [オプション] の [履歴] カテゴリに [最近の検索の表示数] を追加

    ディスプレイの解像度が低い場合、検索ダイアログのドロップダウンの項目数が多いと、ドロップダウンが上方向に表示されてしまう問題の対策です。

    フォーラム 検索履歴ドロップダウンリストの幅

  • [ファイル] メニューの履歴が 8 個を超えた場合、サブメニューで表示するようにした

    [最近のファイル表示数] が多いと [ファイル] メニューが見づらくなってしまうので対策してみました。

  • [検索] ダイアログの [検索する文字列] でCtrl+Enterを押したときにビープ音が出ていたのを修正
  • [検索] ダイアログの [文末まで検索したら文頭に移動する] をメモ帳にあわせて [折り返しあり] に変更
  • [置換] ダイアログ に [折り返しあり] を追加
  • マーカー バーのポップアップメニューに [折り返しあり] を追加

    フォーラム マーカー機能につきまして

  • その他、細かい修正

ダウンロード

導入が簡単なインストーラー版、設定ファイルを外部に作成しないポータブル版、レジストリを一切使用しない ZIP 版を用意しています。

インストーラー版

解凍などの作業が必要なく簡単に使えるインストーラー版です。

Mery Ver 3.5.3 (64 ビット版) インストーラー Mery Ver 3.5.3 (32 ビット版) インストーラー
VirusTotal で誤検出されたり SmartScreen で保護されたりしますが、もちろんウイルスではありません。ご心配なかたは正式版が Vector さんか窓の杜さんで公開されるまでお待ちください。

ポータブル版

インストールは不要。通常の ZIP 版と異なり設定ファイルを外部に作成しないので USB メモリに保存して持ち歩けますし、PC 環境を汚すこともありません。

Mery Ver 3.5.3 (64 ビット版) ポータブル Mery Ver 3.5.3 (32 ビット版) ポータブル
ポータブル版は解凍したフォルダの中に、設定ファイルなどのすべてのデータを保存しますので、必ずアクセス権のあるフォルダに配置してください。

ZIP 版

アーカイブを解凍するだけですぐに使える ZIP 版です。

Mery Ver 3.5.3 (64 ビット版) ZIP Mery Ver 3.5.3 (32 ビット版) ZIP
ZIP 版はレジストリを汚したくないかた向けにインストーラー版の内容を ZIP アーカイブにしたものです。1 つの環境に複数の Mery を導入する場合は ZIP 版ではなくポータブル版をご利用ください。

おわりに

1 月末から開発していた「あいまい検索」ですが、レーベンシュタイン距離の計算が遅く、実用に耐える速度を確保できなかったため実装に 3 か月近くもかかってしまいました。

それでも、ファイルが大きい場合や [最大編集距離] の設定値が大きい場合は速度が遅くなってしまいますが…。

とはいえ、無料のテキストエディターであいまい検索をサポートしているものは少ないと思います。

表記ゆれや誤変換を吸収して検索できるので、小説の執筆やブログ記事のチェックなどにご活用ください。

時をかける少女 &#091;Blu-ray&#093;

時をかける少女 [Blu-ray]
角川エンタテインメント
略して、時かけ。
Amazon で探す 楽天市場で探す

スポンサーリンク

関連する記事

フォローする