非構造化データは構造化データに変換して分析する ~人の頭は"表"でしか考えられない~ | データ分析のお作法

AUTHOR :   ギックス

本記事は、株式会社ギックスの運営していた分析情報サイト graffe/グラーフ より移設されました(2019/7/1)

非構造化データを表形式の変換して、分析項目を明確にする

近年、ソーシャルゲームやSNSを中心として、Web通信のデータ形式として、XML形式やJSON形式などの「規則性がある非構造化データ(以下、非構造化データ)」が使用されることが多くなりました。そして、これらの非構造化データがデータ分析の対象として注目されています。しかし、この非構造化データは、データ分析として非常に扱いにくいのが一般論です。今回は、そのような非構造化データを分析する方法について、ご紹介したいと思います。
(分析用語参照:構造化データと非構造化データとデータの規則性)

なぜ、非構造化データはデータ分析に向かないのか?

非構造化データは様々ありますが、今回は、XML形式やJSON形式で使用されている非構造化データについて説明します。
この非構造化データは、1つの情報について、植物の枝葉のように項目が付いています。下記の例は、スマホのソーシャルゲームの戦闘後にサーバー側に送られる情報です。1ユーザーの1回の戦闘について、下記のような情報のカタマリが送られます。hikouzo1

項目数が一定ではない

非構造化データには、それぞれの情報ごとに一定のルールを決めて登録をしています。バトルアクションの例ですと、「倒した敵」の下にモンスター情報が配置される事です。しかし、モンスター情報を見たときに「ゴブリン」には「弱点」項目がありませんが、「ガイコツ」には「弱点」項目があります。このように同じモンスター情報でも設定されている項目情報が一定ではありません。
そして、このアクション情報が、戦闘ごとに毎回バラバラな項目情報で送られてきます。あるユーザーでは、倒した敵が「ゴブリンとガイコツ」でも、別のユーザーでは「ガイコツだけを3体」を倒す場合もあります。また、別のモンスターには、「特殊能力」項目が付く場合があるという事です。
これが、非構造化データの「項目の自由度が高い」利点でもあり、これをデータ分析しようとしたときに「項目数を把握にしくい」という欠点でもあります。

項目名だけで登録内容を判断できない

非構造化データでは、同じ項目名でも登録されている場所によって、意味が違うことがあります。バトルアクションの例ですと、「レベル」項目は、バトルアクション項目の直下の場合はユーザーのレベル、モンスター項目の直下の場合はモンスターのレベルになります。このため、単純に項目名だけで登録内容を判断せず、1つ上の項目と合わせて登録内容を判断する場合があります。

非構造化データを表形式に変換する

先ほど説明しました通り、非構造化データでは「項目数が一定ではない」事によって、表形式のように項目を「列」として、情報ごとに「行」として並べる事が難しいことはご理解いただけたと思います。ここでは、先ほどのバトルアクションのデータを例に非構造化データを表形式に変換するポイントを説明します。(下記の図では1アクションだけですが、全てのバトルアクションを表形式に変換できます)hikouzo2

情報の”枝”ごとに表を分ける

バトルアクションの例では、「倒した敵」情報と「取得したアイテム」情報に登録されている項目の数は等しくなく、「倒した敵」項目に「アイテム」項目が1対1の関係で紐づくものではありません。このように別々の情報に関しては、表を分けて登録します。これは、非構造化データを枝葉で表現した時、複数に分岐する時の”枝”の部分で表を分ける感覚です。そして、「レベル」項目などの名前が重複する項目について、登録内容に合わせて項目名を変更します。

全ての項目を列に並べる

非構造化データでは、条件によって項目が現れたり、消えたりします。この様な「条件によって出現有無が決まる項目」について、「必ず出現する項目」として表項目に登録します。バトルアクションの例ですと、「弱点」項目は、モンスターの種類によって出現の有無が決まります。そのため、表形式の「弱点」項目では、非構造化データに「弱点」項目があれば登録されている値を表項目に登録し、項目がなければ「なし」と表項目に登録します。

非構造化データを表形式にする時には「全体構造を把握」と「分析用途の限定」が大切

このような手法により、多くの非構造化データを表形式に変換することができます。しかし、非構造化データの項目組み合わせパターンは無数にあり、条件によっては、1つの非構造化データから大量の表形式が発生する場合もあります。そのため、全ての非構造化データの項目を漏れなく表形式にすることは、体力的に不可能と考えた方が良いかもしれません。
しかし、全ての非構造化データの情報を表形式に変換する必要はありません。重要なのは「非構造化データを表形式として分析」することです。そのため、非構造化データの全体構造を把握し、分析用途を考え、分析に最適な表形式に変換すればデータ分析の目的は達成できるのです。

連載/関連記事リスト:データ分析のお作法
SERVICE