InfoSphere BigInsightsを活用して分析するソーシャル・メディアのデータと構造化データ

BigSheetsの機能を簡単に活用する方法

コードやスクリプトを書くことなくビッグデータを活用したいのであればBigSheetの活用を検討すべきでしょう。BigSheetsは、オープンソースのApache Hadoopプロジェクトに基づいて構築されたIBM InfoSphere BigInsightsのプラットフォームに含まれるビジネス・アナリスト向けのスプレッドシート形式のツールです。本記事ではBigSheetsの基本的な使用方法を説明し、BigInsightsに含まれるサンプル・アプリケーションを使って収集したソーシャル・メディアのデータと構造化データを分析する方法を紹介します。BigSheetsを使って行う、データのモデリング、組み込まれたマクロや関数を使ったデータの加工、分析内容を可視化するためのグラフの作成、そして分析結果をさまざまな出力形式でエクスポートする方法を確認いただけます。

Cynthia M. Saracco, Senior Software Engineer, IBM

photo: Cynthia SaraccoCynthia M. Saraccoは、IBMのシリコンバレー研究所でデータベース管理テクノロジーとXMLテクノロジーについて研究しています。3冊の書籍の共著者であり、さまざまなソフトウェア・テクノロジーに関する大学レベルのクラスを担当した経験があります。


developerWorks マスター著者レベル

Anshul Dawra, Senior Software Engineer, IBM China

Anshul DawraAnshul Dawraは、カリフォルニア州サンノゼにあるIBMのシリコンバレー研究所でInformation ManagementグループのSenior Software Engineerを務めています。pureQueryとExtended Insightのチームにおいて、システム・アーキテクトとして業務を行っています。pureQueryのチームに参加する前には、IBM Data Server Driver for JDBC and SQLJの設計と開発を行いました。



2012年 8月 02日

はじめに

ビッグデータとビッグデータがビジネスの分析に及ぼす影響については、もうご存知でしょう。とはいえ、既に保有している既存のデータに加えて、Webサイト、電子センサー、ソフトウェアのログから得られるビッグデータを収集、処理、管理することで、どのような知見が得られるのかよく分からないという印象をお持ちかもしれません。確かに、お客様のビッグデータ・プロジェクトを巡るさまざまな課題を解決するうえで役立つオープンソースやサードパーティーのプロジェクトは沢山あります。しかしながら、そのほとんどは特定のスキルを持つプログラマー、管理者、技術者向けのものだというのが現状です。

ビッグデータをビジネス・アナリスト、業務部門のマネージャー、そしてプログラマーではないスタッフに提供したい場合はどうすればいいでしょうか? BigSheetsこそ、まさにそのような皆様のお役に立つツールです。BigSheetsとはInfoSphere BigInsightsに含まれるスプレッドシート形式のツールであり、プログラマーではないスタッフが使っている分散ファイル・システムに保存したデータを繰り返し探索、加工、視覚化することを可能にするものです。BigInsightsに含まれるサンプル・アプリケーションを使うことで、さまざまなソースからデータを収集したりインポートすることができます。この記事では、BigSheetsに加え、BigSheetsの機能を補完する2つのサンプル・アプリケーションについて紹介します。


背景情報

BigInsightsは、企業が大量かつ多種類のデータに潜むビジネス上の知見を、これらのデータから導き出し、分析を行うにあたり役立つソフトウェア・プラットフォームです。ビッグデータを特徴付けるこのようなデータは通常の手段では処理することが困難で実効性がないため、これまで無視されていたり、手つかずのまま廃棄されていました。

企業がこのようなデータを有効活用するために、BigInsightsのEnterprise EditionにはApache Hadoopをはじめとする複数のオープンソース・プロジェクトとBigSheetsをはじめとするIBMが開発した複数のテクノロジーが搭載されています。Hadoopとその関連プロジェクトは大量データを処理するアプリケーションに対して効果的なソフトウェア基盤を提供し、分散コンピューティング環境に基づく高い拡張性を提供します。

IBMのテクノロジーにより、このオープンソース基盤に分析ソフトウェア、全社的なソフトウェア統合、プラットフォームの強化機能、各種ツールが提供されています。BigInsightsに関するより詳細な情報については、参考文献をご参照ください。BigSheetsはブラウザー・ベースの分析ツールであり、もともとはIBMのEmerging Technologiesグループによって開発されたものです。現在BigSheetsはBigInsightsに同梱されており、ビジネスユーザーとプログラマー以外のスタッフ向けに、分散ファイル・システムのデータの探索と分析用として提供されています。BigSheetsはスプレッドシートに似たインターフェースを提供するため、ユーザーはさまざまなソースから収集したデータのモデリング、フィルタリング、組み合わせ、探索を行い、結果をグラフで表示することができます。BigInsightsのWebコンソールには、画面の一番上にBigSheetsへのアクセス用のタブが準備されています。本Webコンソールに関する詳細情報については、参考文献をご参照ください。

図1はBigSheetsに含まれるサンプルのデータ・コレクションを示しています。一見したところ、典型的なスプレッドシートのように見えるものの、このコレクションにはブログや公開されたWebサイトへの投稿などのデータが含まれています。アナリストはこのコレクションに含まれるリンクをクリックすることで、ソース・コンテンツを提供したサイトにアクセスすることができます。

図1. ソーシャル・メディアのデータに関するBigSheetsのサンプル・コレクション(ソース・コンテンツへのリンクを含む)
Image shows spreadsheet with columns for language, post size, post title, and date published

