ミュ-ザ-クでは、作曲著作権者に代わってロイヤリティの請求に多くの時間と労力を費やしています。 このプロセスの一部には、クライアントから受け取ったメタデータと、ストリーミング・サービスによって生成されたメタデータの照合が含まれる。 これはレコード・リンケージとして知られている。 タイトルとライターの情報しかないこともある。 この場合、まず何らかのテキスト検索を行うことを考えるかもしれない。 しかし、ストリーミングサービスは世界中のユーザーからの投稿(およびメタデータ)を受け入れるため、この方法では作曲を正しく特定することが難しくなっている。 この問題を解決するために使うテクニックのひとつが、ファジーマッチングと呼ばれるものだ。
ファジィ・マッチングは、関連する情報を結びつけるルールがファジィである場合に、関連する情報について結論を導き出すために使うことができる。人間である私たちは常にこれを行なっており、目標はそれをコンピューターで再現することである。 このプロセスにより、完全一致でないテキストレコードを取り出し、それらが関連している可能性を判断することができる。 ある曲を含むすべての動画のYoutubeメタデータを見たいとする。 私たちが目にするのは、多種多様なメタデータの集合である。 例を挙げて説明しよう:
曲名オール・マイ・ラヴィング
作家ジョン・レノン|ポール・マッカートニー
この曲のレコードの例を2つ紹介しよう:
記録 | タイトル | ライター |
1 | オール・マイ・ラヴィング | ジョン・レノン/ポール・マッカートニー |
2 | オール・マイ・ラヴィング | ジョン・レノン、ポール・マッカートニー |
この2つの記録に同じ作品が含まれていることは明らかだが、この判断にどのようにアプローチすればいいのだろうか? ルックアップのようにテキストを直接比較すると、”/”と”, “の文字がライターズ・フィールドにあるとミスマッチになる。 では、これらを同じ作品としてプログラム的に識別するにはどうすればいいのだろうか?
ひとつのアプローチは、分析する前にまずテキストを「トークンセット」に変えることだ。 この方法では、スペースと句読点で分割して、各エンティティから単語のリストを作成することができる。 そして、それらのリストをファジーアルゴリズムにかけ、類似性を判断する。 ライターのメタデータで試してみよう。 各記録から単語のリストを作成し、それらのリストをアルファベット順に並べると次のようになる:
リスト1=【ジョン、レノン、マッカートニー、ポール
リスト2=【ジョン、レノン、マッカートニー、ポール
素晴らしい! ここで、リストをファジー・アルゴリズムで単語ごとに比較し、完全に一致することを見つける! この基本的なファジィ照合アルゴリズムにより、2つのレコードを適切にリンクさせることができる。
では、もっと難しい記録に挑戦してみよう:
記録 | タイトル | ライター |
1 | オール・マイ・ラヴィング | レノン/マッカートニー |
2 | オール・マイ・ラヴィング | ポール・ジェームズ・マッカートニー、ジョン・ウィンストン・レノン |
ここでは、同じ作品に異なるメタデータをつけている。 同じアプローチを使えば、作家のリストは以下のようになる:
リスト1=【レノン、マッカートニー
リスト2=【ジェームス、ジョン、レノン、マッカートニー、ポール、ウィンストン
リスト2にはリスト1の単語がすべて含まれている。 別のファジーアルゴリズムのアプローチでは、まず同一の単語を削除し、それから前と同じファジー分析を実行する。 そうすると、次のような言葉が残る:
リスト1 = [].
リスト2=【ジェームズ、ジョン、ポール、ウィンストン
リスト1が空になったことがわかる。 これをファジー・アルゴリズムにかけると、比較するものが何もなくなるため、100%の一致が返される。 これを要約すると、リスト2にはリスト1の全記録が含まれており、したがって両者は関連レコードである、ということになる。 この方法は完璧ではないが、大半のケースに役立つ。
さまざまなユースケースに対応できるよう、あらゆる種類のファジーマッチング・アルゴリズムがあり、ファジーマッチングはデータパイプラインの1ステップに過ぎない。 テキスト比較を実行できるほとんどのソフトウェア・パッケージは、ある種のファジーマッチ機能を備えている。 今度同じようなことがあったら試してみよう。 あなたに欠けていたツールかもしれない!