目次


Watson Discovery を利用してニュースを探索し、さまざまな洞察を引き出す

IBM Watson Developer Cloud は、アプリ内でコグニティブ・コンピューティング機能を有効にするために利用できるさまざまなコグニティブ・サービスのプラットフォームです。コグニティブ・コンピューティング・システムは学習を通じて、また人間との自然な対話を通じて、データから洞察を引き出す人間の能力を補い、より有効な意思決定を行えるようにします。Watson Developer Cloud では、自然な対話および学習の次の側面を扱う、さまざまなサービスを用意しています。

  • テキスト (Natural Language Understanding、Natural Language Classifier、Conversation)
  • 画像 (Visual Recognition)
  • 音声 (Speech to Text and Text to Speech)
  • パーソナリティー (Personality Insights)
  • 感情または社会的トーン (Tone Analyzer)

このチュートリアルでは各種の Watson サービスのうち、Watson Discovery サービスに注目します。その名前が示唆するように、Watson Discovery は大量のデータから洞察を引き出せるようサポートするサービスです。Discovery は、データから洞察を引き出す多種多様な使用事例に加え、多数のドキュメントからなるコーパスを使用してクエリーに対する最も関連性の高い回答を見つけることを目的とする質問/回答の使用事例にも利用できます。

Discovery を使用すると、ユーザー独自のエンタープライズ・データをアップロードして、そのデータを Discovery のデータ・エンリッチメント機能によって理解し、洞察を引き出せるようになっています。さらに、Discovery には、コグニティブな洞察を活用して事前にエンリッチ化された公開データ・セットである Watson News データ・セットもプリインストールされています。この Watson Discovery News データ・セットは主に英語のニュース・ソースからなり、毎日約 300,000 件の記事とブログを追加して常に更新されます。Discovery News を利用することで、洞察を見つけるためのクエリーを実行し、検出された洞察を直接アプリケーションに統合できます。このチュートリアルでは、Bluemix 上で Discovery インスタンスをセットアップする方法、そして Watson News コレクションに対して一般的なクエリーを実行する方法を説明します。他にも興味のあるクエリーがある場合は、遠慮なくチュートリアルにコメントを残してください。ご要望に応じたクエリーを追加して、このチュートリアルを更新したいと思います。

前提条件

手順を開始する前に、Bluemix アカウントが必要です。アカウントがなければ、Watson Developer Cloud サービスをプロビジョニングすることはできません。IBM の Platform as a Service (PaaS) ソリューションである Bluemix では、アプリケーションをホストできるだけでなく、Watson、モバイル、アナリティクスなどのサービスをプロビジョニングすることもできます。

注: Bluemix 上でアプリケーションを作成する方法をすでにご存知の場合は、遠慮なくこのセクションをスキップしてもらって構いません。そうでない場合は、以下の手順に従って Bluemix 上で単純な Hello World アプリを作成してください。

  1. IBM Bluemix アカウントを登録します。Bluemix は無料で利用できます。
  2. アカウントに登録すると提供される資格情報を使用して Bluemix にログインします。
  3. 「Create App (アプリケーションの作成)」をクリックします。
  4. 左側のナビゲーション列内で、「Cloud Foundry Apps (Cloud Foundry アプリケーション)」を選択し、「SDK for Node.js」を選択します。Bluemix には Java ランタイム、Swift、PHP、Ruby などの一連のランタイムが揃っていますが、このチュートリアルでは Node.js を使用します。 Bluemix ランタイム
    Bluemix ランタイム
  5. 「App name (アプリケーション名)」にアプリの一意の名前を入力してから「Create (作成)」をクリックします。 アプリを作成する画面のスクリーンショット
    アプリを作成する画面のスクリーンショット

この時点で、単純な Hello World Node.js アプリが作成されて、Bluemix アカウント上でホストされた状態になります。実行中のアプリを表示するには、ブラウザーで http://appname.mybluemix.net を表示します。ここで、appname はアプリに付けた名前です。サンプル・アプリでは、discovery-lab をアプリ名として使用しているので、ブラウザーで http://discovery-lab.mybluemix.net を表示すると、Hello World メッセージが表示されます。

単純な Hello World アプリのスクリーンショット
単純な Hello World アプリのスクリーンショット

Watson Discovery サービス・インスタンスを作成する

このセクションでは、Watson Discovery サービス・インスタンスを作成する方法を説明します。以下の手順に従って、インスタンスを作成してください。

  1. Bluemix 資格情報を使用して Bluemix にログインします。
  2. 「Catalog (カタログ)」をクリックし、左側のナビゲーション・パネルにある「Watson」をクリックします。カタログに、使用可能な Watson サービスが表示されます。「Discovery」をクリックします。 Bluemix 上の Watson サービスにナビゲートする画面のスクリーンショット
    Bluemix 上の Watson サービスにナビゲートする画面のスクリーンショット
  3. 一意のサービス名を入力し (または、デフォルトのサービス名を使用します)、「Free (無料)」プランを選択します (このプランでは、無料で 1000 回までニュースのクエリーが許可されます)。「Create (作成)」をクリックします。 Discovery サービスをプロビジョニングする画面のスクリーンショット
    Discovery サービスをプロビジョニングする画面のスクリーンショット

    これにより、Discovery サービスの新しいインスタンスが作成され、サービス資格情報が提供されます。資格情報にアクセスするには、「Service Credentials (サービス資格情報)」をクリックします。

  4. 「Service Credentials (サービス資格情報)」タブをクリックし、「View Credentials (資格情報の表示)」ドロップダウンを展開します。資格情報 (ユーザー名とパスワード) をコピーして保存しておいてください。アプリケーションに Discovery サービスを統合する際に、この資格情報が必要になります。
  5. 「Manage (管理)」タブをクリックし、「Launch tool (ツールを起動)」をクリックします。これによって起動する対話式ツール・インターフェースで、Watson News コレクションを含め、Discovery サービスと対話することができます。 Discovery サービスが表示された画面のスクリーンショット
    Discovery サービスが表示された画面のスクリーンショット

    前述のとおり、Discovery サービスではユーザー独自のデータを使用するコレクションを作成することができますが、エンリッチ化されたニュース・コンテンツもプリインストールされて Watson News コレクション内に格納されています。

  6. 「Watson News」をクリックします。 Discovery サービスのコレクション・ビューのスクリーンショット
    Discovery サービスのコレクション・ビューのスクリーンショット

    Watson News の詳細を説明するページが表示されます (毎日 300,000 件の新しい記事が追加され、過去 60 日のニュース履歴を検索できます)。このページで、API 呼び出しを行うために必要な情報 (environment_idconfiguration_id、および collection_id) も取得できます。後のステップで environment_idcollection_id の値が必要になるので、記録しておいてください。

    Watson News に関する情報ページのスクリーショット
    Watson News に関する情報ページのスクリーショット
  7. 「Query this collection (このコレクションのクエリーを実行する)」をクリックします。「My data insights (マイ・データの洞察)」ページが開始され、事前に生成された有用なクエリーがいくつか表示されます。例えば、出現回数の多いキーワードまたはエンティティーを返すクエリーや、一般的な感情、関連する概念、コンテンツ階層などを返すクエリーです。ここで少々時間を割いて、クエリーの結果を調べ、さまざまなキーワードとエンティティーを基準にフィルタリングしてみてください。 Watson News の「My data insights (マイ・データの洞察)」ページのスクリーショット
    Watson News の「My data insights (マイ・データの洞察)」ページのスクリーショット

