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