45
SmartNews Webmining を支えるプラットフォーム 48データマイニング+WEB @東京 ( #TokyoWebmining 48th ) AWS上での分析基盤アーキテクチャ最前線 祭りー 西岡悠平 (スマートニュース株式会社) 1

SmartNews の Webmining を支えるプラットフォーム

Embed Size (px)

Citation preview

Page 1: SmartNews の Webmining を支えるプラットフォーム

SmartNews の Webmining を支えるプラットフォーム

第48回 データマイニング+WEB @東京( #TokyoWebmining 48th ) ーAWS上での分析基盤アーキテクチャ最前線 祭りー

西岡悠平 (スマートニュース株式会社)

1

Page 2: SmartNews の Webmining を支えるプラットフォーム

マネージャ データサイエンス・マシンラーニング担当 スマートニュース

● 2003年 京都大学大学院情報学研究科複雑系科学コース修了。

● ネットワーク機器メーカーに入社、 2005年上半期の未踏ソフトウェア創造事業

「スーパークリエータ」に認定される。

● その後、株式会社四次元データ Web技術研究部を経て、2008年に楽天株式会社に入社。レ

コメンデーションエンジンをはじめとした先端技術の研究開発をリードする。

● 2014年9月にスマートニュース社入社。

西岡悠平

2

Page 3: SmartNews の Webmining を支えるプラットフォーム

アイスブレイク

3

Page 4: SmartNews の Webmining を支えるプラットフォーム

4

後ほど、アップロード

Page 5: SmartNews の Webmining を支えるプラットフォーム

5

後ほど、アップロード

Page 6: SmartNews の Webmining を支えるプラットフォーム

6

後ほど、アップロード

Page 7: SmartNews の Webmining を支えるプラットフォーム

1. Overview

2. News Engine

a. History & Overview

b. Inside News Engine

3. News Engine + Analytics

Agenda

7

Page 8: SmartNews の Webmining を支えるプラットフォーム

Overview

8

Page 9: SmartNews の Webmining を支えるプラットフォーム

9

Page 10: SmartNews の Webmining を支えるプラットフォーム

10

Page 11: SmartNews の Webmining を支えるプラットフォーム

11

Page 12: SmartNews の Webmining を支えるプラットフォーム

SmartNews の紹介

12

Page 13: SmartNews の Webmining を支えるプラットフォーム

Engineer Scientist

13

Page 14: SmartNews の Webmining を支えるプラットフォーム

http://aws.amazon.com/jp/solutions/case-studies/smartnews/

today's main topic

today's sub topic

14

Page 15: SmartNews の Webmining を支えるプラットフォーム

News Engine

15

Page 16: SmartNews の Webmining を支えるプラットフォーム

News EngineHistory and Overview

16

Page 17: SmartNews の Webmining を支えるプラットフォーム

スタートアップあるある

創業者が偉大すぎる

17

Page 18: SmartNews の Webmining を支えるプラットフォーム

Crowsnest

[Ref]SmartNews Compass Keynote Sessionhttp://about.smartnews.com/ja/compass_2014/

18

Page 19: SmartNews の Webmining を支えるプラットフォーム

News Engine History● 2011.5 - Crowsnest release

● 2012.12 - SmartNews release

● 2013 - 2014 ... fork して改善し続けたが○ Crowsnest 部分、辛い部分も増えてきて、アーキテクチャ刷新したかった・・・。

たぶん、どの会社もたどる道・・・。

● 2015.3○ SmartNews News Office で初めて Tokyo WebMining !○ 自分も参加。Tokyo Web運営者でもある小宮氏 (SmartNews)から「発表しろ」プレッシャー。○ 発表を決める (刷新を決める )。発表に間に合うように、アーキテクチャの刷新を始める。

● 2015.4 - 7 Platform 刷新

● 2015.8.1 今日

CrowsnestSmartNews APIアプリ

19

Page 20: SmartNews の Webmining を支えるプラットフォーム

Before After

Monolithic Microservices

DevelopOriginal Database & Queue

Use Manged Servicesas much as possilble

DynamoDB CloudSearch Kinesis

20

Page 21: SmartNews の Webmining を支えるプラットフォーム

Seasar Spring Boot

[告知]Seasar Conference 20152015年9月26日(土)

● Great Eco System● Microservices Friendly

21

Page 22: SmartNews の Webmining を支えるプラットフォーム

API ( Swagger UI )

(ref) http://petstore.swagger.io 22

Page 23: SmartNews の Webmining を支えるプラットフォーム

アルゴリズムの改善

プラットフォームの面倒

アルゴリズムにまつわる話( deploy や test )

Cloud

アルゴリズムの改善

Managed Service

Cloud

プラットフォームの面倒

アルゴリズムにまつわる話

Before After

23

Page 24: SmartNews の Webmining を支えるプラットフォーム

News EngineInside News Engine

24

Page 25: SmartNews の Webmining を支えるプラットフォーム

ArticleAnalysis

Scorer

News Ranking

API

News Engine System Overview

metadata

score(a)

(b)

(c)

(d) (e)

DataImporter

(f) (g)

Crawler

external signals

internal signals

article inventory article index

25

Page 26: SmartNews の Webmining を支えるプラットフォーム

(a)Crawler

● マナーを守って

● 秘伝のタレがギッシリ○ (例) robots.txt で OutOfMemory Error

26

Page 27: SmartNews の Webmining を支えるプラットフォーム

(b)Article Analysis

HTML Article Analysis

Metadata(Structured Data)

pipeline process- title- content- thumbnail- category- (person)- (location)

● Natural Language Processing

● Machine Learning

● Apache UIMA vs. Original Framework

27

Page 28: SmartNews の Webmining を支えるプラットフォーム

(b)Article Analysis - Classification

Globally Scalable Web Document Classification Using Word2Vechttp://www.slideshare.net/kouheinakaji/smart-news-documentclassification?qid=c9b6df62-1fdd-4bf8-9543-bff0fba92dac&v=default&b=&from_search=2

28

Page 29: SmartNews の Webmining を支えるプラットフォーム

(c)Scorer

ScoreTop-N

in CloudSearch

Ranking Process

スコアリングの詳細は極秘

internal signals

exnternal signals

29

Page 30: SmartNews の Webmining を支えるプラットフォーム

(d) article inventoryURL

metadata

features for score

[...]

{a: 3, b:4....}

良いところ● scalable● stable● JSON で複雑なデータ構造を扱える● 要素の中身を atomic に変更可能

出来ないこと● 高度な検索

30

Page 31: SmartNews の Webmining を支えるプラットフォーム

(e) DynamoDB から CloudSearch へ

TransformerFilterFilterTransformerFilterTransformerCosumer Uploader

byte stream JSON Objectfor DynamoDB

JSON Object for CloudSearch SDF format

DataImporterService

DocuentConverterService

IRecordProcessr called by Worker

31

Page 32: SmartNews の Webmining を支えるプラットフォーム

(f) CloudSearch - Basic

...

... ...

...

Filter Sortby score function top-n

High Score

Low Score

n

32

Page 33: SmartNews の Webmining を支えるプラットフォーム

(f) CloudSearch - score functionExamples

● relevence x popularity : (0.3*popularity)+(0.7*_score)

● decay : pow(e, _time - created)

(例) http://www.slideshare.net/AmazonWebServices/enrich-search-user-experience-using-amazon-cloudsearch-svc302-aws-reinvent-2013

33

Page 34: SmartNews の Webmining を支えるプラットフォーム

(f) CloudSearch - personalization

feature.1 feature.2 ... feature.n

doc.1 0.8 0.7 ... 0.3

doc.2 0.2 0.6 ... 0.7

... ... ... ... ...

doc.n 0.4 0.5 ... 0.3

= { feature.1 : 0.6, feature.2, ... feature.n : 0.7}

[exression] user_feature_1 x doc_feature_1 + user_feature_2 x doc_feature_2 .. + user_feaure_n xdoc_feature_n

e.g. ) 0.6 x 0.8 + 0.2 X 0.7 + ... + 0.7 x 0.3

34

Page 35: SmartNews の Webmining を支えるプラットフォーム

(f) CloudSearch 残念なこと

(1) partial update が出来ない

(2) instance 数の変更時の挙動

(3) Solr のプラグイン( dedupe 処理など ) 使えない

35

Page 36: SmartNews の Webmining を支えるプラットフォーム

(g) News Ranking API● top-n に対して

○ より詳細な scoring ■ ( CloudSearch の score, その他の要素)

○ Diversification○ Context

image similarity

36

Page 37: SmartNews の Webmining を支えるプラットフォーム

Engine + Analytics

37

Page 38: SmartNews の Webmining を支えるプラットフォーム

News Engine

Analytics

model

improve

ad-hocanalysis

reporting

use

38

Page 39: SmartNews の Webmining を支えるプラットフォーム

Presto Hive Spark

Hive MetaStore

Data in S3 (RCfile, JSONー2012年 からのログ)

SparkSQL/MLlibSmartNews UDF, UDAF(user defined function)Chartio / Shib

ad-hocanalysis reporting pre-process model

creationrealtimeanalysis

StreamingData

news engine

Hive

Azkaban

SparkHive Spark

39

Page 40: SmartNews の Webmining を支えるプラットフォーム

Spark MLlib

● Collaborative filtering○ ALS (Alternating Least Squares)

Pre Processon Hive SpakSQLData

in S3 RDD ALS MLlibon Spark

Apache Spark on EMRhttp://www.slideshare.net/smartnews/aws-meetupapache-spark-on-emr

40

Page 41: SmartNews の Webmining を支えるプラットフォーム

Spark Straeming for News Engine

Signals Scorer

Kinesis

Advanced Scorer

● Spark 1.3 は厳しい● Spark 1.4 からが良い

41

Page 42: SmartNews の Webmining を支えるプラットフォーム

Summary

42

Page 43: SmartNews の Webmining を支えるプラットフォーム

43

Page 44: SmartNews の Webmining を支えるプラットフォーム

良質な情報を届けるために

● プラットフォームを進化させている

● より良質な情報を探すアルゴリズム開発に集中できるようになってきている

44

Page 45: SmartNews の Webmining を支えるプラットフォーム

人材募集

こんなプラットフォームの上で、

ガツガツとアルゴリズムを作りたい人!

もちろんプラットフォームを進化させる人も!

45