Google Spread Sheet で、2つの集合の あるカラムから似ている文字列を抽出する必要があり、文字列の検索方法、補完方法について調べたので、調べた結果を記載します。


似ている文字列を調べる方法

一般的な検索方法

以下の方法があります。

  • 完全一致
    文字列が完全に一致するかを判定する方法です。

  • 部分一致
    SQL でいうと like '%xx%'よる比較でヒットするデータを抽出する方法です。
    RDB の場合、index が効きません。

  • 前方一致
    SQL でいうと like '%xx'よる 比較でヒットするデータを抽出する方法です。
    RDB の場合、index が効きます。

  • 後方一致
    SQL でいうと like 'xx%'よる比較でヒットするデータを抽出する方法です。

  • 文字列同士の距離の比較
    ルーベンシュタイン距離ジャロ・ウィンクラー距離いう距離の求め方があります。
    この記事では、文字列の距離について記載します。

Google スプレッドシート での関数


テキストの補正

検索、一致と対になる処理で、テキストの補正があります。

一般的な補正の方法

  • 全角半角変換
    半角または、全角をどちらかに統一します。

  • 大文字小文字変換
    大文字または、小文字をどちらかに統一します。

  • 全角、半角スペースの置換
    全角、半角スペースをどちらかに置換、またはなかったことにします。
    全角半角変換行っていれば実施は不要かもしれません。

  • 名寄せ
    (株) 株式会社置換する 等の処理を行います。
    別名、俗称を正式名称に変換する等です。

Google スプレッドシート での式の説明


参考

以下、記事作成時に参考にした 文書のリンク集です。
テキストの編集距離に関することが多いです。


ルーベンシュタイン距離


残存エラー率

調査した文脈を忘れてしまいましたが、ルーベンシュタイン距離で見つかった記事だと思います。


文字列の距離について


スプレッドシート の関数

テキスト関連の関数リストに絞り込むと、文字の検索に関わる式が表示されます。


Python

Python の difflib 文字列の編集距離を計算できます。


JavaScript difflib の実装

JavaScript の difflib 実装です。


Jaro-Winkler 距離 JavaScirpt での実装

Jaro-Winkler 距離 を求める JavaScript です。Browser で動作するライブラリであれば、基本的に Google Apps Script としても動作します。

以上です。

コメント