사용자 정의 언어 모델 작성
IBM Watson® Speech to Text 서비스를 위한 사용자 정의 언어 모델을 작성하고, 여기에 컨텐츠를 추가하고, 학습시키려면 다음 단계를 수행하십시오.
- 사용자 정의 언어 모델을 작성하십시오. 동일하거나 다른 도메인에 대한 여러 사용자 정의 모델을 작성할 수 있습니다. 작성하는 모든 모델에 대한 프로세스는 동일합니다. 언어 모델 사용자 정의는 모든 대형 음성 모델, 대부분의 이전 세대 모델, 그리고 모든 차세대 모델에 대해 가능합니다. 자세한 정보는 사용자 정의에 대한 언어 지원을 참조하십시오.
- 사용자 정의 언어 모델에 말뭉치를 추가하십시오. 말뭉치는 컨텍스트에 따라 도메인의 용어를 사용하는 일반 텍스트 파일입니다. 한 번에 하나씩 사용자 정의 모델에 여러 말뭉치를 순차적으로 추가할 수 있습니다. 이전 세대 모델을 기반으로 하는 사용자 정의 모델의 경우, 서비스는 말뭉치에서 기본 어휘에 없는 용어를 추출하여 사용자 정의 모델의 어휘를 작성합니다. 차세대 모델을 기반으로 하는 사용자 정의 모델의 경우 서비스는 말뭉치의 단어가 아닌 문자 시퀀스를 추출합니다.
- 사용자 정의 언어 모델에 단어를 추가하십시오. 사용자 정의 단어를 개별적으로 모델에 추가할 수도 있습니다. 사용자 정의 모델의 단어가 음성 변환 내용에 표시되는 방법 및 오디오에서 이 단어가 발음되는 방법을 지정할 수 있습니다. 이전 세대 모델을 기반으로 하는 사용자 정의 모델의 경우 말뭉치에서 추출한 사용자 정의 단어도 수정할 수 있습니다.
- 사용자 정의 언어 모델을 훈련하십시오. 사용자 정의 모델에 말뭉치와 단어를 추가한 후에는 모델을 학습시켜야 합니다. 훈련하면 사용자 정의 모델이 음성 인식에 사용할 준비가 됩니다. 모델은 사용자가 학습시키기 전까지 신규 또는 수정된 말뭉치나 단어를 사용하지 않습니다.
- 음성 인식에 사용자 정의 언어 모델을 사용하십시오. 사용자 정의 모델을 훈련한 후 음식 인식 요청에 사용할 수 있습니다. 변환을 위해 전달된 오디오에 사용자 정의 모델의 말뭉치와 사용자 정의 단어에 정의된 도메인별 단어가 포함되어 있으면 요청 결과는 모델의 향상된 어휘를 반영합니다. 하나의 음성 인식 요청에는 한 번에 하나의 모델만 사용할 수 있습니다.
사용자 정의 언어 모델을 작성하는 단계는 반복적입니다. 필요할 때마다 말뭉치를 추가하고, 단어를 추가하고, 모델을 훈련하거나 재훈련할 수 있습니다. 대부분의 사용자 정의 언어 모델에 문법을 추가할 수도 있습니다. 문법은 서비스의 응답을 문법에서 인식되는 단어로만 제한합니다.
- 문법을 사용하는 데 관한 자세한 정보는 사용자 정의 언어 모델에서 문법 사용을 참조하십시오.
- 문법을 지원하는 언어 및 모델에 대한 자세한 정보는 사용자 정의를 위한 언어 지원을 참조하십시오.
사용자 정의 언어 모델 작성
POST /v1/customizations 메소드를 사용하여 새 사용자 정의 언어 모델을 작성합니다. 이 메소드는 새 사용자 정의 모델의 속성을 요청의 본문으로 정의하는 JSON 오브젝트를 받아들입니다. 새 사용자 정의 모델은 해당 인증 정보를 사용하여 이를 작성한 서비스의 인스턴스가 소유합니다. 자세한 정보는 사용자 정의 모델의 소유권을
참조하십시오.
소유한 인증 정보당 최대 1024개의 사용자 정의 언어 모델을 작성할 수 있습니다. 자세한 정보는 사용자 정의 모델의 최대 수를 참조하십시오.
새 사용자 정의 언어 모델에는 다음 속성이 있습니다.
name(필수 문자열)-
새 사용자 정의 모델의 사용자 정의 이름입니다. 사용자 정의 모델의 언어와 일치하고 모델의 도메인을 설명하는 현지화된 이름을 사용하십시오 (예:
Medical custom model또는Legal custom model).- 이름에 최대 256자까지 포함할 수 있습니다.
- 이름에 백슬래시, 슬래시, 콜론, 등호, 앰퍼샌드 또는 물음표를 사용하지 마십시오.
- 사용자가 소유하는 모든 사용자 정의 언어 모델 중에서 고유한 이름을 사용하십시오.
base_model_name(필수 문자열)-
새로운 사용자 지정 모델에 의해 사용자 지정될 기본 언어 모델의 이름입니다.
GET /v1/models메소드에서 리턴되는 모델의 이름을 사용해야 합니다. 새 사용자 정의 모델은 이 모델이 사용자 정의하는 기본 모델을 통해서만 사용될 수 있습니다. dialect(선택적 문자열)-
새 사용자 정의 모델에 사용될 지정된 언어의 통용어입니다. 모든 언어에서 이 필드를 생략해도 안전합니다. 서비스는 기본 모델의 이름에 있는 언어 식별자를 자동으로 사용합니다. 예를 들어, 이 서비스는 모든 미국 영어 모델에 대해 자동으로
en-US를 사용합니다.새 사용자 정의 모델에 대해
dialect을(를) 지정하는 경우에는 다음 지침을 따르십시오.- 스페인어 외 언어의 이전 세대 모델 및 차세대 모델의 경우에는 기본 모델의 이름에 있는 5자의 언어 식별자와 일치하는 값을 지정해야 합니다.
- 스페인어 이전 세대 모델의 경우에는 다음 값 중 하나를 지정해야 합니다.
- 카스티야 스페인어의 경우
es-ES(es-ES모델) - 라틴 아메리카 스페인어의 경우
es-LA(es-AR,es-CL,es-CO및es-PE모델) - 멕시코(북미) 스페인어의 경우
es-US(es-MX모델)
- 카스티야 스페인어의 경우
dialect필드에 대해 전달하는 모든 값은 대소문자를 구분하지 않습니다. description(선택적 문자열)-
새로운 사용자 지정 모델에 대한 추천 설명입니다.
- 사용자 정의 모델의 언어와 일치하는 현지화된 설명을 사용하십시오.
- 설명에는 최대 128자까지 입력할 수 있습니다.
다음 예제에서는 Example model이라는 새 사용자 정의 언어 모델을 작성합니다. 이 모델은 기본 모델 en-US-BroadbandModel용으로 작성되며 설명은 Example custom language model입니다. Content-Type 헤더는 JSON 데이터가 메서드로 전달되고 있음을 나타냅니다.
IBM Cloud
curl -X POST -u "apikey:{apikey}" \
--header "Content-Type: application/json" \
--data "{\"name\": \"Example model\", \
\"base_model_name\": \"en-US_BroadbandModel\", \
\"description\": \"Example custom language model\"}" \
"{url}/v1/customizations"
IBM Cloud Pak for Data IBM Software Hub
curl -X POST \
--header "Authorization: Bearer {token}" \
--header "Content-Type: application/json" \
--data "{\"name\": \"Example model\", \
\"base_model_name\": \"en-US_BroadbandModel\", \
\"description\": \"Example custom language model\"}" \
"{url}/v1/customizations"
이 예제는 새 모델의 사용자 정의 ID를 리턴합니다. 각 사용자 정의 모델은 GUID(Globally Unique Identifier)인 고유 사용자 정의 ID로 식별됩니다. 모델과 연관된 호출의 customization_id 매개변수로 사용자 정의 모델의 GUID를 지정합니다.
{
"customization_id": "74f4807e-b5ff-4866-824e-6bba1a84fe96"
}
사용자 정의 언어 모델에 말뭉치 추가
사용자 정의 언어 모델을 작성하고 나면, 다음 단계는 모델에 특정 분야 관련 데이터를 추가하는 것입니다. 사용자 정의 모델을 채우는 데 권장되는 방법은 하나 이상의 말뭉치를 추가하는 것입니다. 말뭉치는 도메인의 샘플 문장을 이상적으로 포함하는 일반 텍스트 파일입니다.
-
대형 음성 모델을 기반으로 하는 사용자 정의 모델의 경우 서비스는 하나 이상의 말뭉치 파일에서 단어 시퀀스를 구문 분석하고 추출합니다. 이들 문자는 서비스가 오디오에서 문자 시퀀스를 학습하고 예측하는 데 도움을 줍니다. 대형 음성 모델을 기반으로 하는 사용자 정의 모델에서 말뭉치를 사용하는 방법에 대한 자세한 정보는 대형 음성 모델 및 차세대 모델에서 말뭉치에 대한 작업 을 참조하십시오.
-
이전 세대 모델을 기반으로 하는 사용자 정의 모델의 경우 서비스에서 말뭉치 파일을 구문 분석하고 기본 어휘에 없는 단어를 추출합니다. 이러한 단어를 OOV(Out Of Vocabulary) 단어라고 합니다. 이전 세대 모델을 기반으로 한 사용자 정의 모델을 사용하는 말뭉치 사용에 대한 자세한 정보는 이전 세대 모델에 대한 말뭉치 관련 작업을 참조하십시오.
-
차세대 모델을 기반으로 하는 사용자 정의 모델의 경우 서비스에서는 말뭉치 파일에서 문자 시퀀스를 구문 분석하고 추출합니다. 이들 문자는 서비스가 오디오에서 문자 시퀀스를 학습하고 예측하는 데 도움을 줍니다. 차세대 모델을 기반으로 하는 사용자 정의 모델에서 말뭉치를 사용하는 방법에 대한 자세한 정보는 대형 음성 모델 및 차세대 모델의 말뭉치에 대한 작업 을 참조하십시오.
말뭉치에서 도메인별 단어를 포함하는 문장을 제공하므로 서비스에서 특정 문맥의 단어 및 문자 시퀀스를 학습할 수 있습니다. 모델의 단어를 개별적으로 보강하고 수정할 수도 있습니다. 말뭉치에서 추가된 단어가 아니라 개별 단어에 대해서만 모델을 훈련하면 더 많은 시간이 소요되며 덜 효과적인 결과가 생성될 수 있습니다.
POST /v1/customizations/{customization_id}/corpora/{corpus_name} 메소드를 사용하여 사용자 정의 모델에 말뭉치를 추가할 수 있습니다.
customization_id(필수 문자열)- 말뭉치를 추가할 사용자 정의 모델의 사용자 정의 ID를 지정하십시오.
corpus_name(필수 문자열)- 코퍼스 이름을 지정합니다. 사용자 정의 모델의 언어와 일치하고 말뭉치의 컨텐츠를 반영하는 현지화된 이름을 사용하십시오.
- 이름에 최대 128자를 포함하십시오.
- URL로 인코딩되어야 하는 문자는 사용하지 마십시오. 예를 들어, 이름에 공백, 슬래시, 백슬래시, 콜론, 앰퍼샌드, 큰따옴표, 더하기 부호, 등호, 물음표 등을 사용하지 마십시오. (서비스에서는 이러한 문자의 사용을 금지하지 않습니다. 그러나 이러한 문자를 사용할 때마다 URL로 인코딩되어야 합니다.)
- 사용자 정의 모델에 이미 추가된 말뭉치 또는 문법의 이름을 사용하지 마십시오.
- 서비스에서 사용자가 추가하거나 수정한 사용자 정의 단어를 나타내기 위해 예약한
user라는 이름을 사용하지 마십시오. base_lm또는default_lm이라는 이름을 사용하지 마십시오. 두 이름은 모두 나중에 서비스에서 사용하도록 예약되어 있습니다.
코퍼스 텍스트 파일을 요청의 필수 본문으로 전달합니다. 다음 예제에서는 지정된 ID를 사용하는 사용자 정의 모델에 말뭉치 텍스트 파일인 healthcare.txt를 추가합니다. 이 예제에서는 말뭉치의 이름을 healthcare로 지정합니다.
IBM Cloud
curl -X POST -u "apikey:{apikey}" \
--data-binary @healthcare.txt \
"{url}/v1/customizations/{customization_id}/corpora/healthcare"
IBM Cloud Pak for Data IBM Software Hub
curl -X POST \
--header "Authorization: Bearer {token}" \
--data-binary @healthcare.txt \
"{url}/v1/customizations/{customization_id}/corpora/healthcare"
이 메소드는 사용자 정의 모델에 대한 기존 말뭉치를 겹쳐쓰는 선택적 allow_overwrite 조회 매개변수도 허용합니다. 말뭉치 파일을 모델에 추가한 후 업데이트해야 하는 경우에 이 매개변수를 사용하십시오.
이 메소드는 비동기식입니다. 이를 완료하는 데는 몇 분 정도 소요될 수 있습니다. 오퍼레이션의 지속 시간은 말뭉치에 있는 단어의 총 수와 서비스의 현재 로드에 따라 달라집니다. 이전 세대 모델을 기반으로 하는 사용자 정의 모델의 경우 지속 기간은 서비스가 말뭉치에서 찾는 새 단어 수에 따라 결정됩니다. 말뭉치의 상태를 확인하는 방법에 대한 자세한 정보는 말뭉치 추가 요청 모니터링을 참조하십시오.
각 말뭉치 텍스트 파일마다 한 번씩 메소드를 호출하여 사용자 정의 모델에 원하는 수의 말뭉치를 추가할 수 있습니다. 하나의 말뭉치를 추가하는 작업이 완전히 완료되어야 다른 말뭉치를 추가할 수 있습니다. 먼저 모델에 말뭉치를 추가하는 경우 말뭉치의 상태는 being_processed입니다. 서비스가 처리를 완료하면 상태는 analyzed가 됩니다.
이전 세대 모델을 기반으로 하는 사용자 정의 모델의 경우, 말뭉치 추가가 완료되고 나면 여기서 추출된 새 사용자 정의 단어를 검토하여 철자 및 기타 오류를 확인하십시오. 자세한 정보는 이전 세대 모델의 단어 리소스 유효성 검증을 참조하십시오.
말뭉치 추가 요청 모니터링
말뭉치가 유효한 경우 서비스에서 201 응답 코드를 리턴합니다. 그런 다음 비동기적으로 말뭉치의 컨텐츠를 처리합니다. 서비스가 현재 요청에 대한 말뭉치의 분석을 완료할 때까지 사용자 정의 모델에 데이터를 추가하거나 모델을 훈련하는 요청을 제출할 수 없습니다.
분석의 상태를 판별하려면 GET /v1/customizations/{customization_id}/corpora/{corpus_name} 메소드를 사용하여 말뭉치의 상태를 폴링하십시오. 다음 예제에 표시된 대로 이 메소드는 모델의 ID 및 말뭉치의 이름을 받아들입니다.
IBM Cloud
curl -X GET -u "apikey:{apikey}" \
"{url}/v1/customizations/{customization_id}/corpora/corpus1"
IBM Cloud Pak for Data IBM Software Hub
curl -X GET \
--header "Authorization: Bearer {token}" \
"{url}/v1/customizations/{customization_id}/corpora/corpus1"
응답은 말뭉치의 상태를 포함합니다. 사용자 정의 모델은 이전 세대 모델을 기반으로 하므로, 응답은 OOV 단어의 수를 표시합니다.
{
"name": "corpus1",
"total_words": 5037,
"out_of_vocabulary_words": 401,
"status": "analyzed"
}
status 필드의 값은 다음 중 하나입니다.
analyzed는 서비스가 말뭉치를 성공적으로 분석했음을 표시합니다.being_processed는 서비스가 말뭉치를 여전히 분석 중임을 표시합니다.undetermined는 서비스가 말뭉치를 처리하는 동안 오류가 발생했음을 표시합니다.
루프를 사용하여 analyzed가 될 때까지 10초마다 말뭉치의 상태를 확인할 수 있습니다. 모델의 말뭉치 상태 확인에 대한 자세한 정보는 사용자 정의 언어 모델의 말뭉치 나열을 참조하십시오.
사용자 정의 언어 모델에 단어 추가
사용자 정의 언어 모델에 단어를 추가할 때 말뭉치를 추가하는 것이 권장되지만 개별 사용자 정의 단어를 모델에 직접 추가할 수도 있습니다. 서비스는 말뭉치에 있는 단어의 컨텐츠를 구문 분석하는 것과 마찬가지로 사용자 모델의 사용자 정의 단어를 구문 분석합니다.
모델에 추가할 단어가 하나 또는 몇 개만 있는 경우 말뭉치를 사용하여 단어를 추가하는 것이 실용적이지 않거나 실행 가능하지 않을 수 있습니다. 가장 단순한 접근 방법은 단어의 철자만 사용하여 단어를 추가하는 것입니다. 그러나 단어가 표시되는 방법과 단어에 대한 하나 이상의 발음을 표시할 수도 있습니다.
- 이전 세대 모델을 기반으로 하는 사용자 정의 모델에 단어를 추가하는 데 관한 자세한 정보는 이전 세대 모델에 대한 사용자 정의 단어 관련 작업을 참조하십시오.
- 대형 음성 모델 및 차세대 모델을 기반으로 하는 사용자 정의 모델에 단어를 추가하는 방법에 대한 자세한 정보는 대형 음성 모델 및 차세대 모델의 사용자 정의 단어에 대한 작업 을 참조하십시오.
사용자 정의 모델에 단어를 추가한 후, 새로운 사용자 정의 단어를 검토하여 오타나 기타 오류를 확인하십시오. 이 검사는 한 번에 여러 단어를 추가하는 경우 특히 중요합니다.
- 이전 세대 모델을 기반으로 하는 사용자 정의 모델의 경우 이전 세대 모델의 단어 리소스 유효성 검증을 참조하십시오.
- 대형 음성 모델 및 차세대 모델을 기반으로 하는 사용자 정의 모델의 경우 대형 음성 모델 및 차세대 모델에 대한 단어 자원 유효성 검증 을 참조하십시오.
POST 메소드를 사용하여 단어 추가
POST /v1/customizations/{customization_id}/words 방법은 한 번에 한 단어 이상을 추가합니다. 요청의 본문을 통해 또는 파일에서 JSON 데이터로 추가될 단어를 전달합니다. 두 경우 모두, 필수 헤더인 ' Content-Type '는 JSON 데이터가 메서드로 전달되고 있음을 나타냅니다.
다음 예는 지정된 ID를 가진 사용자 지정 모델에 두 개의 사용자 지정 단어인 HHonors 와 IEEE 를 추가합니다
-
첫 번째 예제는 요청의 본문을 통해 각 단어에 대한 정보를 전달합니다.
IBM Cloud
curl -X POST -u "apikey:{apikey}" \ --header "Content-Type: application/json" \ --data "{\"words\": [ \ {\"word\": \"HHonors\", \"sounds_like\": [\"hilton honors\", \"H. honors\"], \"display_as\": \"HHonors\"}, \ {\"word\": \"IEEE\", \"sounds_like\": [\"I. triple E.\"]}]}" \ "{url}/v1/customizations/{customization_id}/words"IBM Cloud Pak for Data IBM Software Hub
curl -X POST \ --header "Authorization: Bearer {token}" \ --header "Content-Type: application/json" \ --data "{\"words\": [ \ {\"word\": \"HHonors\", \"sounds_like\": [\"hilton honors\", \"H. honors\"], \"display_as\": \"HHonors\"}, \ {\"word\": \"IEEE\", \"sounds_like\": [\"I. triple E.\"]}]}" \ "{url}/v1/customizations/{customization_id}/words" -
두 번째 예제는
words.json파일에서 동일한 단어를 추가합니다.{ "words": [ {"word": "HHonors", "sounds_like": ["hilton honors", "H. honors"], "display_as": "HHonors"}, {"word": "IEEE", "sounds_like": ["I. triple E."]} ] }다음 요청은 파일에서 단어를 추가합니다:
IBM Cloud
curl -X POST -u "apikey:{apikey}" \ --header "Content-Type: application/json" \ --data-binary @words.json \ "{url}/v1/customizations/{customization_id}/words"IBM Cloud Pak for Data IBM Software Hub
curl -X POST \ --header "Authorization: Bearer {token}" \ --header "Content-Type: application/json" \ --data-binary @words.json \ "{url}/v1/customizations/{customization_id}/words"
POST 는 비동기식입니다. 이를 완료하는 데는 몇 분 정도 소요될 수 있습니다. 완료하는 데 걸리는 시간은 추가하는 단어의 수와 서비스의 현재 로드에 따라 다릅니다. 오퍼레이션의 상태를 확인하는 방법에 대한 자세한 정보는 단어 추가 요청 모니터링을 참조하십시오.
PUT 메소드를 사용하여 단어 추가
PUT /v1/customizations/{customization_id}/words/{word_name} 메소드는 개별 단어를 추가합니다. 단어에 대한 정보를 제공하는 JSON 객체를 요청의 본문에 전달합니다.
다음 예제에서는 지정된 ID를 사용하는 모델에 NCAA라는 단어를 추가합니다. Content-Type 헤더가 다시 표시되면 JSON 데이터가 메서드로 전달되고 있음을 나타냅니다.
IBM Cloud
curl -X PUT -u "apikey:{apikey}" \
--header "Content-Type: application/json" \
--data "{\"sounds_like\": [\"N. C. A. A.\", \"N. C. double A.\"]}" \
"{url}/v1/customizations/{customization_id}/words/NCAA"
IBM Cloud Pak for Data IBM Software Hub
curl -X PUT \
--header "Authorization: Bearer {token}" \
--header "Content-Type: application/json" \
--data "{\"sounds_like\": [\"N. C. A. A.\", \"N. C. double A.\"]}" \
"{url}/v1/customizations/{customization_id}/words/NCAA"
PUT 의 방법은 동기적입니다. 이 서비스는 요청의 성공 또는 실패를 즉시 보고하는 응답 코드를 리턴합니다.
단어 추가 요청 모니터링
POST /v1/customizations/{customization_id}/words 메소드를 사용할 때 입력 데이터가 유효한 경우 서비스에서 201 응답 코드를 리턴합니다. 그런 다음 단어를 비동기식으로 처리하여 모델에 추가합니다. 서비스에서 새 단어 추가 요청을 완료할 때까지 사용자 정의 모델에 데이터를 추가하거나 모델을 훈련하는 요청을 제출할 수 없습니다.
요청의 상태를 판별하려면 GET /v1/customizations/{customization_id} 메소드를 사용하여 모델의 상태를 폴링하십시오. 이 메소드는 다음 예와 같이 모델의 사용자 정의 ID를 입력받습니다.
IBM Cloud
curl -X GET -u "apikey:{apikey}" \
"{url}/v1/customizations/{customization_id}"
IBM Cloud Pak for Data IBM Software Hub
curl -X GET \
--header "Authorization: Bearer {token}" \
"{url}/v1/customizations/{customization_id}"
요청은 모델의 상태에 대한 정보를 포함합니다.
{
"customization_id": "74f4807e-b5ff-4866-824e-6bba1a84fe96",
"created": "2016-06-01T18:42:25.324Z",
"updated": "2016-06-01T18:45:11.737Z",
"language": "en-US",
"dialect": "en-US",
"owner": "297cfd08-330a-22ba-93ce-1a73f454dd98",
"name": "Example model",
"description": "Example custom language model",
"base_model_name": "en-US_BroadbandModel",
"status": "pending",
"progress": 0
}
status 필드는 모델의 현재 상태를 보고합니다. 서비스가 새 단어를 처리하는 동안 상태는 pending으로 남아 있습니다. 루프를 사용하여 오퍼레이션이 완료되었음을 표시하는 ready가 될 때까지 10초마다 상태를 확인할 수 있습니다. 가능한 status 값에 대한 자세한 정보는 모델 훈련 요청 모니터링을
참조하십시오.
사용자 정의 모델의 단어 수정
POST /v1/customizations/{customization_id}/words 및 PUT /v1/customizations/{customization_id}/words/{word_name} 메소드를 사용하여 사용자 정의 모델의 단어를 수정하거나 기능을 보강할 수 있습니다. 이러한 메소드를 사용하여 단어가 모델에 추가될 때 발생한 철자 오류 또는 기타 오류를 정정해야 할
수도 있습니다. 기존 단어에 대해 동음어 정의를 추가해야 할 수도 있습니다.
이러한 메소드를 사용하여 단어를 추가할 때와 마찬가지로 기존 단어의 정의를 수정할 수 있습니다. 단어에 대해 제공하는 새 데이터가 단어의 기존 정의를 겹쳐씁니다. 이전 세대 모델을 기반으로 하는 사용자 정의 모델의 경우 말뭉치에서 추가된 단어도 수정할 수 있습니다.
사용자 정의 언어 모델 훈련
사용자 정의 언어 모델을 새 단어로 채우면(말뭉치 추가, 직접 단어 추가 또는 문법 추가) 새 데이터에 대한 모델을 훈련해야 합니다. 훈련을 통해 사용자 정의 모델이 음성 인식에서 데이터를 사용할 준비가 됩니다. 모델을 데이터에 대해 훈련할 때까지 모델이 어떤 방법으로든 추가한 단어를 사용하지 않습니다.
POST /v1/customizations/{customization_id}/train 메소드를 사용하여 사용자 정의 모델을 훈련할 수 있습니다. 다음 예제에서와 같이 훈련할 모델의 사용자 정의 ID를 메소드에 전달합니다.
IBM Cloud
curl -X POST -u "apikey:{apikey}" \
"{url}/v1/customizations/{customization_id}/train"
IBM Cloud Pak for Data IBM Software Hub
curl -X POST \
--header "Authorization: Bearer {token}" \
"{url}/v1/customizations/{customization_id}/train"
이 메소드는 비동기식입니다. 모델이 훈련되는 새 단어의 수 및 서비스의 현재 로드에 따라 훈련을 완료하는 데 몇 분이 걸릴 수 있습니다. 훈련 오퍼레이션의 상태를 확인하는 방법에 대한 자세한 정보는 모델 훈련 요청 모니터링을 참조하십시오.
이 메소드에는 다음과 같은 선택적 조회 매개변수가 포함됩니다.
-
word_type_to_add매개변수는 사용자 모델이 훈련될 단어를 지정합니다.- 원점에 관계없이 모든 단어에 대해 모델을 훈련하려면
all을 지정하거나 매개변수를 생략하십시오. - 말뭉치 또는 문법에서만 추출된 단어를 무시하고 사용자가 추가하거나 수정한 단어에 대해서만 훈련하려면
user를 지정하십시오.
이전 세대 모델을 기반으로 하는 사용자 정의 모델의 경우, 이 옵션은 철자 오류를 포함하는 단어와 같이 잡음이 있는 데이터가 포함된 말뭉치를 추가하는 경우에 유용합니다. 이러한 데이터에 대해 모델을 훈련하기 전에
word_type메소드의GET /v1/customizations/{customization_id}/words조회 매개변수를 사용하여 말뭉치 및 문법에서 추출된 단어를 검토할 수 있습니다. 자세한 정보는 사용자 정의 언어 모델의 사용자 정의 단어 나열을 참조하십시오.대형 음성 모델 및 차세대 모델을 기반으로 하는 사용자 정의 모델의 경우 서비스는
word_type_to_add매개변수를 무시합니다. 단어 리소스가 사용자가 직접 추가하거나 수정하는 사용자 정의 단어만 포함하므로 이 매개변수는 불필요합니다. - 원점에 관계없이 모든 단어에 대해 모델을 훈련하려면
-
이
customization_weight매개변수는 사용자 정의 모델이 음성 인식에 사용되는 경우 기본 어휘의 단어에 비해 사용자 정의 모델의 단어에 지정된 상대 가중치를 지정합니다. 사용자 정의 모델을 사용하는 인식 요청과 함께 사용자 정의 가중치를 지정할 수도 있습니다. 자세한 정보는 사용자 정의 가중치 사용을 참조하십시오. -
strict매개변수는 사용자 정의 모델에 유효하고 유효하지 않은 리소스(말뭉치, 단어 및 문법)가 혼합되어 있는 경우 훈련을 진행하는지 표시합니다. 기본적으로 모델에 하나 이상의 올바르지 않은 리소스가 포함된 경우 훈련에 실패합니다. 모델에 하나 이상의 올바른 리소스가 포함되어 있는 한 매개변수를false로 설정하여 훈련을 지속시키십시오. 서비스는 훈련에서 올바르지 않은 리소스를 제외합니다. 자세한 정보는 사용자 정의 언어 모델의 훈련 실패를 참조하십시오.
모델 훈련 요청 모니터링
훈련 프로세스가 성공적으로 시작되면 서비스에서 200 응답 코드를 리턴합니다. 기존 요청이 완료되어야 서비스가 후속 훈련 요청 또는 새 말뭉치, 단어 또는 문법을 추가하는 요청을 수락할 수 있습니다.
사용자 정의 언어 모델에 단어 추가 에 설명된 대로 대형 음성 모델 또는 차세대 모델을 기반으로 하는 사용자 정의 모델에 직접 사용자 정의 단어를 추가하면 모델의 훈련이 그렇지 않은 경우보다 몇 분 더 오래 걸립니다. POST /v1/customizations/{customization_id}/words 또는 PUT /v1/customizations/{customization_id}/words/{word_name} 메소드를 사용하여 추가한 사용자 정의 단어를 사용하여 모델을 훈련하는 경우 모델에 대해 몇 분의 추가 훈련 시간을 허용하십시오.
훈련 요청의 상태를 판별하려면 GET /v1/customizations/{customization_id} 메소드를 사용하여 모델의 상태를 폴링하십시오. 이 메소드는 모델의 사용자 정의 ID를 입력받습니다.
IBM Cloud
curl -X GET -u "apikey:{apikey}" \
"{url}/v1/customizations/{customization_id}"
IBM Cloud Pak for Data IBM Software Hub
curl -X GET \
--header "Authorization: Bearer {token}" \
"{url}/v1/customizations/{customization_id}"
응답에는 모델의 상태에 대한 정보가 포함됩니다
{
"customization_id": "74f4807e-b5ff-4866-824e-6bba1a84fe96",
"created": "2016-06-01T18:42:25.324Z",
"updated": "2016-06-01T18:45:11.737Z",
"language": "en-US",
"dialect": "en-US",
"owner": "297cfd08-330a-22ba-93ce-1a73f454dd98",
"name": "Example model",
"description": "Example custom language model",
"base_model_name": "en-US_BroadbandModel",
"status": "training",
"progress": 0
}
응답에는 사용자 정의 모델의 상태를 보고하는 status 및 progress 필드가 포함되어 있습니다. progress 필드의 의미는 모델의 상태에 따라 다릅니다. status 필드의 값은 다음 중 하나일 수 있습니다.
-
pending은 모델이 작성되었지만 올바른 훈련 데이터가 추가되거나 서비스가 추가된 데이터의 분석을 완료할 때까지 대기 중임을 표시합니다.progress필드는0입니다. -
ready는 모델이 올바른 데이터를 포함하고 있으며 훈련될 준비가 되었음을 표시합니다.progress필드는0입니다.모델이 올바른 오디오 리소스와 올바르지 않은 리소스를 함께 포함하는 경우(예를 들어, 올바른 사용자 정의 단어 및 올바르지 않은 사용자 정의 단어 모두)
strict조회 매개변수를false로 설정하지 않으면 모델 훈련에 실패합니다. 자세한 정보는 사용자 정의 언어 모델의 훈련 실패를 참조하십시오. -
training은 모델을 훈련 중임을 표시합니다.progress필드는0입니다. 훈련이 완료되면 필드가0에서100(으)로 변경됩니다. -
available은 모델이 훈련되었으며 사용할 준비가 되었음을 표시합니다.progress필드는100입니다. -
upgrading은 모델을 업그레이드 중임을 표시합니다.progress필드는0입니다. -
failed는 모델의 훈련이 실패했음을 표시합니다.progress필드는0입니다. 자세한 정보는 사용자 정의 언어 모델의 훈련 실패를 참조하십시오.
루프를 사용하여 available이 될 때까지 10초마다 상태를 확인할 수 있습니다. 사용자 정의 모델의 상태를 확인하는 방법에 대한 자세한 정보는 사용자 정의 언어 모델 나열을 참조하십시오.
사용자 정의 언어 모델의 훈련 실패
서비스가 사용자 정의 언어 모델에 대한 다른 요청을 처리 중인 경우 훈련을 시작하는 데 실패합니다. 예를 들어, 서비스가 다음을 수행 중인 경우 409의 상태 코드와 함께 훈련 요청을 시작하는 데 실패합니다.
- OOV 단어의 목록을 생성하거나 문자 시퀀스를 추출하기 위한 말뭉치 또는 문법 처리
- 유사 발음의 유효성을 검증하거나 자동 생성하기 위한 사용자 정의 단어 처리
- 다른 훈련 요청 처리
사용자 정의 모델이 다음을 수행 중인 경우에도 400의 상태 코드와 함께 훈련을 시작하는 데 실패합니다.
- 작성되거나 마지막으로 훈련된 이후 유효한 새 학습 데이터(말뭉치, 단어 또는 문법)를 포함하지 않습니다.
- 하나 이상의 유효하지 않은 말뭉치, 단어 또는 문법(예: 사용자 정의 단어에 올바르지 않은 유사 발음이 있음)을 포함합니다.
훈련 요청이 400의 상태 코드와 함께 실패하는 경우 서비스는 사용자 정의 모델의 상태를 failed로 설정합니다. 다음 조치 중 하나를 수행하십시오.
-
사용자 정의 인터페이스의 메소드를 사용하여 모델의 리소스를 검사하고 발견한 오류를 수정하십시오.
- 올바르지 않은 말뭉치의 경우 말뭉치 텍스트 파일을 정정하고
allow_overwrite메소드의POST /v1/customizations/{customization_id}/corpora/{corpus_name}매개변수를 사용하여 정정된 파일을 모델에 추가할 수 있습니다. 자세한 정보는 사용자 정의 언어 모델에 말뭉치 추가를 참조하십시오. - 올바르지 않은 문법의 경우 문법 파일을 정정하고
allow_overwrite메소드의POST /v1/customizations/{customization_id}/grammars/{grammar_name}매개변수를 사용하여 정정된 파일을 모델에 추가할 수 있습니다. 자세한 정보는 사용자 정의 언어 모델에 문법 추가를 참조하십시오. - 올바르지 않은 사용자 정의 단어의 경우
POST /v1/customizations/{customization_id}/words또는PUT /v1/customizations/{customization_id}/words/{word_name}메소드를 사용하여 모델의 단어 리소스에서 단어를 직접 수정할 수 있습니다. 자세한 정보는 사용자 정의 모델의 단어 수정을 참조하십시오.
사용자 정의 언어 모델에서 단어의 유효성을 검증하는 데 관한 자세한 정보는 다음을 참조하십시오.
- 올바르지 않은 말뭉치의 경우 말뭉치 텍스트 파일을 정정하고
-
훈련에서 올바르지 않은 리소스를 제외하려면
strict메소드의POST /v1/customizations/{customization_id}/train매개변수를false로 설정하십시오. 훈련이 성공하려면 모델에는 하나 이상의 올바른 리소스(말뭉치, 단어 또는 문법)가 포함되어야 합니다.strict매개변수는 올바른 오디오 리소스와 올바르지 않는 리소스가 함께 포함된 사용자 정의 모델을 훈련시키는 데 유용합니다.