inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

실전에서 바로 써먹는 Elasticsearch 입문 (검색 최적화편)

nori 관련 질문드립니다.

84

focandlol

작성한 질문수 2

0

안녕하세요 강사님 강의 잘 보고 있습니다.
다름 아니라 nori 토큰화 과정에서 이해가 안되는 부분이 있어서 질문드립니다.

get /_analyze
{
  "text":"",
  "analyzer":"nori"
}

 간단한 nori analyzer 테스트 쿼리입니다.

해운대 결과

{
  "tokens": [
    {
      "token": "해운",
      "start_offset": 0,
      "end_offset": 2,
      "type": "word",
      "position": 0
    },
    {
      "token": "대",
      "start_offset": 2,
      "end_offset": 3,
      "type": "word",
      "position": 1
    }
  ]
}


해운대로 결과

{
  "tokens": [
    {
      "token": "해운",
      "start_offset": 0,
      "end_offset": 2,
      "type": "word",
      "position": 0
    },
    {
      "token": "대",
      "start_offset": 2,
      "end_offset": 3,
      "type": "word",
      "position": 1
    }
  ]
}


해운대구 결과

{
  "tokens": [
    {
      "token": "해운대",
      "start_offset": 0,
      "end_offset": 3,
      "type": "word",
      "position": 0
    },
    {
      "token": "구",
      "start_offset": 3,
      "end_offset": 4,
      "type": "word",
      "position": 1
    }
  ]
}


해운대, 해운대로 결과에서는 해운대가 해운 + 대 로 토큰화 되었습니다.
해운대구 결과에서는 마찬가지로 해운 + 대 + 구 로 토큰화 될 것이라 예상했지만 해운대 + 구 로 토큰화 되었습니다.
어떤 이유로 이렇게 동작하는지 궁금합니다.

spring-boot elasticsearch devops elk infrastructure

답변 2

0

JSCODE 박재성

안녕하세요 focandlol님! 질문 잘 해주셨습니다:)

 

nori analyzer는 자체적인 로직으로 형태소를 분리합니다.

이 때, 문맥과 텍스트의 길이에 따라 형태소가 다르게 분리되기도 합니다.

이러한 원리 때문에 말씀해주신 상황이 발생한 것으로 유추됩니다!

 

이를 해결하기 위해서는 사용자 사전(user dictionary) 기능을 활용하셔야 합니다.

이와 관련해서는 링크에 설명이 잘 되어 있어서 링크 첨부드릴게요~!

https://esbook.kimjmin.net/06-text-analysis/6.7-stemming/6.7.2-nori

https://discuss.elastic.co/t/dec-17th-2020-kr-elastic-cloud/258379

https://daram.tistory.com/560

 

이 외로 궁금하신 점 있으시면 또 질문 남겨주세요~~

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. focandlol님.

Nori Analyzer가 작동하는 방식에 대한 궁금점을 해결해드리겠습니다. Nori Analyzer는 한국어의 형태소 분석을 통해 텍스트를 토큰화하는 기능을 제공합니다. 형태소 분석은 단어의 의미를 고려하여 가능한 가장 긴 형태소들을 우선적으로 추출하는 특징을 갖고 있습니다. 이 과정에서 Nori는 어근 및 접미사 등 어휘적 구조를 분석하여 의미적으로 가장 긴 형태소를 우선적으로 인식합니다.

주제 요약:

  • 형태소 분석 특징: Nori Analyzer는 가능한 고유한 의미를 가지는 가장 긴 형태소를 우선 인식합니다. 해운대구의 경우 해운대라는 단어가 하나의 지명으로 인식되며, 따라서 ‘해운대’가 하나의 형태소로 뽑힙니다.
  • 예시 설명:
    • 해운대와 같은 경우에는 명확한 의미적 구분 없이 더 작은 단위, ‘해운’과 ‘대’로 쪼개질 수 있습니다.
    • 반면 해운대구는 ‘해운대’라는 의미적 단위를 인식하여 ‘해운대’를 독립된 단위로 간주하고 다음에 오는 ‘구’와 따로 토큰화합니다.

이러한 방식은 다소 복잡하게 보일 수 있지만, 실제 검색 성능 향상에 도움이 되는 방식으로 설계되었습니다.

아래 URLs에서 Nori Analyzer에 대한 더 많은 정보와 예제를 참조하실 수 있습니다:
- Elasticsearch Nori Analyzer on Stack Overflow
- Nori Analyzer 공식 Elasticsearch 문서

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

멀티 필드 실무 질문드립니다.

0

56

1

페이지네이션 질문드립니다.

0

52

3

insert , upsert 질문드립니다.

0

57

2

안녕하세요 질문 있습니다.

0

100

2

검색어 애널라이저 질문

0

84

2

스프링부트에 엘라스틱서치 연결하기

0

131

2

60강 ProductDoument 코드 관련 질문 있습니다!

0

68

2

analyser를 인덱스 삭제후에 설정하던데 인덱스 생성후에도 analyser 수정이 가능한가요?

0

81

2

정말 사소한 질문이지만 ... 궁금해서 물어봅니다.

0

102

1

도큐먼트 upsert API 관련 강의 자료 오류 제보 드립니다.

0

84

2

안녕하세요 선생님 '실전에서 바로 써먹는 Kafka 입문' 강의 질문 있습니다.

0

120

1

spring boot project 에 테이블을 여러 개 만드는 경우의 설정을 알고 싶습니다.

0

87

2

58 강에서 동의어처리가 안 됩니다

0

149

4

opensearch nori 플러그인 지원

0

313

2

스프링부트에서 엘라스틱 인덱스 설정(동의어 필터 적용 에러)

0

164

2

docker compose.yml 주석 중에 이해 안되는 부분이 있어요

0

106

1

Elastic Cloud 에서 "Logs and metrics" 기능 관련 질문 있습니다.

0

114

1

must_not 쿼리는 term 쿼리만 사용 가능한가요 ?

0

105

2

(질문아님)Windows에서 Elasticsearch 하는 법

0

120

2

안녕하세요 선생님 Elastic Cloud 비용 관련해서 질문 드립니다.

0

260

2

Elasticsearch 설치하기 강의에서 질문 있습니다.

0

212

2

강의 질문입니다.

0

100

1

Elasticsearch 지난 2021년 1월 Elastic 은 소프트웨어 라이선스 전력 변경 - 관련 질문

0

68

1

[보충 강의] 비용 나가지 않게 Elastic Cloud 리소스 정리하기 - 영상 누락

0

88

2