2.X/3. Dealing with Human Language

3-2-2. standard Tokenizer

drscg 2017. 9. 24. 17:35

tokenizer accepts a string as input, processes the string to break it into individual words, or tokens(perhaps discarding some characters like punctuation), and emits a token stream as output.

tokenizer 는 입력으로 string을 받고, string을 개별 단어나 token 으로 나누고(아마도, 문장 부호 같은 몇 가지 문자는 버린다), token stream 을 출력한다.

What is interesting is the algorithm that is used to identify words. The whitespace tokenizer simply breaks on whitespace—spaces, tabs, line feeds, and so forth—and assumes that contiguous nonwhitespace characters form a single token. For instance:

흥미로운 점은 단어를 구분하는데(identify) 사용되는 알고리즘이다. whitespace tokenizer는 단순하게 whitespace(공백, tab, line feed 등)로 분할한다. 그리고 이어지는 whitespace가 아닌 인접한 문자들을 하나의 token을 구성한다고 가정한다. 예를 들면,

GET /_analyze?tokenizer=whitespace
You're the 1st runner home!

This request would return the following terms: You'rethe1strunnerhome!

위의 request는 다음 단어들을 반환할 것이다. You'rethe1strunnerhome!

The letter tokenizer, on the other hand, breaks on any character that is not a letter, and so would return the following terms: Yourethestrunnerhome.

반면에, letter tokenizer는 문자(letter)가 아닌 어떤 글자(character)를 기준으로 분할한다. 따라서 다음 단어들을 반환할 것이다. Yourethestrunnerhome.

The standard tokenizer uses the Unicode Text Segmentation algorithm (as defined in Unicode Standard Annex #29) to find the boundaries between words, and emits everything in-between. Its knowledge of Unicode allows it to successfully tokenize text containing a mixture of languages.

standard tokenizer는 단어 사이의 경계를 찾고, 그 사이에 있는 모든 것을 출력하기 위하여, Unicode Standard Annex #29에 정의된, Unicode 텍스트 분할 알고리즘(Unicode Text Segmentation Algorithm)을 사용한다. Unicode에 대한 이러한 지식을 이용하여, 여러 언어가 섞여 있는 문장(text)을 token으로 잘 분할할 수 있다.

Punctuation may or may not be considered part of a word, depending on where it appears:

문장 부호(punctuation)는 그것의 위치에 따라 단어의 일부가 될 수도, 안 될 수도 있다.

GET /_analyze?tokenizer=standard
You're my 'favorite'.

In this example, the apostrophe in You're is treated as part of the word, while the single quotes in 'favorite' are not, resulting in the following terms: You'remyfavorite.

위의 예제에서, You're 에 나타나는 아포스트로피(apostrophe)는 단어의 일부로 간주되는 반면, 'favorite' 에 나타나는 단일 인용부호(single quotes)는 그렇지 않기 때문에, 결과는 다음 단어로 나타날 것이다. You'remyfavorite.

Tip

The uax_url_email tokenizer works in exactly the same way as the standard tokenizer, except that it recognizes email addresses and URLs and emits them as single tokens. The standard tokenizer, on the other hand, would try to break them into individual words. For instance, the email address joe-bloggs@foo-bar.com would result in the tokens joebloggsfoobar.com.

uax_url_email tokenizer는 email 주소와 URL을 인식하여 하나의 token으로 출력한다는 점을 제외하면, standard tokenizer와 정확히 동일한 방식으로 작동한다. 반면에, standardtokenizer는 그것을 개별 단어로 분할하려 할 것이다. 예를 들어, email 주소 joe-bloggs@foo-bar.com 은 joebloggsfoobar.com 이라는 token으로 나올 것이다.

The standard tokenizer is a reasonable starting point for tokenizing most languages, especially Western languages. In fact, it forms the basis of most of the language-specific analyzers like the englishfrench, and spanish analyzers. Its support for Asian languages, however, is limited, and you should consider using the icu_tokenizer instead, which is available in the ICU plug-in.

standard tokenizer는 대부분의 언어, 특히 서구 언어를 token으로 분할하는데 있어 적절한 시작점이다. 사실, 이것이 영어(english)프랑스어(french)스페인어(spanish) 같은 대부분의 언어별 analyzer의 기반이다. 그러나, 아시아 언어에 대한 지원은 제한적이다. 대신, ICU plug-in에서 이용할 수 있는,icu_tokenizer 의 사용을 고려해야 한다.

'2.X > 3. Dealing with Human Language' 카테고리의 다른 글

3-2. Identifying Words  (0) 2017.09.24
3-2-1. standard Analyzer  (0) 2017.09.24
3-2-3. Installing the ICU Plug-in  (0) 2017.09.24
3-2-4. icu_tokenizer  (0) 2017.09.24
3-2-5. Tidying Up Input Text  (0) 2017.09.24