0 / 0
영어 버전 문서로 돌아가기

사용자 정의 변환기 모델을 사용하여 대상 감성 추출

마지막 업데이트 날짜: 2024년 11월 07일
사용자 정의 변환기 모델을 사용하여 대상 감성 추출

Slate IBM Foundation 모델을 기반으로 대상 감성 추출을 위해 사용자 자신의 모델을 훈련할 수 있습니다. 이 사전 훈련된 모델은 특정 입력 데이터에 대해 훈련하여 유스 케이스에 맞게 조정할 수 있습니다.

주: 변환기 모델 훈련은 CPU및 메모리 집약적입니다. 훈련 데이터의 크기에 따라 환경이 훈련을 완료하기에 충분히 크지 않을 수 있습니다. 훈련 중에 노트북 커널과 관련된 문제를 실행하는 경우, 더 많은 양의 CPU와 메모리를 사용하여 사용자 정의 노트북 환경을 작성하고 이를 사용하여 노트북을 실행합니다. 사용 가능한 경우 GPU 기반 환경을 훈련 및 추론 시간에 사용하십시오. 사용자 고유의 환경 템플리트 작성을 참조하십시오.

훈련을 위한 입력 데이터 형식

훈련 및 개발 데이터 세트를 훈련 기능에 제공해야 합니다. 개발 데이터는 일반적으로 훈련 데이터의 약 10%입니다. 각 훈련 또는 개발 샘플은 JSON 오브젝트로 표시됩니다. texttarget_mentions 필드가 있어야 합니다. text 는 훈련 예제 텍스트를 나타내고 target_mentions 필드는 text, location감성과 함께 각 대상 멘션에 대한 항목을 포함하는 배열입니다.

Watson Knowledge Studio 를 사용하여 도메인 주제 전문가가 쉽게 텍스트에 어노테이션을 작성하고 훈련 데이터를 작성할 수 있도록 하십시오.

다음은 샘플 훈련 데이터가 있는 배열의 예입니다.

[
  {
    "text": "Those waiters stare at you your entire meal, just waiting for you to put your fork down and they snatch the plate away in a second.",
    "target_mentions": [
      {
        "text": "waiters",
        "location": {
          "begin": 6,
          "end": 13
        },
        "sentiment": "negative"
      }
    ]
  }
]

훈련 및 개발 데이터 세트는 JSON 오브젝트의 배열에서 데이터 스트림으로 작성됩니다. 데이터 스트림을 작성하기 위해 read_json_to_stream유틸리티 메소드를 사용할 수 있습니다. 입력 데이터의 언어에 대한 구문 분석 모델이 필요합니다.

샘플 코드:

import watson_nlp
from watson_nlp.toolkit.targeted_sentiment.training_data_reader import read_json_to_stream

training_data_file = 'train_data.json'
dev_data_file = 'dev_data.json'

# Load the syntax analysis model for the language of your input data
syntax_model = watson_nlp.load('syntax_izumo_en_stock')

# Prepare train and dev data streams
train_stream = read_json_to_stream(json_path=training_data_file, syntax_model=syntax_model)
dev_stream = read_json_to_stream(json_path=dev_data_file, syntax_model=syntax_model)

사전 훈련된 모델 자원 로드

사전 훈련된 Slate IBM Foundation 모델을 훈련 알고리즘으로 전달하기 전에 로드해야 합니다.

사용 가능한 Slate 모델 목록은 다음 표를 참조하세요.

사용 가능한 Slate 모델 목록 및 설명
모델 설명
pretrained-model_slate.153m.distilled_many_transformer_multilingual_uncased 일반, 다목적 모델
pretrained-model_slate.125m.finance_many_transformer_en_cased 금융 콘텐츠에 대해 사전 학습된 모델
pretrained-model_slate.110m.cybersecurity_many_transformer_en_uncased 사이버 보안 콘텐츠에 대해 사전 훈련된 모델
pretrained-model_slate.125m.biomedical_many_transformer_en_cased 생물 의학 콘텐츠에 대해 사전 훈련된 모델

모델을 로드하려면 다음을 수행하십시오.

# Load the pretrained Slate IBM Foundation model
pretrained_model_resource = watson_nlp.load('<pretrained Slate model>')

모델 훈련

감성 변환기 교육을 구성하는 데 사용할 수 있는 모든 옵션에 대해 다음을 입력하십시오.

help(watson_nlp.blocks.targeted_sentiment.SequenceTransformerTSA.train)

train 메소드는 새 대상 감성 블록 모델을 작성합니다.

다음은 이전 섹션 (모델 훈련) 의 입력 데이터 및 사전 훈련된 모델을 사용하는 샘플 호출입니다.

# Train the model
custom_tsa_model = watson_nlp.blocks.targeted_sentiment.SequenceTransformerTSA.train(
    train_stream,
    dev_stream,
    pretrained_model_resource,
    num_train_epochs=5
)

새 데이터에 모델 적용

데이터 세트에서 모델을 훈련한 후 기존의 사전 훈련된 블록에서 사용하는 것처럼 run() 메소드를 사용하여 새 데이터에 모델을 적용하십시오. 작성된 사용자 정의 모델은 블록 모델이므로 입력 텍스트에서 구문 분석을 실행하고 결과를 run() 메소드에 전달해야 합니다.

샘플 코드:

input_text = 'new input text'

# Run syntax analysis first
syntax_model = watson_nlp.load('syntax_izumo_en_stock')
syntax_analysis = syntax_model.run(input_text, parsers=('token',))

# Apply the new model on top of the syntax predictions
tsa_predictions = custom_tsa_model.run(syntax_analysis)

모델 저장 및 로드

사용자 정의 대상 감성 모델은 ibm_watson_studio_lib를 사용하여 사용자 정의 모델 저장 및 로드에 설명된 대로 다른 모델로 저장할 수 있습니다.

사용자 정의 대상 감성 모델을 로드하려면 추가 단계가 필요합니다.

  1. 프로젝트의 관리 탭에서 액세스 제어 페이지에 액세스 토큰이 있는지 확인하십시오. 프로젝트 관리자만 액세스 토큰을 작성할 수 있습니다. 액세스 토큰은 뷰어 또는 편집자 액세스 권한을 가질 수 있습니다. 편집자만 노트북에 토큰을 삽입할 수 있습니다.

  2. 노트북 조치 표시줄에서 계속 > 프로젝트 토큰 삽입 을 클릭하여 노트북에 프로젝트 토큰을 추가하십시오. 그런 다음 셀을 실행하십시오.

    삽입된 숨겨진 코드 셀을 실행하면 ibm-watson-studio-lib 라이브러리의 함수에 사용할 수 있는 wslib 오브젝트가 작성됩니다. 사용 가능한 ibm-watson-studio-lib 함수에 대한 정보는 Python용 ibm-watson-studio-lib 사용을 참조하십시오.

  3. 모델을 다운로드하여 로컬 런타임 환경에 추출하십시오.

    import zipfile
    model_zip = 'custom_TSA_model_file'
    model_folder = 'custom_TSA'
    wslib.download_file('custom_TSA_model', file_name=model_zip)
    
    with zipfile.ZipFile(model_zip, 'r') as zip_ref:
      zip_ref.extractall(model_folder)
    
  4. 추출된 폴더에서 모델을 로드하십시오.

    custom_TSA_model = watson_nlp.load(model_folder)
    

상위 주제: 자신의 모델 만들기