[A3RT] Proofreading API の使い方を簡単に解説。(JavaScript リクエスト編)

noteで書く

本稿の前提として、Proofreading APIの解説ページが全てです。かなり丁寧でわかりやすいです。

Proofreading APIでできること

本家ドキュメントから引用させて頂きます。

機械学習を用いて、大量の日本語文章データから正しい文章の構成や文法、単語の流れを学習し、異常検知的に誤字脱字を発見するAPIです。 例えば、システムの規格から開発・運用まで幅広く関われます。”といった文章をAPIに投げてみてください。助詞の間違いや変換ミスによる間違いを検出してアラートを返してくれます。

現時点(2017-05-02)でのProofreading APIは求人系の文章を教師データとしているようで、求人・採用に関連した文章への利用が推奨されています。

APIKEYの取得

各API解説ページの一番下に、APIを使うためのAPIKEY発行ボタンがあります。利用規約を確認・同意した後、メールアドレス承認→APIKEY受信の流れで、APIKEYを取得します。

注意点

同じEmailアドレスで他のサービスのAPIKEYを取得した場合、そのEmailアドレスに承認情報が紐付けられます。退会申請をすると、紐付けられているAPIKEYすべてが利用できなくなりますので、再度APIKEYを発行する必要があります。

簡単な解説

全文

以下の通りです。

html

<textarea id="proofreading__sentence" placeholder="ここにテキストを入力"></textarea>
<button id="proofreading__request" type="button">文章校閲</button>
<ul id="proofreading__alerts"></ul>

JavaScript

/*---------------------------------------*/
/* HTML(だけ)の読み込みが完了したら */
/*---------------------------------------*/
window.addEventListener('DOMContentLoaded',()=>{
    //- イベントリスナー登録
    document.getElementById('proofreading__request').addEventListener('click',handler_request_revision);
});

/*---------------------------------------*/
/* 修正箇所をリクエスト */
/*---------------------------------------*/
function handler_request_revision(ev){
    /*---------------------------------------*/
    /* 文章取得 */
    /*---------------------------------------*/
    const sentence = document.getElementById('proofreading__sentence').value;

    /*---------------------------------------*/
    /* リクエストデータ */
    /*---------------------------------------*/
    let formdata = new FormData();
    //- apikeyパラメーター 
    formdata.append('apikey','<取得したAPIKEY>');
    //- コメント
    formdata.append('sentence',sentence);
    //- チェック感度
    formdata.append('sensitivity','medium');

    /*---------------------------------------*/
    /* リクエスト */
    /*---------------------------------------*/
    fetch('https://api.a3rt.recruit-tech.co.jp/proofreading/v1/typo',{
        method: 'post',
        body: formdata,
    }).then(response => {
        //- レスポンス取得
        response.json().then(data => {
            //- 指摘箇所取得
            const alerts = data.alerts
            //- 出力
            alerts.forEach(alert => {
                let output = document.createElement('li')
                output.innerHTML = '<p>【評価点】 '+alert.rankingScore+'</p>';
                output.innerHTML += '<p>【指摘された文章】'+alert.checkedSentence+'</p>';
                document.getElementById('proofreading__alerts').appendChild(output);
            });
        });
    });

}

解説

エンドポイントに対してリクエストできるパラメーターは、apikey,sentence,sensitivity,callbackの4つで、そのうちapikeyとsentence(文章)が必須のパラメーターになっています。
sentenceパラメーターで送信できる文字数は500文字までです。
また、チェックの厳密さをsensitivityパラメーターにて、low(ゆるめ),medium(デフォルト),high(厳しめ)の3段階で指定できます。

以下では、HTML5より使えるFormDataクラスを使ってリクエストのパラメーターを設定しています。

//- textareaに入力された文章を種痘k
const sentence = document.getElementById('proofreading__sentence').value;

//- FormDataクラスからインスタンスを生成
let formdata = new FormData();
//- apikeyパラメーター 
formdata.append('apikey','<取得したAPIKEY>');
//- コメント
formdata.append('sentence',sentence);
//- チェック感度
formdata.append('sensitivity','medium');

リクエストするパラメーターを設定したformdataインスタンスを生成したら、後は好きな方法でリクエストします。

# jQueryのajaxを利用する場合、dataにformdataをセット
$.ajax({
    method: 'post',
    url: <エンドポイント>,
    data: formdata,
}).done(response => {
    console.log(response);
})

# fetchを利用する場合、bodyにformdataをセット
fetch(<エンドポイント>,{
    method: 'post',
    body: formdata,
}).then(response => {
    //- response.json()はPromiseを返すので解決を待って表示
    response.json().then(data => {
        console.log(data);
    })
})

上記のような感じでしょうか。
alerts配列として格納されて来ますので、いい塩梅に加工して出力してください。
alertsのレスポンスには、
– checkedSentence(指摘された言葉がある文章)
– alertCode(指摘の種類を表すコード 0,1,2で数字が大きいほど怪しい)
– alertDetail(alertCodeに対応した文章)
– word(指摘された単語)
– rankingScore(疑わしさの値 0~1の範囲で1に近いほど怪しい)
が格納されています。

所感

以上でProofreading APIの解説(リクエスト編)は終了です。
「なんで?」と思う指摘があったりしますが、意味を調べてみると納得することもあり、文章や言葉の勉強にもなりました。
個人的にお気に入りのAPIです。

実際に試してみたい時

A3RTのソリューションAI APIの解説一覧

noteで書く

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です