사용자 정의 변환기 모델을 사용하여 대상 감성 추출
Slate IBM Foundation 모델을 기반으로 대상 감성 추출을 위해 사용자 자신의 모델을 훈련할 수 있습니다. 이 사전 훈련된 모델은 특정 입력 데이터에 대해 훈련하여 유스 케이스에 맞게 조정할 수 있습니다.
훈련을 위한 입력 데이터 형식
훈련 및 개발 데이터 세트를 훈련 기능에 제공해야 합니다. 개발 데이터는 일반적으로 훈련 데이터의 약 10%입니다. 각 훈련 또는 개발 샘플은 JSON 오브젝트로 표시됩니다. text 및 target_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 모델 목록은 다음 표를 참조하세요.
모델 | 설명 |
---|---|
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
를 사용하여 사용자 정의 모델 저장 및 로드에 설명된 대로 다른 모델로 저장할 수 있습니다.
사용자 정의 대상 감성 모델을 로드하려면 추가 단계가 필요합니다.
프로젝트의 관리 탭에서 액세스 제어 페이지에 액세스 토큰이 있는지 확인하십시오. 프로젝트 관리자만 액세스 토큰을 작성할 수 있습니다. 액세스 토큰은 뷰어 또는 편집자 액세스 권한을 가질 수 있습니다. 편집자만 노트북에 토큰을 삽입할 수 있습니다.
노트북 조치 표시줄에서 계속 > 프로젝트 토큰 삽입 을 클릭하여 노트북에 프로젝트 토큰을 추가하십시오. 그런 다음 셀을 실행하십시오.
삽입된 숨겨진 코드 셀을 실행하면
ibm-watson-studio-lib
라이브러리의 함수에 사용할 수 있는wslib
오브젝트가 작성됩니다. 사용 가능한ibm-watson-studio-lib
함수에 대한 정보는 Python용 ibm-watson-studio-lib 사용을 참조하십시오.모델을 다운로드하여 로컬 런타임 환경에 추출하십시오.
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)
추출된 폴더에서 모델을 로드하십시오.
custom_TSA_model = watson_nlp.load(model_folder)
상위 주제: 자신의 모델 만들기