次は、カスタム・クエリーを作成する方法を説明します。「Build your own query (独自のクエリーを作成する)」をクリックし、ツール・クエリー・インターフェースを表示します。このインターフェースを使用して、独自のクエリーを作成できます。私がいつも勧めている方法は、まずは 1 つのドキュメントを返す極めて単純なクエリーを作成することです。この方法は、ドキュメントのスキーマを理解するのにも、どのような類の結果が返されるのかを理解するのにも役立ちます。このような単純なクエリーを作成するには、「Number of results to return (取得する結果の数)」フィールドに 1 と入力して、「Run query (クエリーを実行)」をクリックします。

Watson Discovery (News コレクション) のクエリー・ページのスクリーンショット
Watson Discovery (News コレクション) のクエリー・ページのスクリーンショット

Watson News コレクションから返された結果を調べます。返されたフィールドのそれぞれを使用して、結果のクエリー、フィルタリング、または集約を行うことができます。例えば、「enrichedTitle」フィールドとそのエンリッチメント内容のすべてに注目してください。この「enrichedTitle」フィールドを使用して、記事のタイトル内で具体的に識別されているキーワード、エンティティー、概念を検索できます。また、「entities」、「keywords」、「concepts」、および「taxonomy」フィールドにも注目してください。これらはすべて、洞察を得るためのクエリーを実行する際に使用できるエンリッチメント内容です。

参考として、「Query URL (クエリー URL)」(上記の図では赤の枠で強調表示されています) にはクエリーを実行する際の正確な API 呼び出しが示されるので、これを使用すれば同じクエリー結果を取得できます。この単純なクエリーの API 呼び出しは次のとおりです: https://gateway.watsonplatform.net/discovery/api/v1/environments/${environment_id}/collections/${collection_id}/query?version=2016-11-07&query=&count=1&offset=&aggregation=&filter=&return=#

次に、キーワード IBM が含まれるすべての記事を検索するクエリーを実行します。それには、「Narrow your query results (Filter) (クエリー結果を絞り込む (フィルター))」フィールドに keywords.text:IBM と入力してから「Run query (クエリーを実行)」をクリックします。

キーワード IBM が含まれるすべての記事を検索するクエリーを指定する画面のスクリーンショット
キーワード IBM が含まれるすべての記事を検索するクエリーを指定する画面のスクリーンショット

別の興味深いクエリーとして、タイトルにキーワード IBM が含まれるすべての記事を検索し、それらの記事で最もよく使われている上位のキーワードを見つけます。このクエリーは、IBM 関連のニュース内で取り上げられているメイン・トピックを迅速に把握するのに役立ちます。また、特定の日付範囲を指定してクエリーを実行することもできます。以下に示すクエリーは、過去 7 日間を範囲として、タイトルにキーワード IBM が含まれているすべての記事の上位キーワードを返します。

タイトルにキーワード IBM が含まれているすべての記事の上位キーワードを返すクエリーを指定する画面のスクリーンショット
タイトルにキーワード IBM が含まれているすべての記事の上位キーワードを返すクエリーを指定する画面のスクリーンショット

Watson Discovery サービスでのサンプル Watson News クエリー