BigSheetsのコレクションを設定すると、アナリストは必要に応じて本データのフィルタリングと加工を行うことができます。バックグラウンドでは、BigSheetsはグラフィカル・インターフェース経由で入力されるユーザー・コマンドをPigスクリプトに変換し、基本となるデータの一部に対してPigスクリプトを実行します。このようにして、アナリストは効果的にさまざまなデータ加工を繰り返し実行することができます。必要な結果が得られた時点で、ユーザーはコレクションを保存のうえ処理し、その後BigSheetsが全データに対してMapReduceジョブを開始し、結果を分散ファイル・システムに書き込み、新規に構築されたコレクションのコンテンツを表示します。アナリストは、必要に応じて全てのデータの参照と加工を行うことができます。

BigSheetsの機能を補完するために、ビジネスユーザーがBigInsightsのWebコンソールから起動でき、すぐに利用可能な一連のサンプル・アプリケーションが準備されており、Webサイト、リレーショナル・データベース管理システム、リモート・ファイル・システム、その他のソースからデータを収集するために使用できます。この記事では、そのうち2つのアプリケーションについて説明します。一方で、プログラマーや管理者は今回ご案内しないその他のBigInsightsテクノロジーを使って、BigSheetsでさらに分析を進めるためにデータの収集、処理、準備を行うこともできます。そのようなテクノロジーには、Jaql、Flume、Pig、Hive、MapReduceアプリケーションなどが含まれます。

IBM Watson

IBM Watsonとは、自然言語による質問に答えるために複雑な分析を行う研究プロジェクトのことを指しています。Watsonで使われているソフトウェアはさまざまなソースから収集されたデータを参照し、Hadoopを使用して、IBM Power 750サーバーのクラスター上で本データを処理します。IBM Watsonは2011年に行われたテレビのクイズ番組で優勝し、2人の競争相手(人間)に勝利しました。IBM Watsonとクイズ番組「Jeopardy!」に関する詳細情報については、参考文献をご参照ください。

本機能を使用する前に、サンプル・アプリケーションを使用する目的を確認しましょう。IBM Watsonに関するソーシャル・メディアのデータを分析し、最終的にはそのデータをリレーショナル・データベースから抽出した広報宣伝活動に関するIBMの社内データ(シミュレーション・データ)と組み合わせます。この処理を行う目的は、多くの企業で必要とされ、注目を浴びているブランド、サービス、またはプロジェクトに関する注目度とカバレッジ状況を確認することです。ここでの目的はBigSheetsの主な機能をご案内し、アナリストがビッグデータの活用を行うきっかけを提供することにあるため、本アプリケーションで実現可能なアナリティクス機能の全てを説明することはいたしません。しかし、本記事を通じて、BigSheetsを活用することで、最低限の労力で、どのような可能性が開かれるかを確認いただきます。また、なぜIBM Watsonが注目を浴びているかということについても、新しい発見があるかもしれません。


ステップ1:データの収集

BigSheetsを起動する前に、分析の対象となるデータが必要です。まずは、ソーシャル・メディアのデータの収集を行います。

ソーシャル・メディアのデータを収集する

ご想像どおり、さまざまなソーシャル・メディアのサイトから抽出したデータの収集と処理は非常に困難な作業となり得ます。というのも、サイトごとに異なる情報をキャプチャーすることになり、またそれぞれのサイトが異なるデータ構造を持つからです。さらに、膨大な数のサイトを特定し、クローリングを行うには、時間がかかることがあります。

ここでは、BigInsightsに含まれるBoardReaderという名称のサンプル・アプリケーションを使用して、ブログ、ニュース・フィード、掲示板、ビデオ・サイトの検索を行います。図2では、BigInsightsのBoardReaderアプリケーションで提供される入力パラメーターについて説明しています。本アプリケーションは、BigInsightsのWebコンソールの「Applications」ページから導入したものです。本Webコンソールと一覧のサンプル・アプリケーションの詳細については、参考文献をご参照ください。

図2. BigInsightsのWebコンソールからBoardReaderアプリケーションを呼び出す
Image shows screen cap of BoardReader application

図2で示される入力パラメーターを簡単に確認してみましょう。「Results path」パラメーターは、アプリケーションによる出力データが提供されるHadoopベースの分散ファイル・システム(HDFS)のディレクトリーを示しています。その下のパラメーターを見ると、マッチした検索結果の件数が最大25,000件に設定され、検索対象期間は2011年1月1日から2012年3月31日までとなっていることが分かります。「Properties File」パラメーターは、BoardReaderのライセンス・キーで生成したBigInsightsの認証情報のストアを指します。(有効なライセンス・キーを取得するには、お客様はBoardReaderのサイトにアクセスする必要があります。)検索の対象となるのは、「IBM Watson」です。

本アプリケーションを起動すると、図3の一番下に示されるとおり、分散ファイル・システムの出力ディレクトリーに4種類の新規ファイルが保存されます。

図3. BigInsightsに保存されるアプリケーションの出力結果
Explorer view of HDFS directory

なるべく説明をシンプルにするため、本記事ではニュース・データとブログ・データのみを使用します。本サンプル・アプリケーションの活用シナリオを再現したい場合は、指定したパラメーターに基づいてBoardReaderアプリケーションを実行するか、サンプル・データをダウンロードしてください。尚、ダウンロード・モジュールにはBoardReaderがブログやニュース・フィードから収集する情報の一部しか含まれていないことにご注意ください。特に、サンプル・ファイルからは書き込み、ニュース記事、および特定のメタデータに関するフルテキスト・コンテンツやHTMLコンテンツは削除していることにご留意ください。というのも、このようなデータは本記事で説明する分析タスクには不要であり、各ファイルのサイズを管理しやすいサイズにしたいと考えたからです。

BoardReaderアプリケーションが作成するファイルは、JSON形式で提供されます。本データの一部をBigInsightsのWebコンソールの「Files」ページで表示することはできますが、このデータは非常に読みにくいものです。そこで、このデータをずっと読みやすい「シート」(BigShseetsのデータ・コレクションのことを指します)に変換する方法についてこれからご案内します。ただし、ニュースとブログのデータセットを結合するコレクションのモデリングを行う必要があるため、各ファイルには多少異なるJSON構造が含まれることに留意しておく必要があります。ビッグデータ・プロジェクトでは、データ構造を何らかの方法で加工または変換することによって、その後の分析を簡素化することが必要になるケースが度々発生します。

リレーショナル・データベースからデータを収集する

本ソーシャル・メディアのデータの検証を行った後、本データをリレーショナル・データベースから抽出したデータと結合します。多くのビッグデータ・プロジェクトでは、ソーシャル・メディアのデータのようなこれまでにないデータソースを既存の全社情報(リレーショナル・データベースに保存されたデータを含む)のコンテキストに基づいて分析することが必要になります。BigInsightsは、Netezza、DB2、Informix、Oracle、Teradataなどをはじめとするさまざまなリレーショナル・データベースやデータウェアハウスへの接続を可能にします。

今回のサンプル・シナリオでは、IBMの広報宣伝活動に関するシミュレーション・データを使ってDB2テーブルを作成しました。本リレーショナル・データをソーシャル・メディアのサイトから抽出した情報と結合することで、さまざまな広報活動の効果とカバレッジの状況を確認することができます。BigInsightsではコマンドライン・インターフェースに基づいてリレーショナル・データベースへの動的なクエリー・アクセスを実現するため、BigInsightsのWebコンソールのデータ・インポートを行うためのサンプル・アプリケーションを使用して、対象となるデータを抽出しました。

