文書類似度は、文字列類似度に基づいて記事または文章間で計算される類似度である。 文書または文はスペースで区切られています。 このトピックでは、Platform for AI (PAI) が提供するドキュメント類似性アルゴリズムコンポーネントを設定する方法について説明します。
背景情報
文書類似度は、文字列類似度が計算されるのと同じ方法で計算される。 ドキュメントの類似性は、次の計算方法をサポートします。Levenshtein Distance (Levenshtein) 、Longest Common SubString (LCS) 、String Subsequence Kernel (SSK) 、Cosine、およびSimhash_Hamming。
Levenshtein法は、距離と類似度の計算をサポートします。
距離は、levenshteinパラメータとして表される。
類似度は、以下の式を使用することによって計算される。 類似性は、levenshtein_simパラメータとして表される。
LCS法は、距離および類似度の計算をサポートする。
距離は、lcsパラメータとして表される。
類似度は、以下の式を使用することによって計算される。 類似度は、lcs_simパラメータとして表される。
SSK法は、類似度計算をサポートし、sskパラメータとして表される。
コサイン法は、類似性計算をサポートし、コサインパラメータとして表される。
Simhash_Hammingメソッドでは、SimHashアルゴリズムを使用して、元のドキュメントを64ビットのバイナリ指紋にマッピングします。 ハミング距離は、同じ位置のバイナリ指紋の文字数を計算するために使用されます。 Simhash_Hammingメソッドは、距離と類似度の計算をサポートします。
距離は、simhash_hammingパラメーターとして表されます。
類似度は、以下の式を使用することによって計算される。類似度=1 − 距離 /64.0。 類似度は、simhash_hamming_simパラメータとして表される。
説明SimHashの詳細については、「丸めアルゴリズムからの類似性推定手法」をご参照ください。
ハミング距離の詳細については、「Wikipedia」をご参照ください。
制限事項
ドキュメント類似性コンポーネントは、MaxComputeのコンピューティングリソースのみに基づいて使用できます。
コンポーネントの設定
次のいずれかの方法を使用して、ドキュメント類似性コンポーネントを設定できます。
方法1: PAIコンソールでコンポーネントを設定する
Machine Learning Designerのパイプラインページで、Document Similarityコンポーネントのパラメーターを設定できます。 下表に、各パラメーターを説明します。
タブ | パラメーター | 説明 |
フィールド設定 | 類似度計算の最初の列 | デフォルト値は、テーブルの最初の文字列列の名前です。 |
2列目の類似度計算 | デフォルト値は、テーブルの2番目の文字列列の名前です。 | |
出力テーブルに追加された列 | 出力テーブルに追加される列の名前。 | |
出力テーブルの類似度列 | 出力テーブルの類似度列の名前。 デフォルト値: output。 説明 列名の長さは最大128文字で、英数字、およびアンダースコア (_) を使用できます。 先頭は文字である必要があります。 | |
パラメーター設定 | 類似度の計算方法 | 類似度の計算に使用されるメソッド。 有効な値:
|
サブストリングの長さ (SSKおよびコサインで利用可能) | このパラメーターは、Similarity Calculation Methodパラメーターがlevenshtein、ssk、またはCosineに設定されている場合にのみ有効です。 有効な値: (0,100) 。 デフォルト値:2 | |
マッチングワードペア重量 (SSKで利用可能) | このパラメーターは、類似度計算方法パラメーターがsskに設定されている場合にのみ有効です。 値は0と1の間でなければなりません。 デフォルト値: 0.5 | |
チューニング | コンピューティングコア | 計算に使用されるコアの数。 デフォルトでは、システムが値を決定します。 |
コアあたりのメモリサイズ (単位: MB) | 各コアのメモリサイズ。 デフォルトでは、システムが値を決定します。 |
方法2: PAIコマンドを使用してパラメータを設定する
PAIコマンドを使用してコンポーネントパラメータを設定します。 次のセクションでは、パラメーターについて説明します。 SQLスクリプトを使用してPAIコマンドを呼び出すことができます。 詳細については、「SQLスクリプト」をご参照ください。
PAI -name doc_similarity
-project algo_public
-DinputTableName="pai_test_doc_similarity"
-DoutputTableName="pai_test_doc_similarity_output"
-DinputSelectedColName1="col0"
-DinputSelectedColName2="col1"
パラメーター | 必須 | 説明 | デフォルト値 |
inputTableName | 可 | 入力テーブルの名前。 | N/A |
outputTableName | 可 | 出力テーブルの名前。 | N/A |
inputSelectedColName1 | 不可 | 類似度の計算に使用される最初の列。 | テーブルの最初の文字列列の名前 |
inputSelectedColName2 | 不可 | 類似度の計算に使用される2番目の列。 | テーブルの2番目の文字列列の名前 |
inputAppendColNames | 不可 | 出力テーブルに追加される列。 | 追加された列なし |
inputTablePartitions | 不可 | 入力テーブルから選択されたパーティション。 | フルテーブル |
outputColName | 不可 | 出力テーブルの類似度列の名前。 説明 列名の長さは最大128文字で、英数字、およびアンダースコア (_) を使用できます。 先頭は文字である必要があります。 | アウトプット |
メソッド | 不可 | 類似度の計算に使用されるメソッド。 有効な値:
| levenshtein_sim |
ラムダ | 不可 | 一致した単語ペアの重み。 SSKメソッドはこのパラメーターをサポートしています。 有効な値: (0,1) 。 | 0.5 |
k | 不可 | 部分文字列の長さ。 SSKメソッドとCosineメソッドはこのパラメーターをサポートします。 有効な値: (0,100) 。 | 2 |
ライフサイクル | 不可 | 出力テーブルのライフサイクル。 | N/A |
coreNum | 不可 | 計算に使用されるコアの数。 | 自動割り当て |
memSizePerCore | 不可 | 各コアのメモリサイズ。 単位:MB。 | 自動割り当て |
例
入力
ODPS SQLノードを使用してテーブルpai_ft_string_similarity_topn_inputを作成します。 詳細については、「MaxCompute SQLタスクの開発」をご参照ください。 サンプルコマンド:
drop table if exists pai_doc_similarity_input; create table pai_doc_similarity_input as select * from ( select 0 as id, "Beijing Shanghai" as col0, "Beijing Shanghai" as col1 from dual union all select 1 as id, "Beijing Shanghai" as col0, "Beijing Shanghai Shenzhen" as col1 from dual )tmp
コマンドを実行すると、次の表が入力テーブルpai_doc_similarity_inputになります。
id
col0
col1
1
0
PAIコマンド
SQLスクリプトコンポーネントまたはODPS SQLノードを使用して、次のPAIコマンドを実行できます。
drop table if exists pai_doc_similarity_output; PAI -name doc_similarity -project algo_public -DinputTableName=pai_doc_similarity_input -DoutputTableName=pai_doc_similarity_output -DinputSelectedColName1=col0 -DinputSelectedColName2=col1 -Dmethod=levenshtein_sim -DinputAppendColNames=id,col0,col1;
Output
次の表は、pai_doc_similarity_outputという名前の出力テーブルです。
id
col0
col1
出力
1
北京上海
北京上海深セン
0.6666666666666667
0
北京上海
北京上海
1.0
よくある質問
類似度の計算は、単語分割の結果に基づく。 単語はスペースで区切られています。 各単語は、類似度計算の単位となる。 入力が全体として文字列の場合は、文字列類似法を使用します。
methodパラメーターでは、levenshtein、lcs、およびsimhash_hammingを使用して距離を計算します。 levenshtein_sim、lcs_sim、ssk、cosine、およびsimhash_hamming_simを使用して類似度を計算します。 距離は、以下の式を使用することによって計算される: 距離=1.0 − 類似性。
メソッドパラメーターをcosineまたはsskに設定すると、kパラメーターが使用可能になります。これは、k個の単語が類似度計算の組み合わせとして使用されることを示します。 kの値がワードの数より大きい場合、2つのストリングは同じである。 類似度出力は0である。 この場合、kの値を最小ワード数以下の値に変更する必要があります。
関連ドキュメント
Machine Learning Designerコンポーネントの詳細については、「Machine Learning Designerの概要」をご参照ください。
String Similarityコンポーネントを使用して、文字列の類似度を計算できます。 詳細については、「文字列の類似性」をご参照ください。
Machine Learning Designerは、さまざまなプリセットアルゴリズムコンポーネントを提供します。 さまざまなシナリオに基づいてデータを処理するコンポーネントを選択できます。 詳細については、「コンポーネントリファレンス: すべてのコンポーネントの概要」をご参照ください。