Translator Text API를 통해 Bot의 QnA Maker 정밀도 향상

이 글은 Microsoft Azure Advent Calendar 2017의 다섯째 날의 글이다.

이 문장의 주요 주제


Azure Bot Service를 통해 QnA Maker와 Translator Text API를 연결하는 방법입니다.
실상은 노드.js의 예입니다.

QnA Maker


Microsoft Azure의 Cognitive Services 중 하나인 QnA 메이커는 QA 해설을 간단하게 관리할 수 있는 서비스다.가져오기도 URL에서 해결됩니다.
연결은 Azure Bot Service를 사용합니다.
QnA 메이커 공식 홈페이지가 여기 있습니다.
QnA 메이커의 눈동자 기능 중 하나로 질문의 의도를 해석하고 흔들림을 흡수하는 것이다.

문제.


QnA 메이커의 콘솔에서 테스트를 해보면 흔들림의 영향을 받아 답장이 오는데 왜 Bot Service 테스트에서 답장이 없을까.
해설은 아래와 같다.

또한 QnA 메이커의 테스트 화면은 다음과 같이 흡수 파동이 표시됩니다.

하지만!왜 Bot Service 테스트에서

이렇게 되면 상당히 어리석은 사람이 될 것이다.
영어라면 그렇지 않고 똑똑하게 대답할 거야.
언어 설정이 필요합니까?하지만 그런 곳을 찾을 수가 없어요.
혹시 아시는 분 있으면 알려주세요.
거기서 찾은 해결책은 "Translator Text API 사용"방법입니다.

Translator Text API


Microsoft Azure의 Cognitive Services 중 하나로 번역 기능을 제공하는 API입니다.
Translator Text API의 공식은 다음과 같습니다.

Translator Text API 및 QnA Maker


QnA 메이커의 KB의 Q 측면을 영어로 번역하고, QnA 메이커에게 묻기 전에 Translator Text API를 사용해 일본어-> 영어로 번역하는 사고방식이 간단하다.그렇습니다.
영어는 일본어보다 의도 해석의 정밀도가 높다.
프로세스는 다음과 같습니다.
1. Bot 일본어 메시지 받기
2. Translator Text API를 사용하여 메시지를 영어로 번역
3. 영역 정보로 QnA 메이커에게 문의
4. Bot 반납 QnA 메이커가 반납한 답변
이런 느낌이야.

전제 조건


Azure Bot Service 및 QnA Maker 설정이 완료된 상태를 전제로 합니다.
언어는 Node입니다.js를 선택하고 있습니다.
Azure Bot Service의 제작 방법은 다음 기사를 참조하십시오.
Azure BOT Service와 Cognitive Service QnA Maker로 FAQ BOT 만들기
ChatBot 입문-Azure Bot Service와 QnA 메이커가 사이트에서 사용할 수 있는 FAQBot 만들기

Translator Text API 사용 시작


Azure Portal에서 Translator Text API를 선택합니다.

생성을 누릅니다.

다양한 선택 항목으로 제작을 선택합니다.
"설계에 성공했습니다.", 그리고 기다린다.

Cognitive Services가 표시된 리소스를 확인한 후 를 엽니다.

필요한 키 정보를 얻습니다.

나중에 Translator Text API의 KEY를 사용하여 설치합니다.
※ 케이는 단 한 가지만 문제가 없다.

이루어지다


그럼 Translator Text API와 QnA Maker를 어떻게 연결하는지 살펴봅시다.
Translator Text API 호출 섹션을 설치할 때는 다음 기사를 참조하십시오.
Bot Framework와 Translator Text API를 사용하여 간단한 번역 Bot ② 기능 추가편 만들기
이번에는 온라인 편집기로 해설을 진행한다.
app.js를 엽니다.
우선, 파일의 첫머리에 Request를 시작합니다.
app.js
var request = require('request');
다음은 Translator Text API와 QnA Maker를 연결하는 곳입니다.
마지막 줄을 고쳐 쓰다.
app.js
// 以下をコメントアウト
// bot.dialog('/', basicQnAMakerDialog);
//以下を追加
bot.dialog('/', (session) => {
    var to_lang = 'en';
    // Translator Text APIとQnA Makerの連携
    translate(session.message.text, to_lang, (trans_text) => {
        // メッセージを英訳したものに置き換える
        session.message.text = trans_text;
        // QnA Makerに問い合わせ
        basicQnAMakerDialog.replyReceived(session);
    });
});