図4は、本アプリケーションのためにIBMが提供した入力パラメーターを示しています。BigInsightsの認証情報のストアに含まれるmykeysのプロパティー・ファイルには、JDBCのURLアドレス(「jdbc:db2://myserver.ibm.com:50000/sample」など)、JDBCドライバー・クラス(「com.ibm.db2.jcc.DB2Driver」など)とDBMSのユーザーIDとパスワードをはじめとする、データベースと接続うるために必要なJDBC入力パラメーターが含まれます。その他の入力パラメーターには、対象となるデータベースから必要なデータを抽出するためのSQLベースの簡単なSELECT文、出力形式(CSVによるカンマで区切った値のファイル形式)、そして結果を提供するBigInsightsの出力ディレクトリーが含まれます。

図4. BigInsightsのWebコンソールからデータ・インポート用のアプリケーションを呼び出す
Screen cap shows DBMS import application

本アプリケーションを実行する前に、適切なDBMSのドライバー・ファイルをBigInsightsの分散ファイル・システムのディレクトリー(/biginsights/oozie/sharedLibraries/dbDrivers)にアップロードしたことにご注意ください。今回のソース・データベースはDB2 Express-Cであるため、本エディションのファイル(「db2jcc4.jar」および「db2jcc_license_cu.jar」)をアップロードしました。

本サンプル・アプリケーションの活用シナリオに基づいてDBMSを使用した作業を行うためには、無償のDB2 Express-C(参考文献のリンクを参照)を取得し、サンプル・テーブルの作成とデータの入力を行い、本記事でご案内している様にBigInsightsのデータ・インポート・アプリケーションを実行します。もしくは、DB2から抽出したCSVファイルをダウンロードし、本ファイルを直接BigInsightsにアップロードします。


ステップ2: BigSheetsのコレクションを作成する

BigSheetsを使用してデータの分析を開始するには、使用している分散ファイル・システムで対象となるファイルのモデリングを行うためにコレクション—スプレッドシート形式のデータ構造— を作成する必要があります。今回の活用シナリオにおいては、これらのファイルには、IBMのBoardReaderアプリケーションが収集したJSONベースのブログ・データ、IBMのBoardReaderアプリケーションが収集したJSONベースのニュース・データ、IBMのデータ・インポート・アプリケーションから抽出したCSVベースのデータが含まれます。

このようなコレクションを作成するために基本的なステップを確認しましょう。

  1. Webコンソールの「Files」ページから、システムのナビゲーション機能を使用して「news-data.txt」ファイルを選択します (図 3を参照)。
  2. 右側のペインで「Sheets」ボタンを選択して表示形式を「Text」から「Sheets」に変更します。図 5で示されるとおり、このボタンは「Viewing Size」の右側にあります。
  3. 使用するファイルにとって適切な読み取り機能またはデータ形式の変換機能を指定します。図 5にあるように、BigSheetsは通常使用されるデータ形式を処理できる標準の読み取り機能を提供します。本サンプル・ファイルについては、JSON Arrayの読み取り機能が適切です。
  4. 新規に作成したコレクションに「Watson_news」という名前を付けて、保存します。
図5. 適切な読み取り機能を使用してコレクションを作成する
Screen cap shows JSON Array selected as the reader

同じプロセスに基づいて、「blogs-data.txt」ファイルを使用して別のコレクションを作成し、本コレクションに「Watson_blogs」という名前を付けます。最後に、DBMSデータのCSVファイルに基づいて3つ目のコレクションを作成する際に、本ファイルの読み取り機能としてBigSheetsのComma-Separated Values (CSV)データを選択します。本コレクションに「Media_Contacts」という名前を付けます。

さらに、単一のファイルではなく、あるディレクトリー内のコンテンツに基づいてコレクションを作成することもできます。そのためには、ファイル・システムのナビゲーション機能を使用して対象となるディレクトリーを指定し、右側のペインのSheetsボタンをクリックして、ディレクトリーに含まれる全てのファイルに適用される適切な読み取り機能を指定します。しかしながら、本記事で説明するアプリケーションの活用シナリオでは、上記で説明したとおり3種類のコレクションが必要です。


ステップ3: コレクションに変更を加える

アナリストがデータそのもののさまざまな要素を検証する前に、コレクションの形式、コンテンツ、および構造に変更を加えたいと考えることがよくあります。BigSheetsは、このようなデータの準備を行うために必要な複数のマクロと関数を提供します。本セクションでは、列の削除によって不必要なデータを排除する方法と結合処理によって2つのコレクションのデータを統合する方法の2つについて説明します。

列を削除する

BigInsightsのBoardReaderアプリケーションは、BigSheetsの各コレクションのさまざまな列を生成するニュース・データやブログ・データを提供します。これらの列のうちこの記事で説明する分析作業に必要なのは一部のみであるため、必要な列のみを含むコレクションを新たに作成する必要があります。

  1. BigSheetsのメイン・ページから、「news-data.txt」ファイルから作成した「Watson_news」のコレクションを開きます。
  2. Build New Collectionをクリックします。
  3. 図 6のとおり、「sAdult」列に移動します。列のヘッダーの下向きの矢印をクリックし、列のRemove を選択します。「Country」、「FeedInfo」、「Language」、「Published」、「SubjectHtml」、「Tags」、「Type」、および「Url」以外の本コレクションの全ての列においてこの処理を行います。
  4. 新規作成したコレクションに「Watson_news_revised」という名前を付けて保存し、処理を終了します。プロンプトが表示された時点で、本コレクションの起動を行います。なお、「Run」ボタンの右側のステータス・バーを使うと、ジョブの進行状況をモニタリングすることができます。(コレクションを起動すると、バックグラウンドでBigSheetはMapReduceジョブを開始するPigスクリプトを実行します。ご想像のとおり、稼働パフォーマンスはコレクションのデータ容量と利用可能なシステム・リソースによって変動します。)
図6. コレクションから列を削除する
Image shows deleting a column

さらに分析を行えるように最終的にはブログ・データとニュース・データを単一のコレクションに統合したいため、同じプロセスに基づいて「Country」、「FeedInfo」、「Language」、「Published」、「SubjectHtml」、「Tags」、「Type」および「Url」の列のみを含むブログ・データのコレクションを新規に作成します。本コレクションに「Watson_blogs_revised」という名前を付けます。

UNION処理によって2つのコレクションを1つにマージする

次に、新規に作成したコレクション(「Watson_news_revised」および「Watson_blogs_revised」)を単一のコレクションにマージし、IBM Watsonのメディア・カバレッジを検証する基本データを作成します。本処理を行うために、BigSheetsのUNION処理を活用します。全てのシートは同じ構造である必要があります。前セクションの指示に従って処理を行った場合は、マージ対象の2つのコレクションがあり、各コレクションには「Country」、「FeedInfo」、「Language,」、「Published,」、「SubjectHtml、「Tags」、「Type」および「Url」の順でこれらの列が含まれています。

コレクションをマージする方法は以下のとおりです。

  1. 「Watson_news_revised」コレクションを開き、Build New Collectionをクリックします。
  2. Add sheets > Loadとクリックし、別のコレクションのコンテンツを作業モデルに追加します(図 7を参照)。 プロンプトが表示されると、Watson_blogs_revised collectionを選択し、シートに「Blogs」という名前を付け、緑のチェック・マークをクリックのうえ演算処理を実行します。
    図7. コレクションを新規のシートにロードする
    Screen cap shows options for adding a sheet
  3. 新規のシートが含まれる画面を確認します。コレクションの左下には新規のシートのタブが表示されています(図 8を参照。)
    図8. 新規のシートを検証する
    Screen cap shows newly loaded sheet
  4. Add sheets > Unionとクリックすることによって、ブログ・データとニュース・データを結合するためのもう1つのシートを作成します。プロンプトが表示されると、ドロップダウン・メニューをクリックして、今ロードしたばかりのブログ・データと結合する対象のシートとしてWatson_news_revisedを選択します (図 9を参照)。ボックスの右側のプラス・マーク (+)をクリックし、その後一番下の緑のチェック・マークをクリックして結合処理を開始します。
    図9. 結合対象のシートを指定する
    Screen cap shows sheets for union
  5. 「Watson_news_blogs」という名前を付けて、コレクションを保存し、処理を終了します。本コレクションを起動します。

次に、本コレクションに含まれるデータを分析します。


ステップ4: コレクションを分析して、IBM Watsonに関するグローバル規模のメディア・カバレッジを調査する

調査したい項目として、グローバル規模でIBM Watsonに対する関心とメディア・カバレッジがどれだけあるかということが挙げられます。そこで、「Country」列の値に基づいて「Watson_news_blogs」コレクションをソートすればよいと考えるかもしれません。しかし、データを検証すると、多くの行で、本列の値が「Null」になっていることに気付きます。ソーシャル・メディアのサイトやその他のソースから収集したデータの場合、このような状況が度々発生します。必要なデータが欠けているため、アナリストがその他の手段を講じて必要な内容に関する分析を行う必要が発生することはよくあります。

レコードをソートする

ブログ・データとニュース・データのほとんどにはオリジナル言語の入力項目が含まれるため、「Language」と「Type」に基づいてレコードのソートを行い、ニュースとブログの書き込みにおいてIBM Watsonがグローバル規模でどのように取り上げられているかを検証します。

  1. 「Watson_news_blogs」コレクションを開き、Build New Collectionをクリックします。
  2. 「Language」ヘッダーからドロップダウン・メニューを展開し、Sort > Advancedとクリックします。プロンプトが表示されると、「Add Columns to Sort」メニューから「Language」列と「Type」列を選択します。図 10のとおり「Language」のソート順を「Descending(降順)」に変更し、「Language」がプライマリー・ソート列となっていることを確認します。緑色の矢印をクリックして、データのサブセットに対して本演算処理を実行します。
    図10. プライマリー列に設定したうえで、2つの列に基づいてコレクションのソートを行うための準備を行う
    Screen cap shows setting up sort operation
  3. サンプルの50レコードを検証し、さまざまな言語のデータが含まれていることを確認します。
  4. コレクションに「Watson_sorted」という名前を付けたうえで、コレクションを保存し、本ステップを終了します。その後、完全なデータセットに対して本コレクションを起動します。表示結果を検証すると、前のステップよりも特定の言語(ベトナム語など)が指定されたレコードの数が増えていることがわかります。

結果をグラフで表示する

さまざまな言語におけるIBM Watsonのカバレッジを検証するにあたって、コレクションのデータを詳細に確認することができるものの、グローバル規模で評判を最も簡単に可視化する方法としては検索結果をグラフ化することが挙げられます。こうすることでデータをより広範に検証することができ、さらに探索的かつ分析的な作業を行うためのヒントを得ることができます。BigSheetsは棒グラフ、円グラフ、タグ・クラウドなどさまざまなグラフをサポートし、ここでは単純な円グラフを使用します。

  1. 「Watson_sorted」コレクションを開いたままで、Add chart > Chart > Pieとクリックします。(「Add chart」タブは、本コレクションの左下の「Result」タブの近くにあります。)
  2. プロンプトが表示されると、グラフの名前とタイトルに関する値を入力します。「Count」フィールドを標準値に設定したまま、グラフ化したい値として「Language」列を選択します。「Limit」の値を12に設定することによって、本コレクトションで最も頻繁に使用される12の言語を円グラフに含めることができます 図 11を参照)。
    図11. 円グラフを作成するための入力パラメーター
    Screen cap showing chart name, title, value, coult, and limit
  3. プロンプトが表示されると緑色のチェック・マークをクリックし、チャートを作成します。

