사용자 정의 변환기 모델을 사용하여 감성 추출
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 |
생물 의학 콘텐츠에 대해 사전 훈련된 모델 |
훈련을 위한 입력 데이터 형식
훈련 및 개발 데이터 세트를 훈련 기능에 제공해야 합니다. 개발 데이터는 일반적으로 훈련 데이터의 약 10%입니다. 각 훈련 또는 개발 샘플은 JSON 오브젝트로 표시됩니다. 텍스트 및 레이블 필드가 있어야 합니다. text 는 훈련 예제 텍스트를 나타내고 labels 필드는 정확히 하나의 레이블 positive, neutral또는 negative를 포함하는 배열입니다.
다음은 샘플 훈련 데이터가 있는 배열의 예입니다.
[
{
"text": "I am happy",
"labels": ["positive"]
},
{
"text": "I am sad",
"labels": ["negative"]
},
{
"text": "The sky is blue",
"labels": ["neutral"]
}
]
훈련 및 개발 데이터 세트는 JSON 오브젝트의 배열에서 데이터 스트림으로 작성됩니다. 데이터 스트림을 작성하기 위해 prepare_data_from_json
유틸리티 메소드를 사용할 수 있습니다.
import watson_nlp
from watson_nlp.toolkit.sentiment_analysis_utils.training import train_util as utils
training_data_file = "train_data.json"
dev_data_file = "dev_data.json"
train_stream = utils.prepare_data_from_json(training_data_file)
dev_stream = utils.prepare_data_from_json(dev_data_file)
사전 훈련된 모델 자원 로드
사전 훈련된 Slate IBM Foundation 모델은 훈련 알고리즘으로 전달되기 전에 로드되어야 합니다. 또한 입력 텍스트에서 사용되는 언어에 대한 구문 분석 모델을 로드해야 합니다.
모델을 로드하려면 다음을 수행하십시오.
# Load the pretrained Slate IBM Foundation model
pretrained_model_resource = watson_nlp.load('<pretrained Slate model>')
# Download relevant syntax analysis models
syntax_model_en = watson_nlp.load('syntax_izumo_en_stock')
syntax_model_de = watson_nlp.load('syntax_izumo_de_stock')
# Create a list of all syntax analysis models
syntax_models = [syntax_model_en, syntax_model_de]
모델 훈련
감성 변환기 교육을 구성하는 데 사용할 수 있는 모든 옵션에 대해 다음을 입력하십시오.
help(watson_nlp.workflows.sentiment.AggregatedSentiment.train_transformer)
train_transformer
메소드는 구문 분석 및 훈련된 감성 분류를 자동으로 실행하는 워크플로우 모델을 작성합니다. 후속 단계에서 워크플로우 모델이 전제조건 정보 없이 입력 텍스트에서 실행될 수 있도록 언어 발견을 사용으로 설정하십시오.
다음은 이전 섹션 (모델 훈련) 에서 입력 데이터 및 사전 훈련된 모델을 사용하는 샘플 호출입니다.
from watson_nlp.workflows.sentiment import AggregatedSentiment
sentiment_model = AggregatedSentiment.train_transformer(
train_data_stream = train_stream,
dev_data_stream = dev_stream,
syntax_model=syntax_models,
pretrained_model_resource=pretrained_model_resource,
label_list=['negative', 'neutral', 'positive'],
learning_rate=2e-5,
num_train_epochs=10,
combine_approach="NON_NEUTRAL_MEAN",
keep_model_artifacts=True
)
lang_detect_model = watson_nlp.load('lang-detect_izumo_multi_stock')
sentiment_model.enable_lang_detect(lang_detect_model)
새 데이터에 모델 적용
데이터 세트에서 모델을 훈련한 후 기존의 사전 훈련된 블록에서 사용하는 것처럼 run()
메소드를 사용하여 새 데이터에 모델을 적용하십시오.
샘플 코드:
input_text = 'new input text'
sentiment_predictions = sentiment_model.run(input_text)
상위 주제: 자신의 모델 만들기