/**
 * Translater Text APIに問い合わせる
 */
var translate = (text, to_lang, callback) => {

    var api_key = "xxxxxxxxxx"; // 先ほど控えたtranslator text apiのkey
    get_token(api_key, (token) => {
        // リクエスト用のオプション
        var options = {
            url: "https://api.microsofttranslator.com/V2/Http.svc/Translate",
            qs: {
                'to': to_lang,
                'text': text
            },
            method: 'GET',
            headers: {
                'Authorization': 'Bearer ' + token
            },
            json: true
        };

        request(options, (error, response, body) => {
            // タグの除去
            body = body.replace(/<(.+?)>|<\/string>/g, '');
            callback(body);
        });
    });
};

/**
 * Cognitive Serviceへのリクエストに必要なトークンを取得する
 */
var get_token = (key, callback) => {
    // リクエスト用のオプション
    var options = {
        url: "https://api.cognitive.microsoft.com/sts/v1.0/issueToken",
        method: 'POST',
        headers: {
            'Content-Type': 'application/jwt',
            'Ocp-Apim-Subscription-Key': key
        },
        json: true,
    };

    request(options, (error, response, body) => {
        callback(body);
    });
};
이상
방금 가져온 Translator Text API의 키로 var api_key = "xxxxxxxxxx"의 위치를 바꿉니다.
그리고 이번에는 편의를 위해 생략하였다
원래git로 원본 파일을 관리해서 로컬 편집기에서 개발할 수 있는 환경을 만들어야 합니다.가장 좋은 것은 손으로 디버깅해서 개발하는 것이다.
그리고 KEY를 너무 많이 쓴 메시지도 환경 변수로 전달해야 한다.

QnA 메이커의 설명 업데이트


Q방면을 영어로 번역해라.

테스트



잘 흡수되고 흔들려요!

주의 사항


QnA 메이커는 옵션 기능으로 답변 후보를 표시할 수 있지만, Q 쪽이 영어로 번역돼 등록돼 있어 영어로 표시된다.
이것도 모든 파워 스킬을 번역한 뒤 표시할 수 있지만, 트랜슬레이터 텍스 API(3~4회)라고 여러 번 부르기 때문에 반응 시간이 매우 느려지고 기계 번역 결과도 그대로 답장이 오기 때문에 어색한 글이 될 수 있다.
후보 응답이 표시될 때 사용하지 않는 것이 좋습니다.

관심 사항

  • Q는 영어, A는 일본어여서 QnA 메이커의 해설 관리가 까다롭다.Q 유지보수를 할 때 영어에 능숙한 사람이라면 그렇게 편집해도 문제없고, 그렇지 않다면 영어->일본어에서Microsoft Translator 등 기계번역 서비스를 사용해 번역하고 본문 전체를 수정해야 한다.
    만약 현황이라면 일본어 의도 해석의 정밀도와 유지 보수 비용에 절충이 발생할 것이다.
  • 매번 받은 정보를 트랜슬레이터 텍스 API에 던지기 때문에 봇의 반응은 느려진다.여기도 간과할 수 없는 수준이다.물론 Translator Text API+QnA 메이커 양측의 반응을 동시에 기다린다.사용자가 Bot에 대한 빠른 응답을 기대하는 경우 실제 작업을 수행할 수 없습니다.
  • 끝말


    Azure Bot Service와 협업할 수 있는 Cognitive Services에는 여러 가지가 있는데, 이 사건처럼 밀접하게 연결되면 다양한 일이 가능합니다.
    또 봇서비스와 QnA 메이커의 결과 차이는 향후 개선될 가능성이 크므로 당분간 지켜보는 것이 좋다.
    개선되면 위와 같은 주의사항이나 관심 사항을 고려하지 않아도 되므로 트랜슬레이터 텍스트 API의 연결을 취소해야 한다.
    지금까지 멋진 Bot 생활이었습니다.

    좋은 웹페이지 즐겨찾기