予想どおり、円グラフを見ると、収集したニュース・データとブログ・データのうち79%は英語で作成されたものでした。それでは、IBM Watsonに関するデータを記載した言語のうち、2番目に使用頻度が高かった言語は何でしょうか?図 12の円グラフを見ると、ロシア語であることが分かります。BigSheetsで表示される円グラフにマウスオーバーすると、該当する値(この場合は、「Language」列の値)を確認することができます。

図12. ニュース・データとブログ・データに基づいて、グローバル・レベルのIBM Watsonに対する関心度を言語別に測定する
Image shows pie chart measuring global interest in IBM Watson

データの値のクレンジングを行う

図12の円グラフで5番目および6番目にデータ数が多い領域(2.6%および1.9%)にマウスオーバーすると、両方とも中国語に関するものであることが分かります。これによって、さまざまなソーシャル・メディアのサイトのような各種データソースからデータを収集する際によく発生する課題が示されています。同一のデータとして取り扱いたいデータの値の表示形式が、データによって多少異なることがよくあります。

BigSheetsを使用してこの値を変更し、中国語に関連するさまざまな値を「Chinese」という単一の値で置き換えてみましょう。

  1. 必要に応じて、「Watson_sorted」コレクションを開き、Editボタン(左上のコレクション名の下にあります。)
  2. 「Language」列に移動し、本列のヘッダーの下向きの矢印をクリックし、ドロップダウン・メニューを展開します。Insert Right > New Columnとクリックすることによって、クレンジング済みのデータを保管する新規の列を作成します。プロンプトが表示されると、新規の列に「LanguageRevised」という名前を付け、緑色のチェック・マークをクリックのうえ処理を実行します。
  3. 「LanguageRevised」列にカーソルを置いて、シートの一番上の「fx (formula specification)」ボックスに以下の手法を入力します。 IF(SEARCH('Chin*', #Language) > 0, 'Chinese', #Language) 詳細については、図 13をご参照ください。
    図13. 列の値を抽出する手法を指定する
    Image shows forumla specification
    本手法によって、BigSheetsは本シートの「Language」列において「Chin」で始まる値の検索を行います。該当する値が見つかると、「LanguageRevised」列に「Chinese」という書き込みが行われます。それ以外の場合は、「Language」列で見つかった値を「LanguageRevised」列にコピーします。BigInsightsのインフォメーション・センター(参考文献にて説明があります) は、BigSheetsでさまざまな手法を規定するための詳細情報を提供します。緑色のチェック・マークをクリックすることによって、本手法を実行します。
  4. 処理内容を保存して、処理を終了します。データの同期が行われていないことを示す警告メッセージが表示される場合、本コレクションの定義をさらに変更のうえ、起動します。
  5. 12種類の「LanguageRevised」列の値で構成される円グラフを作成し、本グラフと以前に作成した円グラフ(「Language」列の生データ)を比較します。なお、新規に作成した円グラフを見ると、中国語が2番目に最も頻繁に使用される言語であり、以下ロシア語、スペイン語、ドイツ語の順に使用頻度が高いことが分かります。

検索結果をフィルタリングし、URLデータを抽出することによって、より詳細な分析を行う

今確認したデータによってさまざまな疑問が生まれ、さらに調査が必要になることがあります。これはビッグデータの分析ではよくあることで、データの探索作業を繰り返し行うことが必要になります。イギリスにおけるメディア・カバレッジを検証するために、英語ベースのニュースとブログの書き込みにおけるIBM Watsonの取り上げられ方をさらに詳しく検証しましょう。

本記事ではできるだけ分かりやすく説明を行う必要があるため、単純なアプローチに基づいて本件に関する調査を行います。具体的には、URLのドメイン名が「uk」で終わる英語ベースのレコードと「Country」列の値が「GB(イギリスを指す)」である英語ベースのレコードが含まれる「Watson_sorted」コレクションから、新規のコレクションを作成します。このため、BigSheetsのFilter演算子とURLの文字列全体からURLのホストデータを抽出するマクロを使用します。

  1. 「Watson_sorted」コレクションを開き、新規のコレクションを作成します。
  2. Filter演算子を使用するシートを追加します。
  3. プロンプトが表示されるとMatch allを選択し、3つのドロップダウン・メニューのボックスにおいて「Language is English」と指定します(図 14を参照)。その後緑色のチェック・マークをクリックして、コレクションのデータの一部に演算処理を実行します。
    図14. 列の値に基づいてフィルタリングを行う
    Image shows filtering on English
  4. 作業内容を保存します(本シートに「Watson_sorted_English_UK」という名前を付ける)。本コレクションはさらに修正する必要があるため、処理は終了しないでください。
  5. マクロを呼び出す別のシートを追加します。プロンプトが表示されると、Categories > url > URLHOSTとクリックします。URLの値が含まれる対象の列として、コレクションの「URL」列を選択します。本マクロはこの列の値を読み取り、より大容量の文字列からURLのホスト情報を抽出します。例えば、以下のURLの値があったとします。
    "http://www.georgeemsden.co.uk/2011/09/how-long-before-your-laptop-finds-a-cure-for-cancer/,"
    この場合、マクロはURLのホスト名として"www.georgeemsden.co.uk"を返します。
  6. 本ペインの一番下にあるCarry Overタブをクリックします。図 15を参照)。この処理は重要です。これによって、既存のコレクションの列のうち保持する必要がある列を指定する(キャリーオーバー)ことができるためです。
    図15. URLHOSTマクロを使用する
    Image shows Carry over selected
  7. Add allをクリックして全ての既存の列を保持し、演算処理を実行します。作業内容を保存しますが、処理は終了しないでください。
  8. データをさらにフィルタリングするために、別のシートを追加します。プロンプトが表示されると、「URLHOST ends with uk」と「Country is GB」の2つの基準のいずれかのマッチングを行います(図 16を参照)。該当データは本コレクションにはそれほど多く存在しないため、この2つの条件のいずれかに基づいてマッチングを行うことによって、イギリス・ベースのURLを持つホスト・サイトの検出を行います。演算処理を実行します。
    図16. 2つの列の値に基づいてデータのフィルタリングを行う
    Filter on two columns
  9. コレクションを保存し、処理を終了します。その後、コレクションを起動します。

URLHOST列に示される検索結果をソートし、グラフを作成することによって、作成したコレクションに含まれるイギリスのサイトのうちIBM Watsonを最も頻繁に取り上げたWebサイトを迅速に見極めることができます。例えば、図 17ではそのようなトップ10のWebサイトを表示するために当社が作成したタグ・クラウドを示しています。あらゆるBigSheetsのタグ・クラウドと同様に、フォントサイズが大きいものは値がより頻繁に検出されたことを示し、値にマウスオーバーすることによってコレクションで値が検出された頻度を表示することができます。

図17. IBM Watsonのメディア・カバレッジが最も大きかったイギリスのWebサイトのトップ10
Tag cloud

ステップ5: ソーシャル・メディアのデータと構造化データを組み合わせることによって、より詳細な分析を行う

BigSheetsの紹介を行う前に、サンプルのデータセットに関する興味深いポイントをいくつか検証してみましょう。

  • IBM Watsonを取り上げた個別サイトの件数とIBM Watsonのカバレッジが大きかったトップ12のWebサイト(グローバル・レベル)。この情報を検索するために、追加のマクロと別の種類のグラフについて説明します。
  • IBMの広報宣伝活動の対象となったサイトにおけるカバレッジのボリューム。この情報を検索するために、リレーショナル・データベースから抽出したデータとBigInsightsのソーシャル・メディアのデータを結合します。(本記事のために、当社ではIBMの広報宣伝活動に関する架空のデータを作成しました。)

最後に、コレクションのコンテンツを頻繁に利用できるデータ形式にエクスポートすることによって、サードパーティーのアプリケーションでデータを簡単に利用する方法について説明します。

カバレッジのボリュームとトップ12のWebサイトを検出する

広報宣伝活動の効果を評価するにあたっては、カバレッジのボリュームを評価する必要がありあす。この例では、BigSheetsによってIBM Watsonを取り上げた個別のニュース・サイトとブログ・サイトの数を検出します。

  1. 「Watson_news_blogs」コレクションを開き、新規のコレクションを作成します。
  2. 「Url Hosts」という名前のシートを追加します。本シートはURLHOSTマクロを使用して、「URL」列で提供される文字列全体からURLのホスト名を抽出します。(必要に応じて、URLHOSTマクロの詳細情報については、ステップ4の記載をご参照ください。)
  3. 作成したばかりのシートにDistinct演算子を適用することによって、別のシートを作成します。
  4. 本コレクションを保存し、処理を終了した後、表示されるプロンプトに基づいて本コレクションを起動します。図 18の右下で示されるとおり、2,800を多少越える個別サイトが存在していることを確認します。「Watson_news_blogs」コレクションを開くと、全体で7,200件以上のレコードが存在することが分かります。
    図18. 個別のホスト・サイトの数を検出する
    Image shows distinct host sites

複数のサイトには複数の書き込みが行われているため、IBM Watsonに関する書き込み数が最も多いトップ12のWebサイトを検出し、結果を円グラフで表示したいと考えます。この処理は簡単に行うことができ、驚くべき結果が現れます。

  1. 必要に応じて、作成したばかりのコレクションを開きます。
  2. Add chart > Chart > Columnとクリックします。グラフの名前とタイトルについては、任意の値を入力します。X軸とY軸のデフォルト値は変更しません。「Limit」を12に設定します。これらの設定を適用し、グラフを発行します。その結果は、図 19のとおりです。IBMのサイトまたはIBMがスポンサーとなったサイトがトップ3のサイトに含まれているとお考えかもしれませんが、それは違います。
    図19. IBM Watsonを取り上げたトップ12のWebサイトのグラフ(書き込み数ベース)
    Image shows top 12 host sites

トップの2つのWebサイトのURLを確認すると、両方ともbizjournals.comに関連するWebサイトであることがわかるため、本コレクションを再検証して、データの加工またはクレンジングを行う必要があります。前述のとおり、ビッグデータの分析を行う際には繰り返しデータの探索、処理、微調整が必要になることがよくあります。

最後に、トップ12のWebサイトを特定したことによって、各URLのホスト・サイトの書き込み数を知りたいと考えました。このデータ事例の説明を締めくくるにあたって、本情報を簡単に取得するための手法について説明します。

  1. 必要に応じて、本コレクションを開き、編集します。
  2. Add Sheet > Pivotとクリックします。本シートに「Pivot」という名前を付け、入力シートとしてURLホストのシート指定し、ピボット列としてURLHOSTを選択します(図 20を参照)。
    図20. 合算したデータを保存するために「Pivot」シートを作成する
    Image shows Pivot
  3. メニューの一番下にあるCalculateタブをクリックします。合算したデータを表示するための新規の列の名前(「CountURLHOST」など)を指定し、プラス・マーク(+)をクリックします。新規の列の値を計算するためにCOUNTを選択し、Count処理を行うための対象列として「URLHOST」を指定します(図 21を参照)。
    図21. 新規の「Pivot」シートに対して最初に実行する計算のパラメーターを設定する
    Image shows initial Pivot calculation parameters
  4. 「Calculate」タブで処理を行っている間に、「MergeURL」という名前の別の列を作成し、コレクションの最初の列の「URLHOST」の値と関連する全てのURLをマージしたリストを本列に保存します。このようなリストは後で役に立つことがあります。本リストを生成し、コレクションに含まれる新規の列として保存するには、プラス・マークをクリックし、新規の列の値として「MERGE」を選択し、対象列として「Url」を指定し、フィールドの区切り記号としてコンマ(,)を指定します。計算の設定が図 22のように表示されたことを確認のうえ、演算処理を実行します。
    図22. 「Pivot」シートに2つ目の計算処理を追加する
    Image shows final Pivot calculation parameters
  5. 必要に応じて、合算した列(「CountURLHOST」)の値を降順でソートします。
  6. コレクションを保存し、処理を終了した後、コレクションを起動します。表示される結果を参照します。結果の一部は図 23.のとおりです。
    図23. 「Pivot」シートに含まれる合算データを検証する
    Image shows data aggregated in a Pivot view

社外データと社内データの関連付けを行う

ここまでのBigSheetsの作業では、外部サイトから収集したデータのみを取り扱ってきました。しかし、多くのビッグデータ・プロジェクトでは、リレーショナル・データベースのデータのような社内データと外部データを組み合わせることが必要になります。本セクションでは、BigSheetsを使用して2種類のコレクション(ソーシャル・メディアのデータのモデリングを行ったコレクションとリレーショナル・データのモデリングを行ったコレクション)を結合します。これら2種類のコレクションを結合することによって、社内の広報宣伝活動がサードパーティーのWebサイトにおけるカバレッジ・データにどのように関連しているのかを分析することができます。本記事においてCSVファイルとして当社が提供したサンプルのリレーショナル・データは、IBMの広報宣伝活動に関するシミュレーションした情報であることにご注意ください。以下において、2つのコレクションを結合し、結果をビジュアルに表示する方法について説明します。

  1. 「Watson_news_blogs」コレクションを開き、新規のコレクションを作成します。
  2. ホスト名の情報を抽出するために、URLHOSTマクロを使用してシートを追加します。全ての既存の列をキャリーオーバーし、シートに「URLHOST」という名前を付けます。
  3. インポートしたリレーショナル・データベースのデータに基づいて既に作成した「Media_Contacts」コレクションをロードするために、別のシートを追加します。(本コレクションは、ステップ 2で作成済みです。)新規のシートに「Contacts」という名前を付けます。
  4. 「Contacts」シートの最終列の名前を「LastContact」に変更します(本列は、オリジナルのリレーショナル・データベースのデータに対してSQL TIMESTAMP()関数を呼び出すことによって生成されています。本列のデータは、当社が対象となるマスメディアに最後にいつ接触したかを示しています。)
  5. 「URLHOST」列と「URL」列の値に基づいて、それぞれ「URLHOST」シートと「Contacts」シートを組み合わせるために、別のシートを追加します(図 24を参照)。この新規のシートに「Combine」という名前を付けます。
    図24. 2種類のシートのデータを組み合わせる(JOIN処理)
    Image shows combining two sheets
  6. 表示された結果をより簡単に検証するために、「Media_Contacts」シートから抽出した「ID」列と「URL」列を削除します。残りの列を、「URLHOST」、「NAME」、「Published」、「LastContact」、「FeedInfo」、「Country」、「Language」、「SubjectHtml」、「Tags」、「Type」、および「Url」のように、より直感的に分かりやすい順序に並べます。
  7. コレクションを保存し、起動します。表示された結果をさっと確認し、必要に応じて対象となる各マスメディアのWebサイトにおける書き込み数を検証するために結果をグラフで表示します。(図 25は、本データを横向きの棒グラフで表したものです。)
    図25. さまざまなWebサイトにおけるIBM Watsonに関する書き込み数を検証する
    Image shows horizontal bar chart

コレクションをエクスポートする

BigSheetsの分析結果が、ダウンストリームのアプリケーションや直接BigInsightsを操作する権限を持たないスタッフにとって有益な場合があります。そこで、1つ以上のコレクションをよく使用されるデータ形式で簡単にエクスポートすることができます。対象となるコレクションを開き、Export As機能(Runボタンの左側にあります)を選択し、対象となる形式としてJSON、CSV、ATOM、RSS、またはHTMLを選択するだけで処理は完了します。結果はブラウザーに表示され、出力結果をお使いのローカルのファイル・システムに保存することができます。


基本機能以外の機能について

ここまででBigSheetsで実行できる機能の概要が理解できたことと思います。組み込まれたマクロ、関数、演算子を活用することによって、Java™やスクリプト言語でコードを作成することなく、さまざまな形式のビッグデータの探索、加工、分析が行えることを理解できたことと思います。

BigSheetsの基本を迅速に説明するために本記事においては活用シナリオを簡略化したものの、本テクノロジーと本テクノロジーに関連するBigInsightsテクノロジーにはまだまだ多くの機能があり、初級レベルの記事で説明を行うことができます。例えば、ソーシャル・メディアの分析プロジェクトの多くにおいては、書き込みコンテンツを深掘りすることによってセンチメントを評価し、コンテンツを分類し、誤検出データを排除するなどの処理を行う必要があります。

そのような作業にはテキスト・データからコンテキストを抽出するプロセスが必要になりますが、BigInsightsの別のコンポーネントによって本機能を提供することができます。本機能についても記事を作成する予定です。このようなテキスト分析機能がカスタム・プラグインによってBigSheetsに組み込まれる可能性があります。

さらに特定の分析タスクにおいては、簡単にさまざまな条件を設定し、ネストされたデータ構造の処理と加工を行い、複雑な条件に基づく論理コンストラクトを適用するために、クエリー言語が必要になることがあります。そこで、BigInsightsにはJSONベースの検索言語であるJaqlが含まれ、プログラマーはJaqlを使用してBigSheetsで分析を行う前にデータの読み取りと準備を行うことができます。今後作成する記事では、Jaqlについて説明します。


結論

本記事では、BigInsightsによってビジネス・アナリストがコードやスクリプトを作成することなくビッグデータの処理を行う方法について説明しました。特に、ソーシャル・メディアのデータとRDBMSのデータを収集するための2種類のサンプル・アプリケーションについて紹介し、ビジネス・アナリスト向けのスプレッドシート形式のツールであるBigSheetsを使用して本データのモデリング、加工、分析、統合、可視化を行う方法について説明しました。説明を簡略化するために、本記事ではBigSheetsの演算子と関数の一部について説明し、自然言語で提供された質問に回答するために複雑な分析を実行する、Apache Hadoopを使用した研究プロジェクトであるIBM Watsonに関するサンプル・アプリケーションの活用シナリオに関連する機能について特に記載しました。

ビッグデータ・プロジェクトを既に開始しているお客様の場合、参考文献を参照することでBigInsightsに関連したソフトウェアのダウンロード・モジュール、オンライン・トレーニング、その他の資料に関するリンクを確認することができます。

謝辞

ダウンロード用にBoardReaderによる出力データのサンプルを提供してくれた、Effyis Inc.のバイスプレジデントであるStephen Doddに感謝します。また、本記事の内容を検証してくれたIBMのDiana Pupons-Wickham とGary Robinsonにも感謝します。


ダウンロード

内容ファイル名サイズ
ソーシャル・メディアのデータとリレーショナル・データのサンプルsampleData.zip1030KB

参考文献

学ぶために

製品や技術を入手するために

  • IBM InfoSphere BigInsights Basic Edition (US)の評価版を使用できます。
  • developerWorksから直接ダウンロードできるIBMの評価版ソフトウェア (US)を活用することによって、今後の開発プロジェクトに役立てることができます。
  • DB2を無償で活用することができます。コミュニティー向けの無償のDB2 Express EditionであるDB2 Express-C (US)をダウンロードすることができます。DB2 Express Editionと同様のコア機能を提供し、アプリケーションの構築と実装のための堅牢な基盤を実現します。

議論するために

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Information Management
ArticleID=826130
ArticleTitle=InfoSphere BigInsightsを活用して分析するソーシャル・メディアのデータと構造化データ
publish-date=08022012