병음Compatible with Milvus 3.0.x

중국어 텍스트 검색에서는 사용자가 색인된 텍스트에 표시된 그대로 한자를 정확히 입력해야 하는 경우가 많습니다. 이름 조회, 자동 완성 및 입력 시 실시간 검색과 같은 워크플로우에서 사용자는 한자 대신 병음을 입력하는 경우가 많습니다. 예를 들어, 사용자는 足球 을 검색하기 위해 zuqiu 을 입력할 수 있습니다. pinyin 필터는 분석기 출력에 병음 토큰을 추가하여, 별도의 병음 필드를 유지 관리하지 않고도 중국어 텍스트가 병음 입력과 일치할 수 있도록 합니다.

pinyin 필터는 일반적으로 중국어 텍스트용 Jieba 토큰화기와 함께 사용됩니다. 이 필터는 사용자 정의 분석기 필터 파이프라인에서 작동하며, 동일한 중국어 토큰에 대해 여러 형태의 병음 토큰을 출력할 수 있습니다.

구성

기본 옵션을 사용하려면 analyzer_params 파일의 filter 섹션에 "pinyin" 를 지정하십시오.

analyzer_params = {
    "tokenizer": "jieba",
    "filter": ["pinyin"],
}

이 약식 설정은 원본 중국어 토큰을 유지하면서 문자 단위의 병음 토큰을 출력합니다. 해당 옵션을 명시적으로 활성화하지 않는 한, 결합된 병음이나 병음 초성만으로는 토큰을 출력하지 않습니다.

모든 설정을 직접 제어하려면 필터를 객체로 지정하고 Milvus가 생성하는 병음 토큰 형식을 구성하십시오.

analyzer_params = {
    "tokenizer": "jieba",
    "filter": [
        {
            "type": "pinyin",
            "keep_original": True,
            "keep_full_pinyin": True,
            "keep_joined_full_pinyin": False,
            "keep_separate_first_letter": False,
        }
    ],
}

이 필터는 다음 매개변수를 지원합니다.

매개변수유형기본값설명
keep_original부울true분석기 출력에 원본 중국어 토큰을 유지합니다.
keep_full_pinyin부울true문자 수준의 병음 토큰을 출력합니다. 예를 들어, " 中文 "는 " zhong " 및 " wen"를 생성합니다.
keep_joined_full_pinyin부울false각 소스 토큰에 대해 결합된 병음 토큰을 출력합니다. 예를 들어, 中文zhongwen 를 생성합니다.
keep_separate_first_letter부울false각 소스 토큰에 대해 병음 이니셜 토큰을 출력합니다. 예를 들어, 中文zw 를 생성합니다.

이 필터는 토큰화기가 생성한 토큰을 대상으로 작동합니다. 중국어 텍스트의 경우, jieba 와 같은 토큰화기와 함께 사용하십시오.

예시

분석기 구성을 컬렉션 스키마에 적용하기 전에, run_analyzer 을 사용하여 동작을 확인하십시오.

from pymilvus import MilvusClient

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

sample_text = "中文测试"

중국어 텍스트를 문자 단위의 병음과 매칭

기본 pinyin 필터는 원본 중국어 토큰을 유지하면서 문자 단위 병음 토큰을 출력합니다.

analyzer_params = {
    "tokenizer": "jieba",
    "filter": ["pinyin"],
}

result = client.run_analyzer(sample_text, analyzer_params)
print(result)

예상 출력:

['中文', 'zhong', 'wen', '测试', 'ce', 'shi']

중국어 용어를 결합된 병음과 매칭

중국어 용어가 결합된 전체 병음 형태와 일치해야 할 경우 keep_joined_full_pinyin 를 활성화하십시오.

analyzer_params = {
    "tokenizer": "jieba",
    "filter": [
        {
            "type": "pinyin",
            "keep_original": True,
            "keep_full_pinyin": False,
            "keep_joined_full_pinyin": True,
            "keep_separate_first_letter": False,
        }
    ],
}

result = client.run_analyzer(sample_text, analyzer_params)
print(result)

예상 출력:

['中文', 'zhongwen', '测试', 'ceshi']

중국어 용어와 병음 초성 일치

중국어 용어가 해당 병음 형태의 초성과 일치해야 할 때는 ‘ keep_separate_first_letter ’를 활성화하십시오.

analyzer_params = {
    "tokenizer": "jieba",
    "filter": [
        {
            "type": "pinyin",
            "keep_original": True,
            "keep_full_pinyin": False,
            "keep_joined_full_pinyin": False,
            "keep_separate_first_letter": True,
        }
    ],
}

result = client.run_analyzer(sample_text, analyzer_params)
print(result)

예상 출력:

['中文', 'zw', '测试', 'cs']

번역DeepL

관리형 Milvus를 무료로 사용해 보세요

Zilliz Cloud는 번거로움이 없으며, Milvus 기반으로 10배 더 빠릅니다.

시작하기
피드백

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