Cloud/ElasticSearch

[실습] Elasticsearch NLP - Sentiment Analysis 하기

y-seo 2024. 1. 2. 14:43

1. 데이터 올리기 

2. Eland와 Elasticsearch 연동하기

3. Huggingface에서 모델 선택해 탑재하기

4. 확인하기

[실습] Elasticsearch NLP - Text Embedding과 KNN search 하기 — y-seo의 딩코 기록들 (tistory.com)

 

[실습] Elasticsearch NLP - Text Embedding과 KNN search 하기

개요 목표 : ElasticSearch에서 NLP를 적용할 수 있다. 순서 Elastic에 데이터를 올린다. Eland와 Elastic을 연동한다. Huggingface에서 모델을 선택해 탑재한다. 1. Elastic에 데이터 올리기 (1) Machine Learning > Data V

y-seo.tistory.com

위 블로그의 4번과정까지는 동일하다.

 

5. Sentiment Analysis 하기

(1) text_field로 predicted_value 찾는 Query 실행하기

POST _ml/trained_models/distilbert-base-uncased-finetuned-sst-2-english/deployment/_infer
{
  "docs": [
    {
      "text_field": "The movie was awesome!"
    }
  ]
}

(2) Sentiment Analysis를 위한 파이프라인 생성하기

모든 각각의 리뷰에 대해 predicted_value를 달기 위해 감정 분석 파이프라인을 한 번 더 생성한다.

PUT _ingest/pipeline/sentiment_demo
{
  "processors": [
    {
      "inference": {
        "model_id": "distilbert-base-uncased-finetuned-sst-2-english",
        "field_map": {
          "document": "text_field"
        }
      }
    }
  ],
  "on_failure": [
    {
      "set": {
        "description": "Index document to 'failed-<index>'",
        "field": "_index",
        "value": "failed-{{{_index}}}"
      }
    },
    {
      "set": {
        "description": "Set error message",
        "field": "ingest.failure",
        "value": "{{_ingest.on_failure_message}}"
      }
    }
  ]
}

inference에는 model_id와 document 같은 source들이 있다.

set으로 error index를 남기는 설정을 할 수도 있다.

(3) 대상 인덱스를 리인덱싱하기

POST _reindex
{
  "source": {
    "index": "movie_ratings_vector"
  },
  "dest": {
    "index": "movie_ratings_vector_sentiment",
    "pipeline": "sentiment_demo"
  }
}

이전에 생성한 파이프라인을 통해 할 수 있도록 한다.

(4) 인덱싱을 확인, 비교하기

GET movie_ratings_vector_sentiment/_search