Azure AI 검색 인덱스의 문자열 필드에 언어 분석기 추가
‘언어 분석기’는 대상 언어의 언어 규칙을 사용하여 어휘 분석을 수행하는 특정 유형의 텍스트 분석기입니다. 검색 가능한 모든 문자열 필드에 analyzer 속성이 있습니다. 영어 및 중국어 텍스트의 개별 필드와 같이 콘텐츠가 번역된 문자열로 구성된 경우 각 필드에 언어 분석기를 지정하여 해당 분석기의 풍부한 언어 기능에 액세스할 수 있습니다.
언어 분석기를 사용해야 하는 경우
단어 또는 문장 구조를 인식하는 것이 텍스트 구문 분석에 도움이 되는 경우 언어 분석기를 고려해야 합니다. 일반적인 예는 불규칙한 동사 형식(“가져오기”와 “가져온”)이나 복수 명사(“마우스”와 “마우스들”)를 연결하는 것입니다. 언어적 인식을 사용하지 않을 경우 관련 문자열은 물리적 특성만으로 구문 분석되어 연결을 알 수 없습니다. 많은 양의 텍스트에 해당 콘텐츠가 포함될 가능성이 높기 때문에 설명, 검토 또는 요약으로 구성된 필드는 언어 분석기에 적합합니다.
또한 콘텐츠가 서구권이 아닌 언어 문자열로 구성된 경우 언어 분석기를 고려해야 합니다. 기본 분석기(표준 Lucene)는 언어에 구애받지 않지만, 공백과 특수 문자(하이픈 및 슬래시)를 사용하여 문자열을 구분하는 개념은 비서구권 언어보다 서구권 언어에 적합합니다.
예를 들어, CJK(중국어, 일본어, 한국어) 및 기타 아시아 언어에서는 공백이 반드시 단어 구분 기호로 사용되는 것이 아닙니다. 다음 일본어 문자열을 살펴보겠습니다. 해당 문자열에는 공백이 없으므로 언어에 구애받지 않는 분석기에서 전체 문자열을 하나의 토큰으로 분석할 수 있으나, 실제로 문자열은 구문입니다.
これは私たちの銀河系の中ではもっとも重く明るいクラスの球状星団です。
(This is the heaviest and brightest group of spherical stars in our galaxy.)
위의 예에서 성공적인 쿼리를 위해서는 쿼리에 전체 토큰 또는 접미사 와일드카드 문자를 사용하는 부분 토큰이 포함되어야 합니다. 따라서 검색 경험이 자연스럽지 않고 제한적입니다.
더 나은 경험은 明るい(밝은), 私たちの(우리의), 銀河系(은하계) 등의 개별 단어를 검색하는 것입니다. Azure AI 검색에서 사용할 수 있는 일본어 분석기 중 하나를 사용하면 해당 동작을 가능하게 할 수 있습니다. 해당 분석기는 텍스트 청크를 대상 언어의 의미 있는 단어로 분할하는 데 더 적합하기 때문입니다.
Lucene과 Microsoft 분석기 비교
Azure AI 검색은 Lucene을 통해 지원되는 35개 언어 분석기와 Office 및 Bing에서 사용되는 Microsoft 소유 자연어 처리 기술을 통해 지원되는 50개 언어 분석기를 지원합니다.
일부 개발자는 보다 친숙하고 간단한 Lucene의 오픈 소스 솔루션을 선호할 수 있습니다. Lucene 언어 분석기가 더 빠르지만 Microsoft 분석기에는 분류 정리, 단어 분해(독일어, 덴마크어, 네덜란드어, 스웨덴어, 노르웨이어, 에스토니아어, 핀란드어, 헝가리어, 슬로바키아어 등의 언어) 및 엔터티 인식(URL, 메일, 날짜, 숫자)과 같은 고급 기능이 있습니다. 가능한 경우 Microsoft 분석기와 Lucene 분석기를 비교하여 어떤 것이 더 적합한지 결정해야 합니다. 분석 API를 사용하여 특정 분석기를 통해 지정된 텍스트에서 생성된 토큰을 볼 수 있습니다.
언어에 따라 Microsoft 분석기를 사용한 인덱싱은 Lucene보다 평균 두세 배 정도 더 느립니다. 검색 성능은 평균 크기 쿼리에 크게 영향을 받지 않아야 합니다.
영어 분석기
기본 분석기는 표준 Lucene으로, 영어에서는 잘 작동하지만 Lucene 영어 분석기 또는 Microsoft 영어 분석기만큼 효과적이지 않을 수 있습니다.
Lucene 영어 분석기는 표준 분석기를 확장합니다. 이 분석기는 단어에서 소유격(후행 's)을 제거하고, Porter 형태소 분석 알고리즘에 따라 형태소 분석을 적용하며, 영어의 중지 단어를 제거합니다.
Microsoft 영어 분석기는 형태소 분석 대신 분류 정리를 수행합니다. 따라서 어형이 변화되고 불규칙한 단어 형태를 훨씬 잘 처리하여 더 관련도 높은 검색 결과를 제공할 수 있습니다.
언어 분석기 지정 방법
인덱스가 데이터로 로드되기 전 인덱스 생성 중에 분석기를 설정합니다.
필드 정의에서 필드 속성이 “searchable”으로 지정되고 Edm.String 형식인지 확인합니다.
“analyzer” 속성을 지원되는 분석기 목록의 언어 분석기 중 하나로 설정합니다.
“analyzer” 속성은 언어 분석기를 허용하는 유일한 속성이며 인덱싱 및 쿼리 모두에 사용됩니다. 다른 분석기 관련 속성("searchAnalyzer" 및 "indexAnalyzer")은 언어 분석기를 허용하지 않습니다.
언어 분석기는 사용자 지정할 수 없습니다. 분석기가 요구 사항을 충족하지 않는 경우 microsoft_language_tokenizer 또는 microsoft_language_stemming_tokenizer 사용하여 사용자 지정 분석기를 만든 다음, 사전 및 사후 토큰화 처리를 위한 필터를 추가합니다.
다음 예제에서는 인덱스의 언어 분석기 사양을 보여 줍니다.
{
"name": "hotels-sample-index",
"fields": [
{
"name": "Description",
"type": "Edm.String",
"retrievable": true,
"searchable": true,
"analyzer": "en.microsoft",
"indexAnalyzer": null,
"searchAnalyzer": null
},
{
"name": "Description_fr",
"type": "Edm.String",
"retrievable": true,
"searchable": true,
"analyzer": "fr.microsoft",
"indexAnalyzer": null,
"searchAnalyzer": null
},
인덱스를 만들고 필드 속성을 설정하는 방법에 대한 자세한 내용은 인덱스 만들기(REST)를 참조하세요. 텍스트 분석에 대한 자세한 내용은 Azure AI 검색의 분석기를 참조하세요.
지원되는 언어 분석기
다음은 Lucene 및 Microsoft 분석기 이름으로 지원되는 언어의 목록입니다.
언어 | Microsoft 분석기 이름 | Lucene 분석기 이름 |
---|---|---|
아랍어 | ar.microsoft | ar.lucene |
아르메니아 | hy.lucene | |
벵골어 | bn.microsoft | |
바스크어 | eu.lucene | |
불가리아어 | bg.microsoft | bg.lucene |
카탈로니아어 | ca.microsoft | ca.lucene |
중국어 간체 | zh-Hans.microsoft | zh-Hans.lucene |
중국어 번체 | zh-Hant.microsoft | zh-Hant.lucene |
크로아티아어 | hr.microsoft | |
체코어 | cs.microsoft | cs.lucene |
덴마크어 | da.microsoft | da.lucene |
네덜란드어 | nl.microsoft | nl.lucene |
영어 | en.microsoft | en.lucene |
에스토니아어 | et.microsoft | |
핀란드어 | fi.microsoft | fi.lucene |
프랑스어/French | fr.microsoft | fr.lucene |
갈리시아어 | gl.lucene | |
독일어 | de.microsoft | de.lucene |
그리스어 | el.microsoft | el.lucene |
구자라트어 | gu.microsoft | |
히브리어 | he.microsoft | |
힌디어 | hi.microsoft | hi.lucene |
헝가리어 | hu.microsoft | hu.lucene |
아이슬란드어 | is.microsoft | |
인도네시아어(공용어) | id.microsoft | id.lucene |
아일랜드어 | ga.lucene | |
이탈리아어 | it.microsoft | it.lucene |
일본어 | ja.microsoft | ja.lucene |
칸나다어 | kn.microsoft | |
한국어 | ko.microsoft | ko.lucene |
라트비아어 | lv.microsoft | lv.lucene |
리투아니아어 | lt.microsoft | |
말라얄람어 | ml.microsoft | |
말레이어(라틴 문자) | ms.microsoft | |
마라티어 | mr.microsoft | |
노르웨이어 | nb.microsoft | no.lucene |
페르시아어 | fa.lucene | |
폴란드어 | pl.microsoft | pl.lucene |
포르투갈어(브라질) | pt-Br.microsoft | pt-Br.lucene |
포르투갈어(포르투갈) | pt-Pt.microsoft | pt-Pt.lucene |
펀잡어 | pa.microsoft | |
루마니아어 | ro.microsoft | ro.lucene |
러시아어 | ru.microsoft | ru.lucene |
세르비아어(키릴 자모) | sr-cyrillic.microsoft | |
세르비아어(라틴 문자) | sr-latin.microsoft | |
슬로바키아어 | sk.microsoft | |
슬로베니아어 | sl.microsoft | |
스페인어 | es.microsoft | es.lucene |
스웨덴어 | sv.microsoft | sv.lucene |
타밀어 | ta.microsoft | |
텔루구어 | te.microsoft | |
태국어 | th.microsoft | th.lucene |
터키어 | tr.microsoft | tr.lucene |
우크라이나어 | uk.microsoft | |
우르두어 | ur.microsoft | |
베트남어 | vi.microsoft |
이름에 Lucene 주석이 포함된 모든 분석기는 Apache Lucene 언어 분석기를 통해 구동됩니다.