사용자 지정 어휘를 통한 음성 인식 개선 - Amazon Lex

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

사용자 지정 어휘를 통한 음성 인식 개선

Amazon Lex V2에 특정 언어로 사용자 지정 어휘를 생성하여 봇과의 음성 대화를 처리하는 방법에 대한 추가 정보를 제공할 수 있습니다. 사용자 지정 어휘는 오디오 입력에서 Amazon Lex V2가 인식하게 하려는 특정 문구의 목록입니다. 이러한 문구는 일반적으로 Amazon Lex V2가 인식하지 못하는 고유 명사 또는 도메인별 단어입니다.

예를 들면, 기술 지원 봇이 있다고 가정해 보겠습니다. 사용자 지정 어휘에 ‘백업’을 추가하면 오디오가 ‘팩업’처럼 들리는 경우에도 봇이 오디오를 ‘백업’으로 올바르게 변환하도록 할 수 있습니다. 사용자 지정 어휘를 사용하면 금융 서비스를 위한 'solvency' 같은 희귀 단어나 'Cognito' 또는 'Monitron'과 같은 고유 명사도 오디오에서 인식하는 데 도움이 될 수 있습니다.

사용자 지정 어휘 기본 사항

  • 사용자 지정 어휘는 오디오 입력을 봇에 기록하는 데 사용됩니다. 의도 또는 슬롯 값을 인식하려면 샘플 발화를 제공해야 합니다.

  • 사용자 지정 어휘는 특정 언어에 고유합니다. 각 언어에 대해 사용자 지정 어휘를 독립적으로 구성해야 합니다. 사용자 지정 어휘는 영어(영국) 및 영어(미국) 언어에만 지원됩니다.

  • Amazon Lex V2에서 지원하는 고객 센터 통합을 통해 사용자 지정 어휘를 사용할 수 있습니다. Amazon Lex V2 콘솔의 테스트 창은 2022년 7월 31일 이후에 구축된 모든 Amazon Lex V2 봇에 대한 사용자 지정 어휘를 지원합니다. 테스트 창에서 사용자 지정 어휘와 관련된 문제가 발생하는 경우 봇을 다시 빌드하고 시도하세요.

Amazon Lex V2는 사용자 지정 어휘를 사용하여 의도와 슬롯을 모두 이끌어냅니다. 동일한 사용자 지정 어휘 파일이 의도와 슬롯에 사용됩니다. 슬롯 유형을 추가할 때 슬롯의 사용자 지정 어휘 기능을 선택적으로 끌 수 있습니다.

의도 유도 - 의도를 이끌어내기 위한 사용자 지정 어휘를 만들 수 있습니다. 이러한 문구는 봇이 사용자의 의도를 파악할 때 트랜스크립션에 사용됩니다. 예를 들어 사용자 지정 어휘에 ‘백업’이라는 문구를 구성하면 오디오가 “사진을 팩업해 주실 수 있나요?”와 같은 소리가 들리는 경우에도 Amazon Lex V2는 사용자 입력을 “내 사진을 백업해 주시겠습니까?”로 기록합니다. 가중치를 0, 1, 2 또는 3으로 구성하여 각 문구의 부스팅 정도를 지정할 수 있습니다. displayAs 필드를 추가하여 음성에서 텍스트 변환의 최종 출력 시 해당 문구의 대체 표현을 지정할 수도 있습니다.

의도 유도 시 트랜스크립션을 개선하는 데 사용되는 사용자 지정 어휘는 슬롯을 유도하는 동안에는 트랜스크립션에 영향을 주지 않습니다. 의도 유도를 위한 사용자 지정 어휘 작성에 대한 자세한 정보는 의도와 슬롯을 유도하기 위한 사용자 지정 어휘 생성 단원을 참조하세요.

사용자 지정 슬롯 유도 – 사용자 지정 어휘를 사용하여 음성 대화의 슬롯 인식을 개선할 수 있습니다. Amazon Lex V2 봇의 슬롯 값 인식 기능을 개선하려면 사용자 지정 슬롯을 생성하고 사용자 지정 슬롯에 슬롯 값을 추가한 다음 슬롯 값을 사용자 지정 어휘로 사용을 선택합니다. 슬롯 값의 예로는 제품 이름, 카탈로그 또는 고유 명사 등이 있습니다. 사용자 지정 어휘에는 “예”, “아니요”와 같은 일반적인 단어나 문구를 사용해서는 안 됩니다.

슬롯 값이 추가된 후 봇이 사용자 지정 슬롯에 대한 입력을 예상할 때 이러한 값은 슬롯 인식을 개선하는 데 사용됩니다. 이러한 값은 의도를 이끌어낼 때 트랜스크립션에 사용되지 않습니다. 자세한 내용은 슬롯 유형 추가 섹션을 참조하세요.

사용자 지정 어휘를 만드는 모범 사례

의도 유도

  • 사용자 지정 어휘는 특정 단어 또는 구절을 대상으로 사용하기에 가장 적합합니다. Amazon Lex V2에서 쉽게 인식되지 않는 경우에만 사용자 지정 어휘에 단어를 추가하세요.

  • 트랜스크립션에서 해당 단어가 인식되지 않는 빈도와 입력에서 해당 단어가 얼마나 드물게 사용되는지에 따라 한 단어에 얼마나 많은 가중치를 부여할지 결정하세요. 발음하기 어려운 단어일수록 가중치를 높여야 합니다.

  • 대표적인 테스트 세트를 사용하여 가중치가 적절한지 결정하세요. 대화 로그에서 오디오 로깅을 켜서 오디오 테스트 세트를 수집할 수 있습니다.

  • 사용자 지정 어휘에 “on”, “it”, “to”, “yes”, “no”와 같은 짧은 단어를 사용하지 마세요.

사용자 지정 슬롯 유도

  • 인식될 것으로 예상되는 사용자 지정 슬롯 유형에 값을 추가합니다. 슬롯 값이 얼마나 흔하거나 희귀한지에 상관없이 사용자 정의 슬롯 유형에 사용할 수 있는 모든 슬롯 값을 추가하세요.

  • 사용자 지정 슬롯 유형에 카탈로그 값 또는 제품 이름 또는 뮤추얼 펀드와 같은 개체 목록이 포함된 경우에만 옵션을 활성화하세요.

  • 슬롯 유형을 사용하여 “예”, “아니요”, “모르겠어요”, “아마도”와 같은 일반적인 문구나 “하나”, “둘”, “셋”과 같은 일반적인 단어를 캡처하는 경우 옵션을 비활성화하세요.

  • 최상의 성능을 위해 슬롯 값 및 동의어 수를 500개 이하로 제한하세요.

두문자어 또는 문자를 개별적으로 발음해야 하는 기타 단어는 마침표와 띄어쓰기로 구분된 단일 문자로 입력합니다. ‘J. P. Morgan’ 또는 ‘A. W. S.’와 같이 문구의 일부가 아닌 한 개별 문자를 사용하지 마세요. 대문자 또는 소문자를 사용하여 두문자어를 정의할 수 있습니다.

의도와 슬롯을 유도하기 위한 사용자 지정 어휘 생성

Amazon Lex V2 콘솔을 사용하여 사용자 지정 어휘를 생성 및 관리하거나 Amazon Lex V2 API 작업을 사용할 수 있습니다. 콘솔을 통해 사용자 지정 어휘를 생성하는 두 가지 방법이 있습니다.

콘솔에서 사용자 지정 어휘를 가져오세요.
  1. https://console.aws.amazon.com/lexv2/home에서 Amazon Lex V2 콘솔을 엽니다.

  2. 봇 목록에서 사용자 지정 어휘를 추가할 봇을 선택합니다.

  3. 봇 세부 정보 페이지의 언어 추가 섹션에서 언어 보기를 선택합니다.

  4. 언어 목록에서 사용자 지정 어휘를 추가할 언어를 선택합니다.

콘솔에서 직접 새 사용자 지정 어휘를 만드세요.
  1. 언어 세부 정보 페이지의 사용자 지정 어휘 섹션에서 만들기를 클릭합니다. 그러면 사용자 지정 어휘가 없는 편집 창이 열립니다.

  2. 필요에 따라 문구, DisplayAS 및 가중치에 대한 입력을 추가합니다. 추가된 항목의 필드를 업데이트하거나 목록에서 항목을 삭제하여 추가로 인라인 편집을 수행할 수 있습니다.

  3. 저장을 클릭합니다. 참고: 새 사용자 지정 어휘는 저장을 클릭한 후에만 봇에 저장됩니다.

  4. 이 페이지에서 인라인 편집을 계속하고 완료한 후 저장을 클릭하면 됩니다.

  5. 또한 이 페이지에서는 오른쪽 상단에 있는 드롭다운 메뉴에서 사용자 지정 어휘 파일을 가져오고, 내보내고, 삭제할 수 있습니다.

ListCustomVocabularyItems API를 사용하여 사용자 지정 어휘 항목을 확인하세요.
  1. ListCustomVocabularyItems 작업을 사용하여 사용자 지정 어휘 항목을 볼 수 있습니다. 요청 본문은 다음과 같습니다.

    { "maxResults": number, "nextToken": "string" }
  2. 참고로 maxResultsnextToken는 요청 본문의 선택적 필드입니다.

  3. ListCustomVocabularyItems 작업의 응답은 다음과 같습니다.

    { "botId": "string", "botVersion": "string", "localeId": "string", "customVocabularyItems": [ { "itemId": "string", "phrase": "string", "weight": number, "displayAs": "string" } ] }
BatchCreateCustomVocabularyItem API를 사용하여 새 사용자 지정 어휘 항목을 생성하세요.
  1. 봇의 로캘에 사용자 지정 어휘가 아직 생성되지 않은 경우 StartImport를 사용하여 사용자 지정 어휘를 생성하는 단계를 따르세요.

  2. 사용자 지정 어휘가 생성되면 BatchCreateCustomVocabularyItem 작업을 사용하여 새 사용자 지정 어휘 항목을 생성하세요. 요청 본문은 다음과 같습니다.

    { "customVocabularyItemList": [ { "phrase": "string", "weight": number, "displayAs": "string" } ] }
  3. 참고로 weightdisplayAs는 요청 본문의 선택적 필드입니다.

  4. BatchCreateCustomVocabularyItem의 응답은 다음과 같습니다.

    { "botId": "string", "botVersion": "string", "localeId": "string", "errors": [ { "itemId": "string", "errorMessage": "string", "errorCode": "string" } ], "resources": [ { "itemId": "string", "phrase": "string", "weight": number, "displayAs": "string" } ] }
  5. 이 작업은 일괄 처리되므로 항목 중 하나를 만들지 못해도 요청이 실패하지 않습니다. 오류 목록에는 해당 특정 항목에 대해 작업이 실패한 이유에 대한 정보가 포함됩니다. 리소스 목록에는 성공적으로 생성된 모든 항목이 포함됩니다.

  6. BatchCreateCustomVocabularyItem의 경우 다음과 같은 유형의 오류가 발생할 수 있습니다.

    • RESOURCE_DOES_NOT_EXIST: 사용자 지정 어휘가 존재하지 않습니다. 이 작업을 호출하기 전에 사용자 지정 어휘를 생성하는 단계를 따릅니다.

    • DUPLICATE_INPUT: 입력 목록에 중복된 구문이 있습니다.

    • RESOURCE_ALREADY_EXISTS: 입력한 문구가 사용자 지정 어휘에 이미 있습니다.

    • INTERNAL_SERVER_FAILURE: 요청을 처리하는 동안 백엔드에 오류가 발생했습니다. 이 오류가 발생한 경우 서비스 중단이나 다른 문제를 나타낼 수 있습니다.

BatchDeleteCustomVocabularyItem API를 사용하여 기존 사용자 지정 어휘 항목을 삭제하세요.
  1. 봇의 로캘에 사용자 지정 어휘가 아직 생성되지 않은 경우 StartImport를 사용하여 사용자 지정 어휘 만들기의 단계에 따라 생성하세요.

  2. 사용자 지정 어휘가 생성되면 BatchDeleteCustomVocabularyItem 작업을 사용하여 기존 사용자 지정 어휘 항목을 삭제하세요. 요청 본문은 다음과 같습니다.

    { "customVocabularyItemList": [ { "itemId": "string" } ] }
  3. BatchDeleteCustomVocabularyItem의 응답은 다음과 같습니다.

    { "botId": "string", "botVersion": "string", "localeId": "string", "errors": [ { "itemId": "string", "errorMessage": "string", "errorCode": "string" } ], "resources": [ { "itemId": "string", "phrase": "string", "weight": number, "displayAs": "string" } ] }
  4. 이 작업은 일괄 처리되므로 항목 중 하나를 삭제하지 못해도 요청이 실패하지 않습니다. 오류 목록에는 해당 특정 항목에 대해 작업이 실패한 이유에 대한 정보가 포함됩니다. 리소스 목록에는 성공적으로 삭제된 모든 항목이 포함됩니다.

  5. BatchDeleteCustomVocabularyItem의 경우 다음과 같은 유형의 오류가 발생할 수 있습니다.

    • RESOURCE_DOES_NOT_EXIST: 삭제하려는 사용자 지정 어휘 항목이 존재하지 않습니다.

    • INTERNAL_SERVER_FAILURE: 요청을 처리하는 동안 백엔드에 오류가 발생했습니다. 이 오류가 발생한 경우 서비스 중단이나 다른 문제를 나타낼 수 있습니다.

