다음을 통해 공유


series_cosine_similarity_fl()

두 숫자 벡터의 코사인 유사성을 계산합니다.

함수 series_cosine_similarity_fl() 는 두 개의 동적 숫자 배열이 포함된 식을 입력으로 사용하고 코사인 유사성을 계산하는 UDF(사용자 정의 함수)입니다.

참고

이 문서에 설명된 함수 대신 네이티브 함수 series_cosine_similarity() 를 사용합니다. 네이티브 함수는 동일한 기능을 제공하며 성능 및 확장성에 더 적합합니다. 이 문서는 참조 목적으로만 제공됩니다.

Syntax

series_cosine_similarity_fl(vec1,vec2, [ vec1_size [,vec2_size ]])

구문 규칙에 대해 자세히 알아봅니다.

매개 변수

이름 형식 필수 Description
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

출력

각도
45