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

사용자 정의 변환기 모델을 사용하여 엔티티 발견

마지막 업데이트 날짜: 2024년 11월 07일
사용자 정의 변환기 모델을 사용하여 엔티티 발견

고정된 용어 세트가 없거나 정규식으로 발견하려는 엔티티를 표현할 수 없는 경우 사용자 정의 변환기 모델을 빌드할 수 있습니다. 모델은 사전 훈련된 Slate IBM Foundation 모델을 기반으로 합니다.

사전 훈련된 모델을 사용할 때 다국어 모델을 빌드할 수 있습니다. 각 언어에 대해 별도의 모델을 사용할 필요가 없습니다.

고품질 (엔티티 유형당 2000-5000) 을 달성하려면 충분한 훈련 데이터가 필요합니다. GPU를 사용할 수 있는 경우에는 GPU를 훈련에 사용하십시오.

참고:

훈련 변환기 모델은 CPU및 메모리 집약적입니다. 사전 정의된 환경이 교육을 완료하기에 충분히 크지 않습니다. 더 많은 양의 CPU및 메모리가 있는 사용자 정의 노트북 환경을 작성하고 이를 사용하여 노트북을 실행하십시오. 사용 가능한 GPU가 있는 경우 GPU를 사용하는 것이 좋습니다. 사용자 고유의 환경 템플리트 작성을 참조하십시오.

입력 데이터 형식

훈련 데이터는 여러 JSON 오브젝트가 있는 배열로 표시됩니다. 각 JSON 오브젝트는 하나의 훈련 인스턴스를 나타내며 textmentions 필드가 있어야 합니다. text 필드는 훈련 문장 텍스트를 나타내고 mentions 는 각 멘션의 텍스트, 유형 및 위치가 있는 JSON 오브젝트의 배열입니다.

[
  {
    "text": str,
    "mentions": [{
      "location": {
        "begin": int,
        "end": int
      },
      "text": str,
      "type": str
    },...]
  },...
]

예:

[
    {
        "id": 38863234,
        "text": "I'm moving to Colorado in a couple months.",
        "mentions": [{
            "text": "Colorado",
            "type": "Location",
            "location": {
                "begin": 14,
                 "end": 22
                 }
            },
            {
                "text": "couple months",
                "type": "Duration",
                "location": {
                    "begin": 28,
                     "end": 41
                     }
            }]
    }
]

모델 훈련

변환기 알고리즘이 사전 훈련된 Slate 모델을 사용 중입니다.

사용 가능한 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 생물 의학 콘텐츠에 대해 사전 훈련된 모델

Transformer 훈련 구성에 사용 가능한 옵션을 가져오려면 다음을 입력하십시오.

help(watson_nlp.workflows.entity_mentions.transformer.Transformer.train)

샘플 코드

import watson_nlp
from watson_nlp.toolkit.entity_mentions_utils.train_util import prepare_stream_of_train_records_from_JSON_collection

# load the syntax models for all languages to be supported
syntax_model = watson_nlp.load('syntax_izumo_en_stock')
syntax_models = [syntax_model]

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

# prepare the train and dev data
# entity_train_data is a directory with one or more json files in the input format specified above
train_data_stream = prepare_stream_of_train_records_from_JSON_collection('entity_train_data')
dev_data_stream = prepare_stream_of_train_records_from_JSON_collection('entity_train_data')

# train a transformer workflow model
trained_workflow = watson_nlp.workflows.entity_mentions.transformer.Transformer.train(
    train_data_stream=train_data_stream,
    dev_data_stream=dev_data_stream,
    syntax_models=syntax_models,
    template_resource=pretrained_model_resource,
    num_train_epochs=3,
)

새 데이터에 모델 적용

기존의 사전 훈련된 블록에서 사용하는 것처럼 run() 메소드를 사용하여 새 데이터에 훈련된 변환기 워크플로우 모델을 적용하십시오.

코드 샘플

trained_workflow.run('Bruce is at Times Square')

모델 저장 및 로드

사용자 정의 변환기 모델은 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 = 'trained_workflow_file'
    model_folder = 'trained_workflow_folder'
    wslib.download_file('trained_workflow', file_name=model_zip)
    
    with zipfile.ZipFile(model_zip, 'r') as zip_ref:
      zip_ref.extractall(model_folder)
    
  4. 추출된 폴더에서 모델을 로드하십시오.

    trained_workflow = watson_nlp.load(model_folder)
    

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