'한글형태소분석'에 해당되는 글 1건

  1. 2015.11.10 [Elasticsearch] arirang analyzer offset 추출 오류.

[Elasticsearch] arirang analyzer offset 추출 오류.

Elastic/Elasticsearch 2015. 11. 10. 15:38

[아래 문제 회피]

기본적으로 pairmap 관련 기능을 사용하지 않으면 문제를 회피 할 수 있습니다.

더 근본적으로는 관련 기능에 대한 개선이 필요 하겠지만 일단 빠르게 해결 하기 위해서 코드를 제거해 보겠습니다.


대상파일)

KoreanTokenizer.java


삭제 대상코드) 

            if(pairstack.size()>0 && pairstack.get(0)==c) {

                pairstack.remove(0);

                continue;

            }


            int closechar = getPairChar(c);

            if(closechar!=0) {

                if((pairstack.size()==0 || pairstack.get(0)!=closechar) && length>0) {

                    pairstack.add(0,closechar);

                    break;

                } else {

                    pairstack.add(0,closechar);

                    continue;

                }

            }

위 코드를 주석 처리 후 빌드해서 배포 하시면 됩니다.


+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


최근에 arirang analyzer plugin을 만들어서 elasticsearch에서 사용하고 있습니다.

사용하다 발견된 버그 공유 합니다.


[색인원본문서]

(‘14.8월)의 일환으로 ’15.3.3 상반기중(행복서울대학교 등 활용)


[Arirang Analyzed]

{

    "tokens": [

        {

            "token": "14",

            "start_offset": 2,

            "end_offset": 4,

            "type": "word",

            "position": 0

        },

        {

            "token": "8월",

            "start_offset": 5,

            "end_offset": 7,

            "type": "korean",

            "position": 1

        },

        {

            "token": "의",

            "start_offset": 8,

            "end_offset": 9,

            "type": "korean",

            "position": 2

        },

        {

            "token": "일환",

            "start_offset": 10,

            "end_offset": 12,

            "type": "korean",

            "position": 3

        },

        {

            "token": "15",

            "start_offset": 16,

            "end_offset": 18,

            "type": "word",

            "position": 4

        },

        {

            "token": "3",

            "start_offset": 19,

            "end_offset": 20,

            "type": "word",

            "position": 5

        },

        {

            "token": "3",

            "start_offset": 21,

            "end_offset": 22,

            "type": "word",

            "position": 6

        },

        {

            "token": "상반기중행복서울대학교",

            "start_offset": 23,

            "end_offset": 34,

            "type": "korean",

            "position": 7

        },

        {

            "token": "상반",

            "start_offset": 23,

            "end_offset": 25,

            "type": "korean",

            "position": 7

        },

        {

            "token": "기중",

            "start_offset": 25,

            "end_offset": 27,

            "type": "korean",

            "position": 8

        },

        {

            "token": "행복",

            "start_offset": 27,

            "end_offset": 29,

            "type": "korean",

            "position": 9

        },

        {

            "token": "서울",

            "start_offset": 29,

            "end_offset": 31,

            "type": "korean",

            "position": 10

        },

        {

            "token": "대학교",

            "start_offset": 31,

            "end_offset": 34,

            "type": "korean",

            "position": 11

        },

        {

            "token": "등",

            "start_offset": 36,

            "end_offset": 37,

            "type": "korean",

            "position": 12

        },

        {

            "token": "활용",

            "start_offset": 38,

            "end_offset": 40,

            "type": "korean",

            "position": 13

        }

    ]

}


여기서 보시면 "행복"에서 부터 offset 정보가 하나씩 줄어든것을 확인 할 수 있습니다.


[원본 변경을 통한 문제해결 - 하나]

(‘14.8월)의 일환으로 15.3.3 상반기중(행복서울대학교 등 활용)

- ’15 (apostrophe) 제거


[원본 변경을 통한 문제해결 - 둘]

(‘14.8월)의 일환으로 ’15.3.3 상반기중(행복서울대학교 등 활용)

- 8월’ (apostrophe) 추가


[원본 변경을 통한 문제해결 - 셋]

(14.8월)의 일환으로 ’15.3.3 상반기중(행복서울대학교 등 활용)

- ’14 (apostrophe) 제거


[원본 변경을 통한 문제해결 - 넷]

‘14.8월)의 일환으로 ’15.3.3 상반기중(행복서울대학교 등 활용)

- ( 제거


[해결 방법?]

- 복합 pairmap 구성에 대한 arirang analyzer 오류 수정 (tokenizer 와 filter 쪽 수정이 필요해 보입니다.)

- 원본에 대한 character normalization 작업을 통해 filter 를 합니다.

: