本稿の前提として、Text Classification APIの解説ページが全てです。かなり丁寧でわかりやすいです。
Text Classification APIでできること
本家ドキュメントから引用させて頂きます。
Text Classification APIはCNNを利用して、文章を予め与えられたラベルに自動的に分類するAPIです。例えば、ポジティブなことを言っている文章かネガティブなことを言っている文章かを自動的に分類することが可能です。また、ラベルと文章が対になっている学習データがあれば、あなただけの文書分類モデルを作成することも可能です。まずは、用意されているモデルに対して文章を投げてみて、どのような返答がくるかを試してみてください。
現在(2017-05-03)時点で標準で用意されているモデルは求人系の文章と職種を学習しているようです。Text Classification APIでは、APIKEY1つにつき1つのモデル作ることが可能です。要求されるデータもlabel(分類したいラベル)、text(テキスト)だけですので、他のモデルよりデータ集めは少し楽(?)かもしれません。
APIKEYの取得
各API解説ページの一番下に、APIを使うためのAPIKEY発行ボタンがあります。利用規約を確認・同意した後、メールアドレス承認→APIKEY受信の流れで、APIKEYを取得します。
注意点
同じEmailアドレスで他のサービスのAPIKEYを取得した場合、そのEmailアドレスに承認情報が紐付けられます。退会申請をすると、紐付けられているAPIKEYすべてが利用できなくなりますので、再度APIKEYを発行する必要があります。
簡単な解説
全文
以下の通りです。
html
<textarea id="textClassification__text" placeholder="ここにテキストを入力"></textarea>
<button id="textClassification__request" type="button">リクエスト</button>
<ul id="textClassification__labels"></ul>
JavaScript
/*---------------------------------------*/
/* HTML(だけ)の読み込みが完了したら */
/*---------------------------------------*/
window.addEventListener('DOMContentLoaded',()=>{
//- イベントリスナー登録
document.getElementById('textClassification__request').addEventListener('click',handler_request_classification);
});
/*---------------------------------------*/
/* 文章の分類をリクエスト */
/*---------------------------------------*/
function handler_request_classification(ev){
/*---------------------------------------*/
/* 文章取得 */
/*---------------------------------------*/
const text = document.getElementById('textClassification__text').value;
/*---------------------------------------*/
/* レクエストデータ */
/*---------------------------------------*/
let formdata = new FormData();
//- apikeyパラメーター
formdata.append('apikey','Yx8mGVPirOs64xoqTlz7r3E8WIoHHZDE');
//- 文章
formdata.append('text',text);
//- モデルID
formdata.append('model_id','default');
/*---------------------------------------*/
/* リクエスト */
/*---------------------------------------*/
fetch('https://api.a3rt.recruit-tech.co.jp/text_classification/v1/classify',{
method: 'post',
body: formdata,
}).then(response => {
//- レスポンス取得
response.json().then(data => {
console.dir(data);
//- 返答取得
const labels = data.classes;
//- 前回データをクリア
const classList = document.getElementById('textClassification__labels');
classList.innerHTML = '';
//- 出力
labels.forEach(label => {
const output = document.createElement('li');
output.innerHTML = '<p>推定値 : ' + label.probability + '</p>';
output.innerHTML += '<p>ラベル : ' + label.label + '</p>';
classList.appendChild(output);
})
});
});
}
解説
エンドポイントに対してリクエストできるパラメーターは、apikey,text,model_idの3つで、いずれも必須となっています。
model_idは空で指定することがで、その場合はdefault(求人系の提供されているモデル)が選択されます。
textには最大で1000文字,500単語を指定することが可能です。
以下では、HTML5より使えるFormDataクラスを使ってリクエストのパラメーターを設定しています。
//- テキスト取得
const text = document.getElementById('textClassification__text').value;
//- FormDataクラスからインスタンスを生成
let formdata = new FormData();
//- apikeyパラメーター
formdata.append('apikey','<取得したAPIKEY>');
//- 文章
formdata.append('text',text);
//- モデルID
formdata.append('model_id','default');
リクエストするパラメーターを設定した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);
})
})
上記のような感じでしょうか。
所感
以上でText Classification APIの解説(リクエスト編)は終了です。
使用してみてですが、営業の出現率が非常に高かったのが印象的でした。
弊社では秋田ジョブという秋田限定の求人サイトも運営していますので、文章の影響力を測定する目的で利用できないか考えています。