2.X/3. Dealing with Human Language

3-6-6. Symbol Synonyms

drscg 2017. 9. 24. 12:36

The final part of this chapter is devoted to symbol synonyms, which are unlike the synonyms we have discussed until now. Symbol synonyms are string aliases used to represent symbols that would otherwise be removed during tokenization.

이 장의 마지막은, 지금까지 이야기했던 동의어와는 다른, symbol synonym이다. 상징의 동의어(Symbol Synonyms) 는 token을 만드는 도중에 제거되는, 상징을 표시하는데 사용되는 문자열로 이루어진 별칭이다.

While most punctuation is seldom important for full-text search, character combinations like emoticons may be very significant, even changing the meaning of the text. Compare these:

대부분의 문장 부호는 full-text 검색에서 거의 중요하지 않지만, 이모티콘 같은 문자의 조합은 매우 의미가 있어, 심지어 문장의 의미를 변경하기도 한다. 아래 문장을 비교해 보자.

  • I am thrilled to be at work on Sunday.
  • I am thrilled to be at work on Sunday :(

The standard tokenizer would simply strip out the emoticon in the second sentence, conflating two sentences that have quite different intent.

standard tokenizer는 두 번째 문장의 이모티콘을 단순하게 제거할 것이다. 매우 다른 의도를 가지고 있는 두 문장을 동일하게 취급한다.

We can use the mapping character filter to replace emoticons with symbol synonyms like emoticon_happy and emoticon_sad before the text is passed to the tokenizer:

문장을 tokenizer에 전달하기 전에, 이모티콘을 emoticon_happyemoticon_sad 같은 상징의 동의어(Symbol Synonyms)로 대체하는, mapping character filter 를 사용할 수 있다.

PUT /my_index
{
  "settings": {
    "analysis": {
      "char_filter": {
        "emoticons": {
          "type": "mapping",
          "mappings": [ 
            ":)=>emoticon_happy",
            ":(=>emoticon_sad"
          ]
        }
      },
      "analyzer": {
        "my_emoticons": {
          "char_filter": "emoticons",
          "tokenizer":   "standard",
          "filter":    [ "lowercase" ]
          ]
        }
      }
    }
  }
}

GET /my_index/_analyze?analyzer=my_emoticons
I am :) not :( 

mappings filter는 => 왼쪽의 문자를 오른쪽에 있는 것으로 바꾼다.

출력 token: iamemoticon_happynotemoticon_sad.

It is unlikely that anybody would ever search for emoticon_happy, but ensuring that important symbols like emoticons are included in the index can be helpful when doing sentiment analysis. Of course, we could equally have used real words, like happy and sad.

누구도 emoticon_happy 를 검색하지는 않겠지만, 이모티콘 같은 중요한 상징이 index에 포함된다는 것은, 심리 분석의 경우 매우 유용할 수 있다. 물론, happysad 같은 실제의 단어를 똑같이 사용할 수 있다.

Tip

The mapping character filter is useful for simple replacements of exact character sequences. For more-flexible pattern matching, you can use regular expressions with the pattern_replace character filter.

mapping character filter는 정확한 문자 배열의 교체에 유용하다. 보다 유연한 pattern 일치의 경우, pattern_replace character filter 로 정규식을 사용할 수 있다.


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

3-6-4. Synonyms and The Analysis Chain  (0) 2017.09.24
3-6-5. Multiword Synonyms and Phrase Queries  (0) 2017.09.24
3-7. Typoes and Mispelings  (0) 2017.09.24
3-7-1. Fuzziness  (0) 2017.09.24
3-7-2. Fuzzy Query  (0) 2017.09.24