文字列類似度の計算は、機械学習における基本的な操作です。2 つの文字列間の類似度または相違度を評価します。この計算は、情報検索、自然言語処理、バイオインフォマティクスなどの分野で広く使用されています。レーベンシュタイン距離やコサイン類似度などのさまざまなアルゴリズムとメトリックを使用して、類似したテキストデータを識別、照合、またはクラスター化します。
アルゴリズムの説明
文字列類似度コンポーネントは、Levenshtein (レーベンシュタイン距離)、LCS (最長共通部分文字列)、SSK (文字列部分シーケンスカーネル)、Cosine、Simhash_Hamming の 5 つの類似度計算メソッドをサポートしています。このコンポーネントはペアワイズ計算をサポートしています。
-
Levenshtein メソッドは、距離と類似度の計算をサポートしています。
-
距離は levenshtein パラメーターで表されます。
-
類似度 = 1 - 距離。類似度は levenshtein_sim パラメーターで表されます。
-
-
LCS メソッドは、距離と類似度の計算をサポートしています。
-
距離は lcs パラメーターで表されます。
-
類似度 = 1 - 距離。類似度は lcs_sim パラメーターで表されます。
-
-
SSK メソッドは類似度計算をサポートしています。ssk パラメーターで表されます。
-
Cosine メソッドは類似度計算をサポートしています。cosine パラメーターで表されます。
-
Simhash_Hamming メソッドは、SimHash アルゴリズムを使用して元のテキストを 64 ビットのバイナリ指紋にマッピングします。次に、ハミング距離を使用して、バイナリ指紋の同じ位置にある異なる文字の数を計算します。このメソッドは、距離と類似度の両方の計算をサポートしています。
-
距離は simhash_hamming パラメーターで表されます。
-
類似度 = 1 - 距離/64.0。類似度は simhash_hamming_sim パラメーターで表されます。
-
コンポーネントの設定
方法 1: GUI の使用
Designer ワークフローに 文字列類似度コンポーネントを追加します。次に、右側のペインでパラメーターを設定します。
|
パラメータータイプ |
パラメーター |
説明 |
|
フィールド設定 |
出力テーブルに追加する列 |
出力テーブルに追加する列。 |
|
類似度計算の最初の列 |
デフォルト値は、テーブル内の STRING 型の最初の列の名前です。 |
|
|
類似度計算の 2 番目の列 |
デフォルト値は、テーブル内の STRING 型の 2 番目の列の名前です。 |
|
|
出力テーブルの類似度列 |
出力テーブルの類似度列の名前。 |
|
|
パラメーター設定 |
類似度計算メソッド |
類似度計算のメソッド。有効な値:
デフォルト値: levenshtein_sim。 |
|
部分文字列の長さ |
このパラメーターは、[類似度計算メソッド] パラメーターが [ssk]、[cosine]、[simhash_hamming]、または [simhash_hamming_sim] に設定されている場合にのみ必須です。有効な値: (0,100)。デフォルト値: 2。 |
|
|
一致する文字列の重み |
このパラメーターは、[類似度計算メソッド] パラメーターが [ssk]、[simhash_hamming]、または [simhash_hamming_sim] に設定されている場合にのみ必須です。有効な値: (0,1)。デフォルト値: 0.5。 |
|
|
実行チューニング |
計算用のコア数 |
デフォルトでは、システムによって割り当てられます。 |
|
コアあたりのメモリサイズ (MB) |
デフォルトでは、自動的に割り当てられます。 |
方法 2: PAI コマンドの使用
PAI コマンドを使用して 文字列類似度コンポーネントを設定できます。SQL スクリプトコンポーネントを使用して PAI コマンドを呼び出すことができます。詳細については、「SQL スクリプト」をご参照ください。
PAI -name string_similarity
-project algo_public
-DinputTableName="pai_test_string_similarity"
-DoutputTableName="pai_test_string_similarity_output"
-DinputSelectedColName1="col0"
-DinputSelectedColName2="col1";
|
パラメーター |
必須 |
デフォルト値 |
説明 |
|
inputTableName |
はい |
なし |
入力テーブルの名前。 |
|
outputTableName |
はい |
なし |
出力テーブルの名前。 |
|
inputSelectedColName1 |
いいえ |
テーブル内の STRING 型の最初の列の名前 |
類似度計算の最初の列の名前。 |
|
inputSelectedColName2 |
いいえ |
テーブル内の STRING 型の 2 番目の列の名前 |
類似度計算の 2 番目の列。 |
|
inputAppendColNames |
いいえ |
なし |
出力テーブルに追加する列。 |
|
inputTablePartitions |
いいえ |
すべてのパーティション |
入力テーブルのパーティション。 |
|
outputColName |
いいえ |
output |
出力テーブルの類似度列の名前。名前に特殊文字を含めることはできません。文字 (a-z、A-Z)、数字、アンダースコア (_) のみを含めることができます。文字で始まり、長さが 128 バイト以下である必要があります。 |
|
method |
いいえ |
levenshtein_sim |
類似度計算のメソッド。有効な値:
|
|
lambda |
いいえ |
0.5 |
このパラメーターは、[類似度計算メソッド] パラメーターが [ssk] に設定されている場合にのみ必須です。有効な値: (0,1)。 |
|
k |
いいえ |
2 |
このパラメーターは、[メソッド] パラメーターが [ssk]、[cosine]、[simhash_hamming]、または [simhash_hamming_sim] に設定されている場合にのみ必須です。有効な値: (0,100)。 |
|
lifecycle |
いいえ |
なし |
出力テーブルのライフサイクル。値は正の整数である必要があります。 |
|
coreNum |
いいえ |
システムが自動的にリソースを割り当てます。 |
計算用のコア数。 |
|
memSizePerCore |
いいえ |
システムによって割り当てられます |
コアあたりのメモリサイズ。 |
参考資料
-
Designer の詳細については、「Designer の概要」をご参照ください。
-
また、String Similarity-Top N コンポーネントを使用して文字列の類似度を計算し、類似度が最も高い上位 N 件のデータレコードを取得することもできます。このコンポーネントの詳細については、「String Similarity-Top N」をご参照ください。