Elasticsearch 와 함께 기계 학습 모델을 사용하여 컨텐츠 태그 지정

목표

Databases for Elasticsearch 는 기계 학습 워크로드를 지원합니다. 이 학습서에서는 Databases for Elasticsearch 인스턴스에 기계 학습 모델을 프로비저닝한 후 이를 사용하여 테스트 데이터 세트에서 의미 있는 추가 정보를 추출하는 방법을 학습합니다. 이 학습서를 제공하고 이해하려면 터미널 명령에 대한 일부 기본 지식만 필요합니다.

기계 학습 은 인공지능 (AI) 과 컴퓨터 과학의 한 부분으로, 인간이 학습하는 방식을 모방하기 위해 데이터와 알고리즘을 사용하는 데 초점을 맞추어 정확도를 점진적으로 향상시킵니다. 통계적 방법을 사용하여 알고리즘은 분류 또는 예측을 수행하고 데이터 마이닝 프로젝트에서 주요 인사이트를 발견하도록 훈련됩니다.

이러한 학습 알고리즘을 "모델" 이라고 합니다. 이 학습서에서는 사전 빌드된 NLP (Natural Language Processing) 모델을 사용합니다. 이 모델은 작성된 (Natural) 언어의 문장에서 의미를 추출합니다. 특히 텍스트 내에서 사람, 위치 및 조직의 이름을 식별하려고 시도하는 distilbert-base-uncased-finetuned-conll03-english 모델을 사용합니다.

다른 많은 모델 은 이미지에서 텍스트 추출, 텍스트로의 음성 변환 또는 이미지의 오브젝트 식별과 같은 다른 양식의 데이터를 분석하는 데 특화되어 있습니다. Elastic 스택 지원 모델의 전체 목록은 호환 가능한 써드파티 NLP 모델을 참조하십시오. 모델은 도메인 특정 지식에 대해 훈련될 수 있지만 새 모델의 훈련은 이 학습서의 범위를 벗어납니다.

이 학습서는 다음 프로세스를 안내합니다.

  • Databases for Elasticsearch 인스턴스 프로비저닝

  • 기계 학습 모델 업로드

  • 뉴스 기사의 헤드라인 및 요약 데이터 세트 업로드

  • NLP 모델을 통해 데이터 세트 전달

  • 데이터에 대한 모델의 결과를 보기 위해 기능 보강된 데이터를 조회합니다.

이 Elasticsearch 기계 학습 시리즈의 다른 학습서를 참조하십시오.

생산성 향상

프로비저닝 프로세스를 시작하려면 몇 가지 필수 생산성 도구를 설치하십시오.

계정에 인프라를 제공하기 위한 API 키를 얻으십시오

이 단계 에 따라 Terraform에서 사용자 계정에 인프라를 프로비저닝할 수 있도록 하는 IBM Cloud API키를 작성하십시오. 최대 20개의 API 키를 작성할 수 있습니다.

보안상의 이유로 인해 API 키는 작성 시에만 복사 또는 다운로드에 사용 가능합니다. API 키를 유실한 경우에는 새 API 키를 작성해야 합니다.

프로젝트 복제

GitHub 저장소에서 프로젝트를 복제하십시오.

git clone https://github.com/IBM/elasticsearch-nlp-ml-tutorial.git
cd elasticsearch-nlp-ml-tutorial/terraform

인프라 설치

Databases for Elasticsearch 인스턴스를 프로비저닝하십시오.

  1. 시스템에서 다음 필드를 사용하여 terraform.tfvars 라는 문서를 작성하십시오.

    ibmcloud_api_key = "<your_api_key_from_step_1>"
    region = "<your_region>"
    es_password  = "<make_up_a_password>"
    

    terraform.tfvars (비밀 정보) 문서는 비밀로 유지하고 싶은 변수가 포함되어 있으므로, GitHub 저장소에서 무시됩니다.

  2. 다음 명령을 사용하여 인프라를 설치하십시오

    terraform init
    terraform apply --auto-approve
    

    Terraform 스크립트는 애플리케이션을 실행하는 데 필요한 구성 데이터를 출력하므로 scripts 폴더에 복사하십시오.

    terraform output -json >../scripts/config.json
    cd ../scripts
    

