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

Preview:

Citation preview

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

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

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

1

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

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

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

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

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

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

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

西岡悠平

2

アイスブレイク

3

4

後ほど、アップロード

5

後ほど、アップロード

6

後ほど、アップロード

1. Overview

2. News Engine

a. History & Overview

b. Inside News Engine

3. News Engine + Analytics

Agenda

7

Overview

8

9

10

11

SmartNews の紹介

12

Engineer Scientist

13

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

today's main topic

today's sub topic

14

News Engine

15

News EngineHistory and Overview

16

スタートアップあるある

創業者が偉大すぎる

17

Crowsnest

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

18

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

Before After

Monolithic Microservices

DevelopOriginal Database & Queue

Use Manged Servicesas much as possilble

DynamoDB CloudSearch Kinesis

20

Seasar Spring Boot

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

● Great Eco System● Microservices Friendly

21

API ( Swagger UI )

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

アルゴリズムの改善

プラットフォームの面倒

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

Cloud

アルゴリズムの改善

Managed Service

Cloud

プラットフォームの面倒

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

Before After

23

News EngineInside News Engine

24

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

(a)Crawler

● マナーを守って

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

26

(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

(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

(c)Scorer

ScoreTop-N

in CloudSearch

Ranking Process

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

internal signals

exnternal signals

29

(d) article inventoryURL

metadata

features for score

[...]

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

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

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

30

(e) DynamoDB から CloudSearch へ

TransformerFilterFilterTransformerFilterTransformerCosumer Uploader

byte stream JSON Objectfor DynamoDB

JSON Object for CloudSearch SDF format

DataImporterService

DocuentConverterService

IRecordProcessr called by Worker

31

(f) CloudSearch - Basic

...

... ...

...

Filter Sortby score function top-n

High Score

Low Score

n

32

(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

(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

(f) CloudSearch 残念なこと

(1) partial update が出来ない

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

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

35

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

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

○ Diversification○ Context

image similarity

36

Engine + Analytics

37

News Engine

Analytics

model

improve

ad-hocanalysis

reporting

use

38

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

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

Spark Straeming for News Engine

Signals Scorer

Kinesis

Advanced Scorer

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

41

Summary

42

43

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

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

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

44

人材募集

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

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

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

45

Recommended