다음을 통해 공유


기타 언어 및 유니코드 고려 사항

이 항목에서는 agglutinative 언어 및 유니코드 서로게이트 쌍에 대한 형태소 분석 고려 사항과 서로게이트 쌍을 사용하여 서로 다른 문자 집합을 수용하도록 유니코드 문자 집합을 확장하는 방법에 대해 설명합니다. 또한 이 항목에서는 단어 분리기가 텍스트의 구를 식별하고 줄 바꿈하지 않는 공백을 처리하는 방법과 단어 분리기 및 형태소 분석기가 숫자와 날짜, 복합 단어, 복합 구, 특수 단어 및 문자, 약어 및 대문자를 처리하는 방법에 대해서도 설명합니다.

이 항목은 다음과 같이 구성됩니다.

구 식별

구는 하나 이상의 다른 사용자가 수정한 단어 또는 단어 그룹입니다. 동일한 한정자가 동일한 명사를 가진 둘 이상의 구에서 사용될 수 있으므로 구를 일관되게 식별하기가 어렵습니다. 예를 들어 "새 집", "의회 의사당", "새 의회"가 있습니다.

Windows Search는 쿼리 시간에 가장 자주 구를 사용합니다. 쿼리 텍스트의 구는 개별 단어보다 더 높은 가중치를 받습니다. 이전 예제에서 "하원"이 포함된 문서는 문서의 다른 지점에서 "집"과 "의회"를 포함하는 문서보다 높은 순위가 지정됩니다. 구가 하나 이상의 문서와 일치할 가능성이 있는 경우 쿼리 시 단어 분리기가 구를 생성하는 것이 좋습니다.

Agglutinative Languages

Agglutinative 언어는 복합 아이디어를 표현하기 위해 작은 모뎀의 조합을 통해 단어를 형성합니다. 이러한 각 모뎀은 일반적으로 하나의 의미 또는 함수를 가지며 조합 프로세스 중에 원래의 형태와 의미를 유지합니다. 터키어, 핀란드어, 헝가리어 또는 한국어와 같은 변질적인 형태가 있는 언어의 경우 지정된 루트 단어에 대해 수천 개의 양식을 생성할 수 있습니다.

다음 표에서는 핀란드어 단어 "talo"("house")의 굴절된 양식 목록을 보여 줍니다.

Word Translation
탈로 ()
탈로니 섬 우리 집
탈로사 () 집에서
탈로사니 주 내 집에서
탈로자 주 주택
Taloissa 집에서

 

영어, 프랑스어 및 라틴어와 같은 굴절된 언어에는 하나의 루트 단어에 대해 가능한 단어 형식이 매우 적습니다. 변형된 언어에서 모템은 바인딩할 때 서로 영향을 줍니다. 변곡점의 대부분의 변화는 줄기 또는 단어 끝부분에 있습니다. 변곡된 언어와 달리 굴절된 언어는 단일 모페메에 대해 다른 기능을 갖는 경향이 있습니다. 예를 들어 모페메는 숫자와 대/소문자를 모두 확인할 수 있습니다.

agglutinative 언어에 대한 형태소 분석기는 가능한 단어 양식의 수의 하위 집합만 생성하기 위해 성능과 정확도 간의 장단위에 무게를 두어야 합니다.

숫자, 시간 및 날짜

Word 차단기는 일관된 쿼리를 용이하게 하기 위해 숫자, 시간 및 날짜를 나타내는 공통 형식을 사용해야 합니다.

단어 분리기를 만들 때 단어 분리기는 "NNdd Dcc" 패턴을 사용하여 숫자를 정규화하는 것이 좋습니다. 여기서 NN은 리터럴 시퀀스 "NN"이고, dd는 숫자의 정수 부분이고, D는 리터럴 "D"이고, cc는 숫자의 소수 부분입니다. Word 분리기는 정수 또는 숫자의 소수 부분에 대한 숫자 수를 제한하지 않습니다. 단어 분리기는 마침표(.) 및 쉼표(,)로 구분된 숫자 패턴을 인식하는 것이 좋습니다. 예를 들어 Windows Search는 "1,000.2" 및 "1.000,2"를 모두 "NN1000D2"로 나타냅니다.

