Bluemix Watson Relationship Extractionサービスをローカルから利用する
この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。
前回の予告通り、再びコグニティブサービスにもどりましょう。
今までのQuestion And Answerサービスとは別にRerationship Extractionサービスを取り上げます。
Rerationship Extractionサービスでは文章を分析し、単語の関連を抜き出します。例えば"2000"が数字なのか年なのか距離なのか、単語だけでは分からない関連を見出すのです。なお、その種類ですがEntity TypesとRelation Typesなどに紹介されており、細かい分類が可能なようです。
Question And Answerサービスと同様にRerationship ExtractionサービスもIBM Watson Developer Cloudのサイトから
デモアプリの起動とコードのダウンロードが可能ですが、今回は別のサンプルアプリをご紹介します。
IBM Watson Developer CloudのメニューにApp Galleryとありますが、ここに先日ご紹介したYour Celebrity Matchと並んでPeople in the Newsがあります。こちらもRelationship Extractionサービスを用いたアプリです。
これはNewsサイトのRSSフィードから最近話題となっているものを抽出し、視覚効果付きで表示します。ここだとデモアプリへのリンクとコードリポジトリへのリンクしかありませんが、実はBluemixのデモアプリとして公開されているもののほとんどがIBM developerWorksの記事として紹介されているものです。そしてこのアプリの詳細もこの記事から知ることが可能です。
このアプリはRelationship Extractionサービスの他にCloudant NoSQL DBと、Raveと呼ばれる解析可視化エンジンを用います。また、コードリポジトリにIBM DevOps Servicesを用いており、コードの参照や、ローカルでアプリを実行するなど編集が必要な場合もIBM DevOps Servicesの利用が必要です。
なおIBM DevOps Servicesに公開されているリポジトリにはGit URLを付与しているものもありますので、その場合はgitでの管理が可能です。今回はコードアーカイブをダウンロードし、ローカル環境で実行してみましょう。
まずはアプリに用いるサービスを事前に作成しておきます。
次にRaveのWeb Compressedをdownloadしておきます。
PeopleInTheNewsのコードリポジトリから"EDIT CODE"を選択し、Web IDEのツリーからコードアーカイブをエクスポート、ローカルに展開します。
peopleInNews/public/scripts/rave配下にRave Web Compressedを展開します。
package.jsonのcloudantモジュールのバージョン指定をnpmの最新に変更してからnpm installを実行します。
次にconfig.jsonに利用する2サービスの認証情報を記載しますが、サービスは作成しただけでは認証情報は定義されないため、既存のアプリケーションもしくは新規に作成してバインドしてください。アプリケーションを起動する必要はありません。
ここで node app.js を実行して localhost:3000 にPeople In The Newsアプリケーションが起動します。
私の場合は app.js に記載されているfeedを日本のニュースを英語配信しているものに変えたので、デモアプリと出力が変わっております。
"Shinzo Abe"の名も見えますが、"DeNA"や"Super Mario"なども見えます。これは"DeNA"という単語が名称を表すことを文脈で解析していると推測出来ますし、"Super Mario"については単純に訳すと"Super"だけが一単語と認識されそうですが、"Super Mario"で一名称であるということを認識していることが分かります。
実際のRelationship Extractionサービスのアウトプットは、ここにあるように非常に多岐に渡る要素があるようです。目的に合わせたインプットから特定の要素で分析することで、またその中間アウトプットをさらに別の軸から分析することで有益なアウトプットを出せる可能性がありそうです。そしてその仕組みをサービスとして利用できるところがコグニティブサービスの素晴らしいところかもしれません。