まだプログラマーですが何か?

プログラマーネタ中心。たまに作成したウェブサービス関連の話も https://twitter.com/dotnsf

タグ:message

このエントリの続きです。ここで紹介した機能を実現する API の使い方を紹介します:


この機能は IBM Bluemix を通じて提供されているコグニティブサービスの1つである Watson Message Resonance サービスから使うことができます。そのため、まずは Bluemix にログインして、なんらかのランタイムにバインドする形で同サービスを追加する必要があります。ちなみにこのサービスは2015年4月19日時点ではベータ版であり、IBM Bluemix 利用者であれば無料で利用することができます:
2015041901


ランタイムに Message Resonance サービスを追加後に「資格情報」を参照して、このサービスを利用する際のユーザーID(username)とパスワード(password)情報を確認しておきます:
2015041902


ここまでの事前準備ができていれば、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

IBM Bluemix から提供されているサービスの1つに、ある単語がネットでどの程度流行しているか?を確認する API があります。今回のブログではこのサービスについて紹介します。

このサービスは Watson Message Resonance サービスです。メールや SNS などで使っている言葉が、特定の志向を持つ相手にどれだけ響くか?その相手にとってどれだけ流行りの言葉であるか?といったことを確認することができます。この API が IBM Bluemix を通じて(REST API プログラミングのできる方であれば)誰でも利用可能な形で提供されています:
2015041601


プログラミングができる方だけでなく、そうでない方でもどんなものか試せるように、IBM からデモアプリも提供されています。ここではこのデモアプリの使い方を紹介します:
Message Resonance


上記リンク先にアクセスすると、以下の様なデモアプリの初期画面が表示されます:
2015041602


単語の流行性を調べる前に、まずその単語を使ってメッセージを届ける相手の特性を指定します。現在提供されているサービスでは、この相手の特性として「Cloud Computing(クラウドコンピューティング系)」か「Big Data and Analytics(ビッグデータ/解析系)」かのいずれかが選択できるようになっています。今は「クラウドコンピュータ業界の人からみた評判」を確認したいので、Select Audience 欄で前者を選択します:
2015041603


相手の特性が決まった所で、実際に確認したいメッセージを入力します。では個人的にも興味のある "IBM Bluemix" という言葉がどれだけの広まりを見せているのかを確認してみましょう。テキストエリアに "IBM Bluemix" と入力します。最後に "Analyze" ボタンをクリック:
2015041604


少し待つと処理が終わり、画面右側にこのような結果が表示されます:
2015041605


右上の Output 結果を見ると、"Resonance" として4つの色分けされた帯が表示され、その1段下の Message 欄に入力した "IBM Bluemix" とい文字が、 Resonance にある色で分けられて表示されています:
2015041606


実はこれが処理結果です。「クラウド系」という指定した前提の中でですが、"IBM" という単語は(同じ色である) 21-30 という評価を得ていて、一方 "Bluemix" は 11-20 という評価を得ている、という結果を意味しています。ちなみに数値が大きいほど評判が高いことを意味しています。なるほど "IBM" はまだまだイケてるのね、そして "Bluemix" はも少し頑張らないと・・・


この Message Resonance は IBM のコグニティブ(学習型人工知能)サービスの1つとして提供されており、この結果に対するフィードバックを与えることで更に学習します。結果を正しいと思うか、違っていると思うかを画面右下の Feedback 欄から与えて、より賢くしてあげましょう:
2015041607


対象をクラウドコンピューティング業界ではなく、ビッグデータ/解析業界に変えて調べることもできます。ちなみに "IBM Bluemix" はこんな結果でした。ビッグデータ業界では Bluemix はまだまだみたいです・・・ (^^;:
2015041608


今回はデモアプリを使って Watson Message Resonance サービスを体験してみました。実際にはこの中で使っている API が誰でも使える形で IBM Bluemix を通じて提供されており、実はこのデモアプリの画面で表示されている以上の細かなデータが取得できます。その API の使い方に関しては機会を見つけて今後紹介するつもりです。


(2015年4月19日 追記)
続きはこちら
Watson Message Resonance API で単語の流行性を調べる



このページのトップヘ