동의어

synonym 필터는 동의어 사전에 따라 토큰을 다시 작성하여 검색 중에 관련 용어가 일치하도록 합니다. 이 필터는 두 가지 작동 모드와 두 가지 사전 제공 방식을 지원합니다:

  • 작동 모드 - expand 모드는 원본 토큰을 보존하고 추가 동의어를 함께 출력하며, 정규화 모드(expand: false)는 토큰을 표준 형식으로 다시 씁니다.

  • 사전 소스 - 작은 사전은 synonyms 배열을 통해 필터 구성에 인라인할 수 있으며, 큰 사전은 파일 리소스로 저장하고 synonyms_file 을 통해 참조해야 합니다.

사전 형식

동의어 사전은 각 줄이 하나의 규칙을 정의하는 일반 텍스트 문서(또는 인라인 배열)입니다. 두 가지 규칙 형식이 지원됩니다.

매핑 규칙

fast, quick => speedy

왼쪽의 토큰(fast, quick)은 오른쪽의 토큰(speedy)으로 다시 작성합니다. 여러 대상을 사용할 수 있습니다:

small, little => tiny, compact

expand: true 를 사용하면 원래 토큰이 대상과 함께 유지됩니다:

  • fastexpand: truefast 로 입력합니다, speedy

  • expand: falsefast 입력 speedy

동등성 그룹

happy, joyful, cheerful

나열된 모든 토큰은 동등한 것으로 간주됩니다:

  • expand: true 를 사용하면 그룹에 있는 토큰이 발생하면 그룹의 모든 토큰을 방출합니다. 입력 happyhappy, joyful, cheerful.

  • expand: false 을 사용하면 그룹의 모든 토큰이 그룹의 첫 번째 토큰으로 다시 작성됩니다. 입력 joyfulhappy; 입력 happy 은 이미 첫 번째 토큰이며 변경되지 않습니다.

구성

synonym 필터는 사용자 정의 필터입니다. synonyms (인라인) 또는 synonyms_file (외부) 중 하나 이상과 expand 플래그와 함께 "type": "synonym" 를 지정합니다.

analyzer_params = {
    "tokenizer": "standard",
    "filter": [
        {
            "type": "synonym",
            "synonyms": [                       # inline rules (optional)
                "fast, quick => speedy",
                "happy, joyful, cheerful",
            ],
            "synonyms_file": {                  # external rules (optional)
                "type": "remote",
                "resource_name": "en_synonyms",
                "file_name": "synonyms.txt",
            },
            "expand": True,
        }
    ],
}

synonym 필터는 다음 매개변수를 허용합니다.

파라미터

설명

기본값

synonyms

규칙 문자열의 인라인 배열입니다. 각 문자열은 위에서 설명한 사전 형식을 사용합니다. 소규모 딕셔너리(최대 수십 개의 규칙)에 적합합니다.

-

synonyms_file

동의어 규칙을 한 줄당 하나씩 저장하는 파일 리소스에 대한 참조입니다. 대규모 사전에 사용합니다. 아래의 외부 사전 파일을 참조하세요.

-

expand

규칙 적용 방식을 제어하는 부울 플래그입니다. true는 원래 토큰을 보존하고 동의어를 함께 내보내고, false는 토큰을 표준 형식(매핑의 오른쪽 또는 등가 그룹의 첫 번째 토큰)으로 다시 씁니다.

false

synonyms, synonyms_file 또는 둘 다를 지정할 수 있습니다. 둘 다 있는 경우 필터는 두 소스를 병합합니다. 필터는 토큰화 도구에서 생성된 토큰에 대해 작동하므로 표준 토큰화 도구와 같은 토큰화 도구와 결합해야 합니다.

외부 사전 파일

프로덕션 크기의 사전의 경우 파일을 원격 파일 리소스로 등록하고 synonyms_file 에서 참조하세요.

from pymilvus import MilvusClient

client = MilvusClient(uri="http://localhost:19530")

# Register the file once, then reference it from any analyzer that needs it.
client.add_file_resource(
    name="en_synonyms",
    path="file/synonyms.txt",     # full S3 object key, including rootPath
)

analyzer_params = {
    "tokenizer": "standard",
    "filter": [{
        "type": "synonym",
        "synonyms_file": {
            "type": "remote",
            "resource_name": "en_synonyms",
            "file_name": "synonyms.txt",
        },
        "expand": True,
    }],
}

전체 워크플로(업로드, 등록, 목록, 제거)와 대체 양식( "type": "local" )은 파일 리소스 관리하기를 참조하세요.

예제

분석기를 컬렉션 스키마에 적용하기 전에 run_analyzer 으로 그 동작을 확인하세요. 다음 예에서는 간결성을 위해 인라인 synonyms 배열을 사용하며, 더 큰 사전의 경우 synonyms_file 으로 대체합니다.

expand: true - 원본 유지, 동의어 추가

from pymilvus import MilvusClient

client = MilvusClient(uri="http://localhost:19530")

analyzer_params = {
    "tokenizer": "standard",
    "filter": [{
        "type": "synonym",
        "synonyms": [
            "fast, quick => speedy",
            "happy, joyful, cheerful",
        ],
        "expand": True,
    }],
}

print(client.run_analyzer(["a fast car"], analyzer_params))
# → [['a', 'fast', 'speedy', 'car']]

print(client.run_analyzer(["i am happy today"], analyzer_params))
# → [['i', 'am', 'happy', 'joyful', 'cheerful', 'today']]

fasthappy 모두 보존되며 동의어도 함께 출력됩니다.

expand: false - 표준 형식으로 다시 쓰기

analyzer_params_norm = {
    "tokenizer": "standard",
    "filter": [{
        "type": "synonym",
        "synonyms": [
            "fast, quick => speedy",
            "happy, joyful, cheerful",
        ],
        "expand": False,
    }],
}

print(client.run_analyzer(["a fast car"], analyzer_params_norm))
# → [['a', 'speedy', 'car']]

print(client.run_analyzer(["i am happy today"], analyzer_params_norm))
# → [['i', 'am', 'happy', 'today']]

매핑 규칙은 fastspeedy 으로 재작성합니다. 동등성 그룹은 그룹의 첫 번째 토큰이므로 happy 은 변경되지 않고, joyful 또는 cheerful 을 포함하는 입력은 happy 으로 재작성됩니다.

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started
피드백

이 페이지가 도움이 되었나요?