読者です 読者をやめる 読者になる 読者になる

Taste of Tech Topics

Acroquest Technology株式会社のエンジニアが書く技術ブログ

ElasticのGraph機能でコンビニ商品を特徴分析

Elasticsearch Kibana

こんにちは、このブログにデビューしました、@です。

世の中ではポケットモンスターが流行していますが、
私の中では以前からモンスターエナジーが流行しています。

私は会社の近くのコンビニで、モンスターエナジーを購入することが多いのですが、
海外と日本では成分が異なるという話があったり、類似商品も多く出回っていたりするため、
中身が気になります。
(モンスターエナジー好きの私にとって、それ以外はすべて類似商品です)

実際、棚を眺めてみると、売り場面積の関係でコンビニで扱える商品は限られており、
工夫を凝らしたうたい文句の売れ筋商品がしのぎを削っています。

そんな折、@さんによるElasticsearchのGraph機能紹介記事もあり、
acro-engineer.hatenablog.com

同じコンビニエンスストアのデータセットを使って、もう少し違う観点から分析を深めたいと思いました。
※Graph機能の基本的な使い方は上のページを参考にしてもらえれば良いと思います。

自然言語処理も使い、販売商品の特徴をつかんで、分析してみましょう。

Graphの対象データ

今回も、The 2nd BigData Analysisのデータを使用します。
The 2nd Big Data Analysis Contest

この中にある商品データを使って、商品と説明文(概要)や商品と素材から
何か新しいこと、どんなことが見えるのかを検証してみます。

次の表に実際のレコードを2件表示しています。
本レコードにはカラムが更に多くありますが、今回は利用したカラムを抜粋しました。
pnameが商品名、abstractが商品の概要、materialsが素材名の一覧を示します。

pname abstract materials
うましおポテト(ノンフライ) ザク切りポテトを、カリッと焼き上げました。 馬鈴薯(遺伝子組換えでない)、植物油、砂糖、食塩、デキストリン食物繊維ブドウ糖、たんぱく加水分解物、調味料(アミノ酸等)、リン酸塩(Na)、甘味料(ステビア)、香料、(原材料の一部に鶏肉を含む)
くるみとココナッツのキャラメリゼ素焼きアーモンド入り くるみとココナッツに、キャラメルのやさしい甘さが広がります。 クルミ、ココナッツ、アーモンド、グラニュー糖、砂糖、ショ糖、でん粉、ぶどう糖デキストリン、食塩、乳等を主要成分とする食品、香料

解析

設定

今回の設定は次のとおりです。

  1. Sampling size:2000
  2. Certainty:1
  3. Diversity field: No diversification
  4. Timeout[ms]:5000
  5. Significant link: off

MeCabや特定の区切り文字(、)で分解したデータを投入しています。

商品の概要と商品名のデータ

The 2nd BigData Analysisには、商品の概要データがあります。

実際の加工したレコードを3件表示してみます。(形式はcsvです。)

概要の単語 商品名
ザク うましおポテト(ノンフライ)
切り うましおポテト(ノンフライ)
ポテト うましおポテト(ノンフライ)

商品の概要を解析することで概要のつながりからどのような商品が
似ているのか、思いがけない情報を取得できるかもしれません。

早速やってみましょう。
まず、大雑把に表示をすると次の図になります。

f:id:acro-engineer:20160911150319p:plain

例えば、このGraphを見ると
「キヌアと8種のグラノーラチョコレート」の食感が「サクッ」としており、
「サクッ」としているものとしては他にも「ミニ歌舞伎揚」や「小さな海老の華」、「京挽ききなこくるみ」があることがわかります。

つまり、「サクッ」としているものを取ることができます。この「サクッ」としているものといった概念をベースに
他の商品を検索することに応用することができます。

また、気になった箇所にはGraph機能でエッジを追加することができます。
「厚切りザクッとポテトうすしお味」にはどのような概要があって、それに近いものが何かを探すこともできます。

例えば、今現れているGraphを少々操作し、「厚切りザクッとポテトうすしお味」に近いものを出すと
次のようになります。

f:id:acro-engineer:20160912210428p:plain

「厚切りザクッとポテトコンソメ味」や「うましおポテト(ノンフライ)」といったノード(商品)が出てきました。
これで類似する商品を発見することができました。

このように、概要の繋がりから類似している商品をGraphの機能から検索することができます。

商品の素材と商品名のデータ

商品の素材データからも同じように検索することができます。
こちらも同様に、実際の加工したレコードを3件表示してみます。

素材名 商品名
馬鈴薯(遺伝子組換えでない) うましおポテト(ノンフライ)
植物油 うましおポテト(ノンフライ)
砂糖 うましおポテト(ノンフライ)

試しにGraphを使った表示をしてみましょう。

f:id:acro-engineer:20160911150324p:plain

注目ポイントを赤枠で囲ってみます。

f:id:acro-engineer:20160912211430p:plain

この図から、砂糖が
「お好み海鮮」、「いかみりん」、「いかの姿フライ」、「あんドーナッツ」、「キヌアと8種のグラノーラチョコレート」
の素材として使われていることがわかりました。

これを応用するとモンスターエナジーに近いものが分かるのでは!
と思ったのですが、よくよく見てみると、このデータセットにはモンスターエナジーは入っていなかったorz

Graphでわかること

ElasticsearchのGraph機能を使うと次のことがわかります。

1.要素と要素の直接的なつながり
基本的な機能ではありますが、今回解析したように、砂糖はどの商品に使われているのか、
といった関係をひと目で可視化することができます。

2.特定の要素とそれに関係した要素を可視化できる。
要素と要素から新しい要素を発見した場合、その要素と他の要素がどのように関係しているのか
といったことをひと目で可視化することができます。
今回の場合だと、「厚切りザクッとポテトうすしお味」にはどのような概要があって、
それに近いものが何かを探すことがそれを指しています。
これを応用すれば、商品の概要と売れ筋商品の関連性もつかむことができそうです。

Graph機能はこれらの分析を可能とし、関係性を容易につかむことができます。

まとめ

Graphを使うとつながりを見ることができます。
ElasticsearchのGraph機能をつかって、身近なものをどんどん可視化してみましょう。

今度はモンスターエナジーと他商品の関係を調べてみたい。

Acroquest Technologyでは、キャリア採用を行っています。


  • 日頃勉強している成果を、AWSHadoop、Storm、NoSQL、Elasticsearch、SpringBoot、HTML5/CSS3/JavaScriptといった最新の技術を使ったプロジェクトで発揮したい。
  • 社会貢献性の高いプロジェクトに提案からリリースまで携わりたい。
  • 書籍・雑誌等の執筆や対外的な勉強会の開催を通した技術の発信や、社内勉強会での技術情報共有により、技術的に成長したい。
  • OSSの開発に携わりたい。

 
少しでも上記に興味を持たれた方は、是非以下のページをご覧ください。
 
データ分析で国内に新規市場を生み出す新サービス開発者WANTED! - Acroquest Technology株式会社の新卒・インターンシップ - Wantedlywww.wantedly.com