기술 컨텍스트 및 입력 주석 언어
이 문서는 기술 컨텍스트 및 입력 구문에 대한 참조 설명서입니다. 보강된 문서의 노드에 대한 경로를 생성하는 데 사용되는 식 언어에 대한 전체 설명입니다.
Azure AI 검색 기술은 데이터 원본 및 다른 기술의 출력에서 나오는 데이터를 사용하고 보강할 수 있습니다. 현재 문서에 대한 인덱서 작업의 현재 상태를 나타내는 데이터 작업 세트는 데이터 원본에서 오는 원시 데이터에서 시작하여 각 기술 반복의 출력 데이터로 점진적으로 보강됩니다. 해당 데이터는 내부적으로 기술 입력으로 사용하거나 인덱스에 추가하기 위해 쿼리할 수 있는 트리와 비슷한 구조로 구성됩니다. 트리의 노드는 간단한 값(예: 문자열 및 숫자, 배열 또는 복잡한 개체 및 이진 파일)일 수 있습니다. 간단한 값도 구조화된 추가 정보로 보강할 수 있습니다. 예를 들어 보강 트리의 문자열 아래에 저장되는 추가 정보로 해당 문자열에 주석을 달 수 있습니다. 해당 내부 구조를 쿼리하는 데 사용되는 식은 이 문서에서 자세히 설명하는 풍부한 구문을 사용합니다. 보강된 데이터 구조는 디버그 세션에서 검사할 수 있습니다. 또한 구조를 쿼리하는 식은 디버그 세션에서 테스트할 수 있습니다.
문서 전체에서 다음과 같은 보강된 데이터를 예로 사용합니다. 이 데이터는 OCR, 핵심 구 추출, 텍스트 번역, 언어 감지, 엔터티 인식 기술뿐만 아니라 사용자 지정 토크나이저 기술이 포함된 기술 세트를 사용하여 문서를 보강하는 경우 가져올 수 있는 구조의 일반적인 종류입니다.
Path | 값 |
---|---|
document |
|
merged_content |
"소아 환자의 BMN 110 연구"... |
keyphrases |
|
[0] |
"BMN 연구" |
[1] |
"증후군" |
[2] |
"소아 환자" |
... | |
locations |
|
[0] |
"IVA" |
translated_text |
"Étude de BMN 110 chez les patients pédiatriques"... |
entities |
|
[0] |
|
category |
"조직" |
subcategory |
null |
confidenceScore |
0.72 |
length |
3 |
offset |
9 |
text |
"BMN" |
... | |
organizations |
|
[0] |
"BMN" |
language |
"en" |
normalized_images |
|
[0] |
|
layoutText |
... |
text |
|
words |
|
[0] |
"연구" |
[1] |
"의" |
[2] |
"BMN" |
[3] |
"110" |
... | |
[1] |
|
layoutText |
... |
text |
|
words |
|
[0] |
“it” |
[1] |
"입니다" |
[2] |
"확실히" |
... | |
... | |
... |
문서 루트
모든 데이터는 경로가 "/document"
인 하나의 루트 요소 아래에 있습니다. 루트 요소는 기술의 기본 컨텍스트입니다.
단순 경로
내부 보강된 문서를 통한 단순 경로는 슬래시로 구분된 간단한 토큰으로 표현할 수 있습니다. 이 구문은 JSON 포인터 사양과 비슷합니다.
개체 속성
개체를 나타내는 노드의 속성은 해당 값을 속성 이름 아래의 트리에 추가합니다. 이러한 값은 속성 이름을 슬래시로 구분된 토큰으로 추가하여 가져올 수 있습니다.
식 | 값 |
---|---|
/document/merged_content/language |
"en" |
속성 이름 토큰은 대/소문자를 구분합니다.
배열 항목 인덱스
배열의 특정 요소는 속성 이름과 같은 숫자 인덱스를 사용하여 참조할 수 있습니다.
식 | 값 |
---|---|
/document/merged_content/keyphrases/1 |
"Syndrome" |
/document/merged_content/entities/0/text |
"BMN" |
이스케이프 시퀀스
특별한 의미가 있고 식에 나타나는 경우 이스케이프해야 하는 두 문자('/'
및 '~'
)가 있으며, 특별한 의미 대신 있는 그대로 해석되어야 합니다.
이러한 문자는 각각 '~0'
및 '~1'
로 이스케이프해야 합니다.
배열 열거형
값 배열은 '*'
토큰을 사용하여 가져올 수 있습니다.
식 | 값 |
---|---|
/document/normalized_images/0/text/words/* |
["Study", "of", "BMN", "110" ...] |
'*'
토큰은 경로 끝에 있을 필요가 없습니다. 가운데에 하나의 별이 있거나 여러 개의 별이 있는 경로와 일치하는 모든 노드를 열거할 수 있습니다.
식 | 값 |
---|---|
/document/normalized_images/*/text/words/* |
["Study", "of", "BMN", "110" ... "it", "is", "certainly" ...] |
예제에서는 일치하는 모든 노드의 단순 목록을 반환합니다.
두 번째 '*'
토큰 대신 '#'
토큰을 사용하여 더 많은 구조를 유지하고 각 페이지의 단어에 대해 별도의 배열을 가져올 수 있습니다.
식 | 값 |
---|---|
/document/normalized_images/*/text/words/# |
[["Study", "of", "BMN", "110" ...], ["it", "is", "certainly" ...] ...] |
'#'
토큰은 배열이 열거되는 대신 단일 값으로 처리되어야 함을 나타냅니다.
컨텍스트에서 배열 열거
배열의 각 요소를 격리 상태로 처리하고 각각에 대해 서로 다른 기술 입력 및 출력 세트를 갖는 것이 유용한 경우가 많습니다.
이 작업은 기술의 컨텍스트를 기본 "/document"
대신 열거형으로 설정하여 수행할 수 있습니다.
다음 예제에서는 이전에 사용한 입력 식 중 하나를 사용하지만 결과 값을 변경하는 다른 컨텍스트를 사용합니다.
Context | 식 | 값 |
---|---|---|
/document/normalized_images/* |
/document/normalized_images/*/text/words/* |
["Study", "of", "BMN", "110" ...] ["it", "is", "certainly" ...] ... |
이 컨텍스트 및 입력 조합의 경우 기술은 각 정규화된 이미지에 대해 한 번 실행됩니다("/document/normalized_images/0"
에 대해 한 번, "/document/normalized_images/1"
에 대해 한 번). 각 기술 실행에 해당하는 두 개의 입력 값은 값 열에 자세히 설명되어 있습니다.
컨텍스트에서 배열을 열거하는 경우 기술에서 생성하는 모든 출력도 컨텍스트의 보강으로 문서에 추가됩니다.
위의 예에서 "out"
이라는 출력에는 각각 "/document/normalized_images/0/out"
및 "/document/normalized_images/1/out"
아래 문서에 추가된 각 실행에 대한 값이 있습니다.
리터럴 값
기술 입력은 기존 문서에서 쿼리된 동적 값 대신 리터럴 값을 입력으로 사용할 수 있습니다. 이 작업은 등호를 값 앞의 접두사로 지정하여 수행할 수 있습니다. 값은 숫자, 문자열 또는 부울일 수 있습니다.
문자열 값은 작은따옴표('
) 또는 큰 따옴표("
)로 묶을 수 있습니다.
식 | 값 |
---|---|
=42 |
42 |
=2.45E-4 |
0.000245 |
="some string" |
"some string" |
='some other string' |
"some other string" |
="unicod\u0065" |
"unicode" |
=false |
false |
라인 배열에서
특정 기술 입력에 데이터 배열이 필요하지만 데이터가 현재 단일 값으로 표시되거나 여러 개의 서로 다른 단일 값을 배열 필드에 결합해야 하는 경우 쉼표로 구분된 식 목록을 대괄호([
및 ]
)로 묶어 기술 입력 식의 일부로 배열 값 인라인을 만들 수 있습니다. 배열 값은 필요에 따라 식 경로 또는 리터럴 값의 조합일 수 있습니다. 이 방법으로 배열 내에 중첩 배열을 만들 수도 있습니다.
식 | 값 |
---|---|
=['item'] |
["item"] |
=[$(/document/merged_content/entities/0/text), 'item'] |
["BMN", "item"] |
=[1, 3, 5] |
[1, 3, 5] |
=[true, true, false] |
[true, true, false] |
=[[$(/document/merged_content/entities/0/text), 'item'],['item2', $(/document/merged_content/keyphrases/1)]] |
[["BMN", "item"], ["item2", "Syndrome"]] |
기술에 배열 입력별로 기술을 실행하는 방법을 설명하는 컨텍스트가 있는 경우(즉, "context": "/document/pages/*"
가 기술이 pages
의 "페이지"당 한 번 실행된다는 의미), 해당 값을 인라인 배열에 대한 입력으로 식으로 전달하면 한 번에 해당 값 중 하나가 사용됩니다.
샘플 보강 데이터의 예를 들어, 보유 기술이 context
가 /document/merged_content/keyphrases/*
인 경우, 해당 기술의 입력에 대해 다음 =['key phrase', $(/document/merged_content/keyphrases/*)]
의 인라인 배열을 만든 다음, 기술은 세 번 실행됩니다. 한 번은 ["key phrase", "Study of BMN"] 값으로 실행되고, 다른 한 번은 ["key phrase", "Syndrome"] 값으로 실행되고, 마지막으로 ["key phrase", "Pediatric Patients"] 값으로 실행됩니다. 리터럴 "핵심 구" 값은 매번 동일하게 유지되지만 식 경로의 값은 각 기술 실행에 따라 변경됩니다.
복합 식
단항, 이항 및 삼항 연산자를 사용하여 값을 모두 결합할 수 있습니다.
연산자는 리터럴 값과 경로 평가의 결과 값을 결합할 수 있습니다.
식 내에서 사용되는 경우 경로는 "$("
과 ")"
사이에 묶어야 합니다.
'!'
가 아닌 부울
식 | 값 |
---|---|
=!false |
true |
부정 '-'
식 | 값 |
---|---|
=-42 |
-42 |
=-$(/document/merged_content/entities/0/offset) |
-9 |
더하기 '+'
식 | 값 |
---|---|
=2+2 |
4 |
=2+$(/document/merged_content/entities/0/offset) |
11 |
빼기 '-'
식 | 값 |
---|---|
=2-1 |
1 |
=$(/document/merged_content/entities/0/offset)-2 |
7 |
곱하기 '*'
식 | 값 |
---|---|
=2*3 |
6 |
=$(/document/merged_content/entities/0/offset)*2 |
18 |
나누기 '/'
식 | 값 |
---|---|
=3/2 |
1.5 |
=$(/document/merged_content/entities/0/offset)/3 |
3 |
모듈로 '%'
식 | 값 |
---|---|
=15%4 |
3 |
=$(/document/merged_content/entities/0/offset)%2 |
1 |
보다 작음, 작거나 같음, 크거나 같 '<'
'<='
'>'
음 '>='
식 | 값 |
---|---|
=15<4 |
false |
=4<=4 |
true |
=15>4 |
true |
=1>=2 |
false |
같음 및 같지 않음 '=='
'!='
식 | 값 |
---|---|
=15==4 |
false |
=4==4 |
true |
=15!=4 |
true |
=1!=1 |
false |
논리 연산 및 배타적 또는 '&&'
'||'
'^'
식 | 값 |
---|---|
=true&&true |
true |
=true&&false |
false |
=true||true |
true |
=true||false |
true |
=false||false |
false |
=true^false |
true |
=true^true |
false |
삼항 연산자 '?:'
삼항 연산자를 사용하는 부울 식의 계산에 따라 다른 값을 입력에 제공할 수 있습니다.
식 | 값 |
---|---|
=true?"true":"false" |
"true" |
=$(/document/merged_content/entities/0/offset)==9?"nine":"not nine" |
"nine" |
괄호 및 연산자 우선 순위
연산자는 단항 연산자, 곱하기, 나누기 및 모듈로, 더하기 및 빼기, 비교, 같음, 논리 연산자 순서의 일반적인 규칙과 일치하는 우선 순위로 계산됩니다. 일반적인 연결 규칙도 적용됩니다.
괄호는 계산 순서를 변경하거나 명확히 하는 데 사용하는 데 수 있습니다.
식 | 값 |
---|---|
=3*2+5 |
11 |
=3*(2+5) |
21 |