단어 분리기와 형태소 분석기 둘 다에 대해 하나의 형식을 선택합니다. 이러한 폼을 포함하는 쿼리가 다른 양식과 문서와 일치할 수 있도록 단일 바이트 아랍어 숫자가 정규화됩니다.

단어 분리기를 만들 때 단어 분리기는 "TThhmmss" 패턴을 사용하여 항상 24시간 표현으로 표시하는 것이 좋습니다. 여기서 TT는 리터럴 접두사 "TT", hh 는 시간, mm 은 분, ss 는 초입니다. Windows Search는 밀리초와 같은 추가 시간 단위와 일치하지 않습니다. 오전 및 오후 패턴을 구문 분석하는 것은 선택 사항입니다.

단어 분리기를 만들 때 단어 분리기는 "DDyyyymmdd"의 정식 형식으로 날짜를 생성하는 것이 좋습니다. 여기서 DD는 리터럴 "DD", yyyy 는 연도, mm 은 월, dd 는 일입니다. 또한 단어 분리기는 20세기와 21세기 형식으로 두 자리 연도를 저장하는 것이 좋습니다. 예를 들어 단어 분리기는 "2.2.99"를 "DD19990202" 및 "DD20990202"로 나타냅니다. 쿼리 시 Windows Search는 Windows API(애플리케이션 프로그래밍 인터페이스)를 사용하여 서버가 올바른 형식인 19XX 또는 20XX를 표시할 크로스오버 날짜를 결정하여 날짜를 파생합니다.

복합 단어

독일어와 같은 일부 언어에서는 명사들이 더 간단한 명사에서 복합됩니다. 이러한 복합 명사들은 적절한 쿼리 회수를 의미하는 데 너무 구체적입니다. 예를 들어 분해가 없으면 "Versicherung"("보험")에 대한 쿼리가 "Lebensversicherungsgesellschaft"("생명 보험 판매원")와 일치하지 않습니다. 이와 같은 경우 단어 분리기는 인덱스를 만들고 쿼리하는 동안 이러한 복합 단어를 기본 구성 요소로 분할하는 것이 좋습니다. 독일어 단어 분리기는 "Lebensversicherungsgesellschaft"를 구성 요소 단어 "Leben", "Versicherung", "Gesellschaft"로 나눕니다. 각 결과 용어에 대해 선택적 형태소 분석과 함께 쿼리 시 동일한 분해를 적용합니다.

복합 구

한국어와 같은 일부 언어에는 다양한 방법으로 끊어질 수 있는 복잡한 문구가 포함되어 있습니다. 한국어 구문은 명사, 대명사, 동사 및 형용사와 같은 콘텐츠 단어기능적 단어로 구성됩니다. 기능 단어는 포스트 위치와 엔딩에서 찾을 수 있습니다. 사후 위치는 문장에서 명사 또는 대명사 역할을 나타냅니다. 끝은 동사 또는 형용사의 기능적 역할을 나타냅니다.

한 구에는 여러 분석이 있을 수 있으며 각 분석은 여러 콘텐츠 단어로 구성됩니다. 단어 분리기는 언어별 추론을 사용하여 컨텍스트에서 다양한 분석에 얼마나 많은 가중치를 부여해야 하는지 결정해야 합니다. 단어 분리기는 결과 구성 요소 단어의 수에 따라 사용할 분해를 결정할 수 있습니다. 일부 단어 분리기는 더 긴 단어의 짧은 시퀀스를 선호할 수 있지만 다른 단어 분리기는 더 작은 단어의 긴 시퀀스를 선호할 수 있습니다.

또 다른 고려 사항은 한국어에서 명사 및 대명사는 해당 기능 단어 없이 인덱스에 저장될 수 있다는 것입니다. 한국어는 어설션된 언어이며 수많은 단어 엔딩과 동사 및 형용사를 결합하여 수많은 굴곡이 있는 형태를 형성합니다. 구문에서 식별된 동사와 형용사는 인덱스의 끝과 함께 저장되지만 단어 분리기는 새 양식을 생성하지 않습니다.

특수 문자 및 단어

특수 문자는 "", "" © 및 "™"와 같은 문자입니다. 이러한 문자는 쿼리에서 거의 사용되지 않습니다. Word 차단기는 인덱스 생성 중 및 쿼리 시간에 특수 문자를 제거해야 합니다.

