本稿の前提として、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です。