LoginSignup
11
5

More than 5 years have passed since last update.

teratailの可哀想な質問にBluemixで想定回答してみる試み1

Last updated at Posted at 2016-12-20

この記事はteratail:miyamiyaの IBM Blumix Adventカレンダーの17日目の記事です。

bluemixを使って、teratailの質問に最適な回答が提案できるかやってみたいと思います。
サーバとか用意してられないし、ローカル環境も用意してられないので、
全部 bluemix だけでやってみたいと思います。

作りながらnode-redでサービスをプチプチ繋ぎながら書いているので、
作りたいものがブレブレですが、参考程度にどうぞ。

(本当は)想定は以下です。

  1. 答えられるか判断する(クラス分類系API)
  2. 質問を理解する(Research)
  3. 情報の検索(Retrive)
  4. 最適な質問を回答する(Ranker)

が、試み1回目は、bluemixで何ができるかなので、かなーり湾曲省略して、以下で試したいと思います。
(watsonの本領が発揮できてないが気にしない)

  1. teratailAPIから質問を取ってくる
  2. 英語に変換
  3. stackOverflowにAPIで質問をぶん投げる
  4. それっぽい結果を日本語に翻訳
  5. 結果を表示する。

構成

  • node-red
    • 環境構築がいらないすごいやつ。
    • YahooPipesに似ているけど、それ以上のサービス連携を持っている。
  • bluemixの各サービス
    • Watsonが強力

基本的な使い方を知る

  1. bluemixのアカウントを作る。
  2. ボイラーテンプレートからred-nodeを押す
  3. カタログから面白そうなサービスを探してくる
  4. 作成を押した後に、接続でred-nodeを選択すると、node-redで使えるようになってる
  5. node-redでノードをポチポチ繋げていく
  6. 右上のデプロイを押すと更新される
  7. ノードの一番左端を押すと実行される。(これに気づくのに時間がかかった)

node-redのfunctionの使い方を知る

基本的にmsg.payloadが入ったmsgで受け取って、returnでmsgを返せばノードがつながりました。
teratailのAPIで質問を取る場合は以下にこうする。

var id =  msg.payload.questions[0].id;
msg.url = "https://teratail.com/api/v1/questions/" + id;
return msg;

繋げ方は、teratailの動画が参考になった。
https://www.youtube.com/watch?v=Kwec1HVxqGY

ここまで出来た結果をみてみる。

スクリーンショット 2016-12-21 2.48.37.png
スクリーンショット 2016-12-21 2.48.49.png

teratailから取ってきた質問が取得できて、タイトルが英語に翻訳されていますね。
あとは、stackoverflowがAPIを提供しているので投げれば回答が幾つか見つかりそうです。

stackoverflowのAPI
https://api.stackexchange.com/2.2/search/advanced?order=desc&sort=activity&q=convert%20json%20to%20csv&tagged=ruby&site=stackoverflow

ここまで作ったところで、疑問が出てきました。
質問している人はどれくらい困っているんだろうか?
いまにも泣きそうな人がいるのではないか?

回答そっちのけで興味が出てきたので、作戦変更です。
カタログにwatson-tone-analyzer-v3というズバリ感情がわかるAPIが用意されていました。

タイトルだけだと悲しみに暮れているのかわからないので、質問内容をとってきて、感情APIに繋いでみます。

スクリーンショット 2016-12-21 3.24.14.png
スクリーンショット 2016-12-21 3.25.22.png

返ってきたmsg.responseの中に、Sadness(悲しみ)とそのscoreが含まれていますね。
この値でソートして、優先的に回答すれば効率良く助けることが出来るはずです。

お粗末さまでした。

これからの参考

R&Rを使う

ノードに対応しているみたいだけれども、初期設定のやり方がわからず調べ中です。

カタログ
https://console.ng.bluemix.net/catalog/services/retrieve-and-rank/?taxonomyNavigation=services

参考RRのチュートリアル
皆ここを参照しているらしい
http://www.ibm.com/watson/developercloud/doc/retrieve-rank/tutorial.shtml

・コンフィグ サンプル
http://www.ibm.com/smarterplanet/us/en/ibmwatson/developercloud/doc/retrieve-rank/resources/cranfield_solr_config.zip

参考

タグの質問を取得するAPI
https://teratail.com/api/v1/tags/ruby/questions

teratailのリミット制限をノードを前に付けて回避する方法

msg.headers = { "Authorization": "Bearer aXXXXXXXXXXXXXXXXXXXXXXXX"};
return msg;

qiitaから引っ張ってくるのも面白そう
http://qiita.com/api/v2/items?page=1&per_page=20&query=ruby+sort

11
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
5