series_cosine_similarity_fl()
2 つの数値ベクトルのコサイン類似性を計算します。
関数series_cosine_similarity_fl()
は、2 つの動的数値配列を含む式を入力として受け取り、コサインの類似性を計算するユーザー定義関数 (UDF) です。
Note
このドキュメントで説明する関数の代わりに、ネイティブ関数 series_cosine_similarity() を使用します。 ネイティブ関数は同じ機能を提供し、パフォーマンスとスケーラビリティに優れています。 このドキュメントは、参照のみを目的として提供されています。
構文
series_cosine_similarity_fl(
vec1,
vec2,
[ vec1_size [,
vec2_size ]])
構文規則について詳しく知る。
パラメーター
名前 | 型 | 必須 | 説明 |
---|---|---|---|
vec1 | dynamic |
✔️ | 数値の配列。 |
vec2 | dynamic |
✔️ | vec1 と同じ長さの数値の配列。 |
vec1_size | real |
vec1 のサイズ。 これは、それ自体を持つベクトルのドット積の平方根に相当します。 | |
vec2_size | real |
vec2 のサイズ。 |
関数の定義
関数を定義するには、次のようにコードをクエリ定義関数として埋め込むか、データベースに格納された関数として作成します。
次の let ステートメントを使用して関数を定義します。 権限は必要ありません。
重要
let ステートメントを単独で実行することはできません。 その後に 表形式の式ステートメントを指定する必要があります。 の動作例 series_cosine_similarity_fl()
を実行するには、「 例」を参照してください。
let series_cosine_similarity_fl=(vec1:dynamic, vec2:dynamic, vec1_size:real=double(null), vec2_size:real=double(null))
{
let dp = series_dot_product(vec1, vec2);
let v1l = iff(isnull(vec1_size), sqrt(series_dot_product(vec1, vec1)), vec1_size);
let v2l = iff(isnull(vec2_size), sqrt(series_dot_product(vec2, vec2)), vec2_size);
dp/(v1l*v2l)
};
// Write your query to use the function here.
例
クエリ定義関数を使用するには、埋め込み関数定義の後で呼び出します。
let series_cosine_similarity_fl=(vec1:dynamic, vec2:dynamic, vec1_size:real=double(null), vec2_size:real=double(null))
{
let dp = series_dot_product(vec1, vec2);
let v1l = iff(isnull(vec1_size), sqrt(series_dot_product(vec1, vec1)), vec1_size);
let v2l = iff(isnull(vec2_size), sqrt(series_dot_product(vec2, vec2)), vec2_size);
dp/(v1l*v2l)
};
let s1=pack_array(0, 1);
let s2=pack_array(sqrt(2), sqrt(2));
print angle=acos(series_cosine_similarity_fl(s1, s2))/(2*pi())*360
出力
angle |
---|
45 |
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示