このエントリの続きです。ここで紹介した機能を実現する API の使い方を紹介します:
この機能は IBM Bluemix を通じて提供されているコグニティブサービスの1つである Watson Message Resonance サービスから使うことができます。そのため、まずは Bluemix にログインして、なんらかのランタイムにバインドする形で同サービスを追加する必要があります。ちなみにこのサービスは2015年4月19日時点ではベータ版であり、IBM Bluemix 利用者であれば無料で利用することができます:
ランタイムに Message Resonance サービスを追加後に「資格情報」を参照して、このサービスを利用する際のユーザーID(username)とパスワード(password)情報を確認しておきます:
ここまでの事前準備ができていれば、Watson Message Resonance サービスの API を使うことができます。以下は Java を使った場合のサンプルですが、REST API なので Java 以外の言語であっても同様に利用することができます:
上記のように、https://gateway.watsonplatform.net/message-resonance-beta/api/v1/ringscore に対して Get メソッドを実行します。その際の text パラメータに流行性を調べたい単語を指定します。また dataset パラメータは流行性を調べる対象業界で、1はクラウド、2はビッグデータです。シンプルなので Java 以外への応用もさほど難しくないと思っています。
このコードを実行した結果(上記コードの場合は json 変数の値)は以下の様な JSON 文字列になります:
この中身を少し解説します。
"dataset":1 は URL で指定した dataset=1 が結果にも含まれて返ってきているだけです。"word":"Bluemix" も同様です。なので実際の実行結果といえるのはこの続き部分になります。
"overall":19 は流行度合いの総合的な結果であり、以下の3つの結果の合計値になっています。
"prevalence":10 は、その単語の今現在の流行度合いを示しています。この場合ではその値が 10 ということになります。
"volume":4 はその単語がこれまでにどの程度の量/回数で使われているか、という指標です。多く使われていれば今流行している、といえるわけではありませんが、過去も含めてどれだけ多く使われていたか、という指標になる数字です。この場合ではその値は 4 という評価です。
最後の "duration":5 はどの程度の期間使われているか、という指標になります。当然長い期間使われ続けている単語であればずっと流行しているともいえますが、短い期間で爆発的に流行したものかどうかを調べることもできます。この単語の場合はその値が 5 という評価です。
つまりこの "Bluemix" という単語の場合は現在の流行度 10、データ量 5、流行期間 4 で、総合結果は19という結果になった、という意味です。
この API は単語ごとにしか問い合わせができませんが、複数の語について調べるには文章を単語に分解して、その結果の各単語ごとにこの API を実行すればよいことになります。なお、残念ながらこの API は 2015 年4月19日現在ではまだ英語の単語に対してのみ利用可能です。
なお、Message Resonance API のリファレンスはこちらを参照ください:
Message Resonance Reference
この機能は IBM Bluemix を通じて提供されているコグニティブサービスの1つである Watson Message Resonance サービスから使うことができます。そのため、まずは Bluemix にログインして、なんらかのランタイムにバインドする形で同サービスを追加する必要があります。ちなみにこのサービスは2015年4月19日時点ではベータ版であり、IBM Bluemix 利用者であれば無料で利用することができます:
ランタイムに Message Resonance サービスを追加後に「資格情報」を参照して、このサービスを利用する際のユーザーID(username)とパスワード(password)情報を確認しておきます:
ここまでの事前準備ができていれば、Watson Message Resonance サービスの API を使うことができます。以下は Java を使った場合のサンプルですが、REST API なので Java 以外の言語であっても同様に利用することができます:
try{ String username = "(上記 username の値)"; String password = "(上記 password の値)"; String word = "Bluemix"; // 流行性を調べたい単語 byte[] b64data = Base64.encodeBase64( username + ":" + password.getBytes() ); //. dataset 対象業界で、1はクラウドコンピューティング、2 はビッグデータ GetMethod get = new GetMethod( "https://gateway.watsonplatform.net/message-resonance-beta/api/v1/ringscore?dataset=1&text=" + word ); get.setRequestHeader( "Authorization", "Basic " + new String( b64data ) ); int sc = client.executeMethod( get ); String json = get.getResponseBodyAsString(); //. 結果の JSON 文字列 : : }catch( Exception e ){ e.printStackTrace(); }
上記のように、https://gateway.watsonplatform.net/message-resonance-beta/api/v1/ringscore に対して Get メソッドを実行します。その際の text パラメータに流行性を調べたい単語を指定します。また dataset パラメータは流行性を調べる対象業界で、1はクラウド、2はビッグデータです。シンプルなので Java 以外への応用もさほど難しくないと思っています。
このコードを実行した結果(上記コードの場合は json 変数の値)は以下の様な JSON 文字列になります:
{"dataset":1,"word":"Bluemix","overall":19,"prevalence":10,"volume":4,"duration":5}
この中身を少し解説します。
"dataset":1 は URL で指定した dataset=1 が結果にも含まれて返ってきているだけです。"word":"Bluemix" も同様です。なので実際の実行結果といえるのはこの続き部分になります。
"overall":19 は流行度合いの総合的な結果であり、以下の3つの結果の合計値になっています。
"prevalence":10 は、その単語の今現在の流行度合いを示しています。この場合ではその値が 10 ということになります。
"volume":4 はその単語がこれまでにどの程度の量/回数で使われているか、という指標です。多く使われていれば今流行している、といえるわけではありませんが、過去も含めてどれだけ多く使われていたか、という指標になる数字です。この場合ではその値は 4 という評価です。
最後の "duration":5 はどの程度の期間使われているか、という指標になります。当然長い期間使われ続けている単語であればずっと流行しているともいえますが、短い期間で爆発的に流行したものかどうかを調べることもできます。この単語の場合はその値が 5 という評価です。
つまりこの "Bluemix" という単語の場合は現在の流行度 10、データ量 5、流行期間 4 で、総合結果は19という結果になった、という意味です。
この API は単語ごとにしか問い合わせができませんが、複数の語について調べるには文章を単語に分解して、その結果の各単語ごとにこの API を実行すればよいことになります。なお、残念ながらこの API は 2015 年4月19日現在ではまだ英語の単語に対してのみ利用可能です。
なお、Message Resonance API のリファレンスはこちらを参照ください:
Message Resonance Reference