단어 분리기는 "C++", "C#", ".NET" 성적 및 음악 표기법과 같은 특수 단어를 인식하는 것이 좋습니다. Word 차단기는 언어 추론을 사용하여 특수 단어의 패턴을 식별할 수 있습니다. Word 차단기는 인식된 특수 단어가 포함된 사용자 지정 사전을 사용할 수도 있습니다.

머리글자어 및 약어

단어 분리기를 구현할 때 머리글자어와 약어를 고려해야 합니다. 많은 언어에서 머리글자어의 개별 문자는 마침표로 구분됩니다. 경우에 따라 약어 또는 약어로 인식되지 않는 단어가 축약됩니다. 예를 들어 "미국"은 "USA" 또는 "U.S.A"로 축약될 수 있습니다. Windows Search에 포함된 Word 차단기는 일반적으로 단일 문자 단어를 노이즈 단어로 식별하고 쿼리 시간 동안 해당 단어를 자리 표시자로 처리합니다. 쿼리 시간 동안 일반적인 약어를 인식하지 못하거나 약어를 인식하지 못하는 단어 분리기는 약어 "U.S.A."를 "U", "S" 및 "A"로 변환합니다. 이 분해는 모든 쿼리 용어가 노이즈 단어이므로 전체 텍스트 인덱스의 단어와 일치하는 충분한 정보를 제공하지 않습니다. 단어 분리기를 만들 때 단어 분리기에서 머리글자어를 구분하는 마침표가 제거되는 것이 좋습니다. 예제에서 "U.S.A."는 "USA"로 저장되고 "U.S.A."가 포함된 쿼리 용어로 저장됩니다. 실제로 "USA"에 대한 쿼리입니다. 단어 분리기가 약어를 처리하는 경우 해당 약어의 마침표는 EOS 중단으로 처리되지 않습니다. 이 때문에 약어가 문장 끝에 있는 경우 단어 분리기가 EOS 중단을 올바르게 식별하지 못할 수 있습니다.

대문자 표시

Windows Search는 현재 전체 텍스트 인덱스에 단어를 저장할 때 대문자를 유지하지 않습니다. Word 차단기 및 형태소 분석기는 단어의 대/소문자를 수정해서는 안 됩니다.

깨지지 않는 공간

단어 분리기를 만들 때는 단어 분리기에서 줄 바꿈하지 않는 공백을 단어 구분 기호로 처리하는 것이 좋습니다. 또한 단어 분리기는 줄 바꿈이 없는 공백을 사용 또는 사용하지 않고 단어의 대체 형식을 생성하는 것이 좋습니다. 밑줄과 같은 일부 문자는 밑줄이 있는 텍스트의 원본으로 인해 깨지지 않는 문자로 처리되는 특수 문자입니다. 예를 들어 소스 코드 또는 파일 이름에는 밑줄이 깨지지 않는 문자로 포함될 수 있습니다.

서로게이트 쌍

서로게이트 쌍은 두 유니코드 값 시퀀스로 구성된 단일 문자를 나타내는 소스 코드의 문자 표현입니다. 코딩된 쌍에서 첫 번째 값은 높은 서로게이트이고 두 번째 값은 낮은 서로게이트입니다. 상위 서로게이트는 U+D800~U+DBFF 범위의 문자입니다. 하위 서로게이트는 U+DFFF를 통한 U+DC00 범위의 문자입니다. 서로게이트 쌍은 유니코드 문자 이상으로 문자 집합을 확장합니다. 서로게이트 쌍을 처리할 때 단어 분리기에서 다음 규칙을 사용하는 것이 좋습니다.

  • 상위 서로게이트는 낮은 서로게이트 앞에 있어야 합니다.
  • 하위 서로게이트는 높은 서로게이트를 따라야 합니다.
  • 나머지 절반에 해당하는 값이 없는 높거나 낮은 서로게이트는 의미가 없습니다.

Word 차단기는 모든 쌍을 고려하고 인덱스에서와 같이 쌍을 생성해야 합니다. 자세한 내용은 서로게이트 및 보조 문자를 참조하세요.