Skip to content

Latest commit

 

History

History
214 lines (200 loc) · 5.66 KB

6.5.1-standard-letter-whitespace.md

File metadata and controls

214 lines (200 loc) · 5.66 KB
description
이 문서의 허가되지 않은 무단 복제나 배포 및 출판을 금지합니다. 본 문서의 내용 및 도표 등을 인용하고자 하는 경우 출처를 명시하고 김종민([email protected])에게 사용 내용을 알려주시기 바랍니다.

6.5.1 Standard, Letter, Whitespace

일반적으로 가장 많이 사용되고 기능이 유사하지만 분명히 다른 특징이 있는 Standard, Letter, Whitespace 3가지 토크나이저를 먼저 살펴보도록 하겠습니다. 각자 따로 설명하는 것 보다 동일한 문장이 위의 세 토큰 필터에서 어떻게 다르게 분리가 되는지를 살펴보면서 설명을 하겠습니다. 분석할 문장은 "THE quick.brown_FOx jumped! @ 3.5 meters." 입니다.

{% tabs %} {% tab title="request" %} {% code title="standard 토크나이저로 문장 분석" %}

GET _analyze
{
  "tokenizer": "standard",
  "text": "THE quick.brown_FOx jumped! @ 3.5 meters."
}

{% endcode %} {% endtab %}

{% tab title="response" %} {% code title="standard 토크나이저로 문장 분석 결과" %}

{
  "tokens" : [
    {
      "token" : "THE",
      "start_offset" : 0,
      "end_offset" : 3,
      "type" : "<ALPHANUM>",
      "position" : 0
    },
    {
      "token" : "quick.brown_FOx",
      "start_offset" : 4,
      "end_offset" : 19,
      "type" : "<ALPHANUM>",
      "position" : 1
    },
    {
      "token" : "jumped",
      "start_offset" : 20,
      "end_offset" : 26,
      "type" : "<ALPHANUM>",
      "position" : 2
    },
    {
      "token" : "3.5",
      "start_offset" : 30,
      "end_offset" : 33,
      "type" : "<NUM>",
      "position" : 3
    },
    {
      "token" : "meters",
      "start_offset" : 34,
      "end_offset" : 40,
      "type" : "<ALPHANUM>",
      "position" : 4
    }
  ]
}

{% endcode %} {% endtab %} {% endtabs %}

{% tabs %} {% tab title="request" %} {% code title="letter 토크나이저로 문장 분석" %}

GET _analyze
{
  "tokenizer": "letter",
  "text": "THE quick.brown_FOx jumped! @ 3.5 meters."
}

{% endcode %} {% endtab %}

{% tab title="response" %} {% code title="letter 토크나이저로 문장 분석 결과" %}

{
  "tokens" : [
    {
      "token" : "THE",
      "start_offset" : 0,
      "end_offset" : 3,
      "type" : "word",
      "position" : 0
    },
    {
      "token" : "quick",
      "start_offset" : 4,
      "end_offset" : 9,
      "type" : "word",
      "position" : 1
    },
    {
      "token" : "brown",
      "start_offset" : 10,
      "end_offset" : 15,
      "type" : "word",
      "position" : 2
    },
    {
      "token" : "FOx",
      "start_offset" : 16,
      "end_offset" : 19,
      "type" : "word",
      "position" : 3
    },
    {
      "token" : "jumped",
      "start_offset" : 20,
      "end_offset" : 26,
      "type" : "word",
      "position" : 4
    },
    {
      "token" : "meters",
      "start_offset" : 34,
      "end_offset" : 40,
      "type" : "word",
      "position" : 5
    }
  ]
}

{% endcode %} {% endtab %} {% endtabs %}

{% tabs %} {% tab title="request" %} {% code title="whitespace 토크나이저로 문장 분석" %}

GET _analyze
{
  "tokenizer": "whitespace",
  "text": "THE quick.brown_FOx jumped! @ 3.5 meters."
}

{% endcode %} {% endtab %}

{% tab title="response" %} {% code title="whitespace 토크나이저로 문장 분석 결과" %}

{
  "tokens" : [
    {
      "token" : "THE",
      "start_offset" : 0,
      "end_offset" : 3,
      "type" : "word",
      "position" : 0
    },
    {
      "token" : "quick.brown_FOx",
      "start_offset" : 4,
      "end_offset" : 19,
      "type" : "word",
      "position" : 1
    },
    {
      "token" : "jumped!",
      "start_offset" : 20,
      "end_offset" : 27,
      "type" : "word",
      "position" : 2
    },
    {
      "token" : "@",
      "start_offset" : 28,
      "end_offset" : 29,
      "type" : "word",
      "position" : 3
    },
    {
      "token" : "3.5",
      "start_offset" : 30,
      "end_offset" : 33,
      "type" : "word",
      "position" : 4
    },
    {
      "token" : "meters.",
      "start_offset" : 34,
      "end_offset" : 41,
      "type" : "word",
      "position" : 5
    }
  ]
}

{% endcode %} {% endtab %} {% endtabs %}

앞 예제들의 response 탭을 열어 각각의 결과를 확인 해 보면 다음과 같습니다.

먼저 Standard 토크나이저는 공백으로 텀을 구분하면서 "@"과 같은 일부 특수문자를 제거합니다. "jumped!"의 느낌표, "meters."의 마침표 처럼 단어 끝에 있는 특수문자는 제거되지만 "quick.brown_FOx" 또는 "3.5" 처럼 중간에 있는 마침표나 밑줄 등은 제거되거나 분리되지 않는 것을 확인할 수 있습니다.

Letter 토크나이저는 알파벳을 제외한 모든 공백, 숫자, 기호들을 기준으로 텀을 분리합니다. "quick.brown_FOx" 같은 단어도 "quick", "brown", "FOx" 처럼 모두 분리된 것을 확인할 수 있습니다.

Whitespace 토크나이저는 스페이스, 탭, 그리고 줄바꿈 같은 공백만을 기준으로 텀을 분리합니다. 특수문자 "@" 그리고 "meters." 의 마지막에 있는 마침표도 사라지지 않고 그대로 남아있는 것을 확인할 수 있습니다.

3개의 토크나이저 중에 Letter 토크나이저의 경우 검색 범위가 넓어져서 원하지 않는 결과가 많이 나올 수 있고, 반대로 Whitespace의 경우 특수문자를 거르지 않기 때문에 정확하게 검색을 하지 않으면 검색 결과가 나오지 않을 수 있습니다. 따라서 보통은 Standard 토크나이저를 많이 사용합니다.