BatchUpdateCustomVocabularyItem API를 사용하여 기존 사용자 지정 어휘 항목을 업데이트하세요.
  1. 봇의 로캘에 사용자 지정 어휘가 아직 생성되지 않은 경우 StartImport를 사용하여 사용자 지정 어휘 만들기의 단계에 따라 사용자 지정 어휘를 생성하세요.

  2. 사용자 지정 어휘가 생성되면 BatchUpdateCustomVocabularyItem 작업을 사용하여 기존 사용자 지정 어휘 항목을 업데이트하세요. 요청 본문은 다음과 같습니다.

    { "customVocabularyItemList": [ { "itemId": "string", "phrase": "string", "weight": number, "displayAs": "string" } ] }
  3. 참고로 weightdisplayAs는 요청 본문의 선택적 필드입니다.

  4. BatchUpdateCustomVocabularyItem의 응답은 다음과 같습니다.

    { "botId": "string", "botVersion": "string", "localeId": "string", "errors": [ { "itemId": "string", "errorMessage": "string", "errorCode": "string" } ], "resources": [ { "itemId": "string", "phrase": "string", "weight": number, "displayAs": "string" } ] }
  5. 이 작업은 일괄 처리되므로 항목 중 하나를 삭제하지 못해도 요청이 실패하지 않습니다. 오류 목록에는 해당 특정 항목에 대해 작업이 실패한 이유에 대한 정보가 포함됩니다. 리소스 목록에는 성공적으로 업데이트된 모든 항목이 포함됩니다.

  6. BatchUpdateCustomVocabularyItem의 경우 다음과 같은 유형의 오류가 발생할 수 있습니다.

    • RESOURCE_DOES_NOT_EXIST: 업데이트하려는 사용자 지정 어휘 항목이 존재하지 않습니다.

    • DUPLICATE_INPUT: 입력 목록에 중복된 itemId가 있습니다.

    • RESOURCE_ALREADY_EXISTS: 입력한 문구가 사용자 지정 어휘에 이미 있습니다.

    • INTERNAL_SERVER_FAILURE: 요청을 처리하는 동안 백엔드에 오류가 발생했습니다. 이 오류가 발생한 경우 서비스 중단이나 다른 문제를 나타낼 수 있습니다.

사용자 지정 어휘 파일 생성

사용자 지정 어휘 파일은 탭으로 구분된 값 목록으로, 인식할 문구, 부스트할 가중치, 음성 기록에서 해당 구문을 대체할 displayAs 필드가 포함되어 있습니다. 부스트 값이 높은 구문은 오디오 입력에 표시될 때 사용될 가능성이 높습니다.

사용자 지정 어휘 파일은 이름은 CustomVocabulary.tsv여야 하며, 가져오기 전에 zip 파일로 압축해야 합니다. zip 파일은 크기가 300MB 미만이어야 합니다. 사용자 지정 어휘의 최대 문구 수는 500개입니다.

  • 문구 인식되어야 하는 1~4개의 단어입니다. 문구의 단어를 띄어쓰기로 구분합니다. 파일에 중복 문구를 사용할 수 없습니다. 문구 필드는 필수입니다.

  • 가중치 – 구문 인식이 부스팅되는 정도입니다. 값은 정수 0, 1, 2 또는 3입니다. 가중치를 지정하지 않으면 기본값은 1입니다. 트랜스크립션에서 해당 단어가 인식되지 않는 빈도와 입력에서 해당 단어가 얼마나 드물게 사용되는지에 따라 가중치를 결정하세요. 가중치 0은 부스팅이 적용되지 않으며 입력된 항목이 displayAs 필드를 사용하여 교체하는 용도로만 사용됨을 의미합니다.

  • displayAs – 트랜스크립션 출력에서 문구가 어떻게 보이길 원하는지 정의합니다. 이 필드는 사용자 지정 어휘의 옵션 필드입니다.

사용자 지정 어휘 파일에는 ‘phrase’, ‘weight’, ‘displayAs’라는 머리글이 있는 헤더 행이 포함되어야 합니다. 헤더는 어떤 순서로든 가능하지만 위의 명명법을 따라야 합니다.

다음 예시는 사용자 지정 어휘 파일입니다. 문구, 가중치 및 displayAs를 구분하는 데 필요한 탭 문자는 ‘[TAB]’ 텍스트로 표시됩니다. 이 예시를 사용하는 경우 텍스트를 탭 문자로 바꾸세요.

phrase[TAB]weight[TAB]displayAs Newcastle[TAB]2 Hobart[TAB]2[TAB]Hobart, Australia U. Dub[TAB]1[TAB]University of Washington, Seattle W. S. U.[TAB]3 Issaquah Kennewick