랜드 설치

일랜드 는 Elasticsearch에서 데이터를 탐색하고 분석하기 위한 Python Elasticsearch 클라이언트입니다. 다음과 같은 명령을 사용하여 설치하십시오.

   python3 -m pip install 'eland[pytorch]'

데이터 업로드 및 분석

이 학습서에서는 RSS 피드를 통해 BBC NewsGuardian 웹 사이트에서 얻은 132기사의 작은 데이터 세트를 사용합니다.

이는 Elasticsearch 대량 업로드 메소드에 필요한 대로 형식화된 json 파일로 변환되었습니다.

다음을 수행하는 upload.sh 스크립트를 실행하십시오.

  • NLP 모델을 Elasticsearch에 업로드합니다.

  • Elasticsearch 에서 데이터 처리 파이프라인을 작성합니다. 이 파이프라인은 수신 데이터를 가져와서 의미 있는 용어를 찾기 위해 분석합니다.

  • 사전 형식화된 데이터를 Elasticsearch 에 업로드하고 분석을 위해 파이프라인을 통해 전달합니다.

이는 데모이므로 데이터베이스에 안전하지 않게 연결합니다. 프로덕션의 경우 보안 연결 을 사용하십시오.

스크립트를 실행하려면 scripts 디렉토리에 있는지 확인하고 다음 명령을 사용하십시오.

ES_PASSWORD=`cat config.json | jq -r .es_password.value`
ES_PORT=`cat config.json | jq -r .es_port.value`
ES_HOST=`cat config.json | jq -r .es_host.value`
export ES="https://admin:${ES_PASSWORD}@${ES_HOST}:${ES_PORT}"
./upload.sh

데이터 조회

이제 132레코드가 있는 test 라는 인덱스가 있습니다. 이러한 각 레코드에는 뉴스 데이터 (기사 ID, 헤드라인 및 요약) 및 tags 라는 추가 오브젝트가 포함되어 있습니다. 이는 기계 학습 모델이 텍스트에서 찾은 개인 (PER), 위치 (LOC) 또는 조직 (ORG) 을 삽입한 위치입니다.

또한 인덱스에는 모델이 작동하는 방법의 일부를 표시하는 ml 라고 하는 다른 오브젝트도 포함되어 있습니다. 예를 들어, 찾은 각 용어에 지정된 정확도 확률을 알려줍니다.

예를 들어, 이 조회를 사용하여 검사할 단일 레코드를 검색하십시오.

curl -k "$ES/test/_search?size=1" | jq .

이 기계 학습 모델은 귀중한 정보를 생성했습니다. 예를 들어, 뉴스 웹 사이트를 실행하는 경우 태그 기반 컨텐츠의 페이지를 생성할 수 있습니다. 예를 들어, 사용자가 www.mynewssite.com/tag/rishi-sunak와 같은 페이지로 이동하는 경우, 시스템이 수행해야 하는 모든 작업은 Rishi Sunak를 언급하는 목록을 검색하기 위해 뉴스 기사 색인에서 해당 태그를 사용하여 검색하는 것입니다.

curl -kX POST -d@body.json -H "Content-Type: application/json" "$ES/test/_search" | jq .

다른 검색을 수행하기 위해 사용할 수 있는 body.json 파일이 scripts 디렉토리에 있습니다.

결론

이 학습서에서는 Databases for Elasticsearch 를 사용하여 데이터에서 중요한 추가 정보를 생성하기 위한 머신 러닝의 기능을 활용하는 방법을 보여줍니다. IBM은 이를 데이터를 보강하고 데이터에서 가치를 창출하는 다른 방법을 탐색하기 위한 발판으로 사용할 수 있기를 바랍니다.

비용 발생을 중지하려면 배치된 모든 인프라를 제거하는 것을 잊지 마십시오. terraform 디렉토리에서 다음 명령을 사용하십시오.

terraform destroy