他のサンプルも確認できるよう、以下の URL に、有意義なクエリーの参考用にサンプルを示しています。${environment_id} および ${collection_id} は、必ず「Watson Discovery サービス・インスタンスを作成する」のステップ 6 でコピーした値で置き換えてください。また、Watson Discovery サービス・インスタンスの資格情報 (ユーザー名とパスワード) を入力する必要もあります。

  • 特定のエンティティーがタイトルに示されているすべての記事を検索する場合:
    https://gateway.watsonplatform.net/discovery/api/v1/environments/${environment_id}/collections/${collection_id}/query?version=2016-11-07&query=&count=&offset=&aggregation=&filter=enrichedTitle.entities.text%3AIBM&return=
  • 特定の日付範囲内で、特定のエンティティーが本文に示されているすべての記事を検索する場合:
    https://gateway.watsonplatform.net/discovery/api/v1/environments/${environment_id}/collections/${collection_id}/query?version=2016-11-07&query=&count=&offset=&aggregation=&filter=yyyymmdd%3C20170326%2Cyyyymmdd%3E20170319%2CenrichedTitle.entities.text%3AIBM&return=
  • 特定のアクション (例えば、IBM による買収) が表現されているすべての記事を検索する場合:
    https://gateway.watsonplatform.net/discovery/api/v1/environments/${environment_id}/collections/${collection_id}/query?version=2016-11-07&query=&count=&offset=&aggregation=&filter=enrichedTitle.entities.text%3AIBM%2Crelations.action.text%3Aacquire&return=
  • 特定のエンティティー (例えば、IBM) がタイトルに示されていて、そのタイトルが特定のカテゴリー (例えば、スポーツ) に分類されるすべての記事を検索する場合:
    https://gateway.watsonplatform.net/discovery/api/v1/environments/${environment_id}/collections/${collection_id}/query?version=2016-11-07&query=&count=&offset=&aggregation=&filter=enrichedTitle.entities.text%3AIBM%2CenrichedTitle.taxonomy.label%3Asports&return=
  • 特定の日付範囲内で、指定した期間 (例えば、1 日) を単位として特定のエンティティー (IBM) がニュース記事内で言及された回数を検出する場合:
    https://gateway.watsonplatform.net/discovery/api/v1/environments/${environment_id}/collections/${collection_id}/query?version=2016-11-07&query=&count=&offset=&aggregation=timeslice%28blekko.chrondate%2C1day%29&filter=yyyymmdd%3C20170323%2Cyyyymmdd%3E20170316%2CenrichedTitle.entities.text%3AIBM&return=
  • 特定の日付範囲内で、特定のエンティティー (IBM) に関するすべての記事を検索し、それらの記事のうち、肯定的な感情、否定的な感情、および中立的な感情のそれぞれを表している記事の数を検出する場合:
    https://gateway.watsonplatform.net/discovery/api/v1/environments/${environment_id}/collections/${collection_id}/query?version=2016-11-07&query=&count=&offset=&aggregation=nested%28entities%29.filter%28entities.text%3AIBM%29.term%28entities.sentiment.type%2Ccount%3A3%29&filter=yyyymmdd%3C20170323%2Cyyyymmdd%3E20170316%2CenrichedTitle.entities.text%3AIBM&return=
  • 特定の日付範囲にわたり、特定のエンティティー (IBM) が含まれるすべての記事を検索し、特定の間隔 (例えば、1 日) を単位として記事を集約し、その間隔ごとに肯定的な感情、否定的な感情、および中立的な感情のそれぞれを表している記事の数を検出する場合:
    https://gateway.watsonplatform.net/discovery/api/v1/environments/${environment_id}/collections/${collection_id}/query?version=2016-11-07&query=&count=&offset=&aggregation=timeslice%28blekko.chrondate%2C1day%29.nested%28entities%29.filter%28entities.text%3AIBM%29.term%28entities.sentiment.type%2Ccount%3A3%29&filter=yyyymmdd%3C20170323%2Cyyyymmdd%3E20170316%2CenrichedTitle.entities.text%3AIBM&return=

まとめ

このチュートリアルでは、Watson Discovery サービスと、あらかじめエンリッチ化された毎日 300,000 件の記事が追加される Watson News を利用して、興味のあるさまざまなトピックに関する洞察を発見する方法を説明しました。このチュートリアルで紹介したサンプルが皆さんのお役に立つことを願います。また、他のクエリーをお探しの場合は、遠慮なくお知らせください。さらにクエリーを追加していくつもりです。


ダウンロード可能なリソース


関連トピック

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=ビジネス・アナリティクス
ArticleID=1046321
ArticleTitle=Watson Discovery を利用してニュースを探索し、さまざまな洞察を引き出す
publish-date=05252017