Apache sparkとapache cassandraで行うテキスト解析

23
Apache SparkApache Cassandraで行うテキスト解析 株式会社 INTHEFOERST 冨田 和孝

Transcript of Apache sparkとapache cassandraで行うテキスト解析

Page 1: Apache sparkとapache cassandraで行うテキスト解析

Apache SparkとApache Cassandraで行うテキスト解析

株式会社 INTHEFOERST冨田 和孝

Page 2: Apache sparkとapache cassandraで行うテキスト解析

自己紹介

冨田 和孝

肩書き: 株式会社INTHEFOREST 代表取締役社長Cassandraコンサルティング

Cassandra Conference in Tokyo / Cassandra Summit JPNOrganizerCassandra勉強会主宰2か月に一度程度開催。第38回まで開催しています。

職種:DB・インフラ屋以前、某レストランサーチのDBA高負荷・大容量・大規模のOracleRACとPostgreSQLとMySQLに苦しめられ続けた経験あり。元々は社会言語学(日本語)専攻(言語認知)

Page 3: Apache sparkとapache cassandraで行うテキスト解析

自己紹介

Tim Berglund

Global Director of Training

COMPLETED

HAS COMPLETED

Kazutaka Tomita

as a part of the:

DataStax Certific

a

t ion Pr ogram.

Apache CassandraTM

Professional Certifica t ion

SEPTEMBER

82016

Tim Berglund

Global Director of Training

Page 4: Apache sparkとapache cassandraで行うテキスト解析

Agenda

自然言語解析とは

日本語の特徴

Apache Spark ML + Apache Cassandra

Page 5: Apache sparkとapache cassandraで行うテキスト解析

自然言語解析とは

自然言語とは人間がお互いにコミュニケーションを行うための自然発生的な言語を指します。

自然言語処理とは、人間が日常的に使っている自然言語をコンピューターに処理させる為の一連の技術です。

Page 6: Apache sparkとapache cassandraで行うテキスト解析

自然言語解析とは

ネガポジ判定等(回帰分析)

ラベリング(クラス分類)

傾向分析(クラスタリング)

Page 7: Apache sparkとapache cassandraで行うテキスト解析

ネガポジ判定等(回帰分析)

特定の単語をポジティブ(プラス値)、ネガティブ(マイナス値)に設定し、その単語を持つ文章のポジションを計算し、ある一定の閾値の上下に座標が配置されることにより文章としてのネガティブポジティブを判定

嬉しい: +1笑顔:+1泣く:0怒った:0

Page 8: Apache sparkとapache cassandraで行うテキスト解析

ラベリング(クラス分類)

どのようにラベル付けするかのデータを用意し、入力された文章がどのラベルの文章に近いか判断しラベルの付けを行う

今日の朝は寒かった:「天気」私は元気です。:「あいさつ」おはよう。:「あいさつ」明日の午後3時に会いましょう:「約束」

Page 9: Apache sparkとapache cassandraで行うテキスト解析

傾向分析(クラスタリング)

文章に含まれる要語を基準に似た要語を含む文章を集約し含まれる用語の特徴などから傾向を分析する

昨日楽しいお話をした。合コンをしたい。女子会の予定は明日です。こ汚いおっさんが隣に座って辛い。さえない日々を送ってる。徹夜明けでラーメンを食べに行こう。尾行をしていたら凄い場面に出会った。拳銃の取引の現場を抑えた。

Page 10: Apache sparkとapache cassandraで行うテキスト解析

日本語の特徴

日本語のように単語間に空白文字が無い言語の場合、単語と単語の区切りを判定し、文字を分割する特別な前処理が必要となる。この処理を「形態素解析」という。

私 は 朝 ご飯 を 食べ た。

形態素を座標点に文章のベクトル化を行うのが一般的

Page 11: Apache sparkとapache cassandraで行うテキスト解析

日本語の特徴

助詞・助動詞によって、文章の意味が異なってしまう。

以下の三つの文章を比較した場合

私は朝ご飯を食べた。

私は朝ご飯を食べない。

私は朝ご飯を食べなかった。

Page 12: Apache sparkとapache cassandraで行うテキスト解析

日本語の特徴

形態素で切り分けた場合、、助詞・助動詞の中でも膨大な数の言葉が存在し、座標点が多くなりすぎる。

私 は ご飯 を 食べ た 。

私 は ご飯 を 食べ なかっ た 。

私はご飯を食べた。

私はご飯を食べなかった。

Page 13: Apache sparkとapache cassandraで行うテキスト解析

日本語の特徴

私は ご飯を 食べた。

私はご飯を食べた。

私 は ご飯 を 食べ た。

私は ご飯を 食べなかった。

私はご飯を食べなかった。

私 は ご飯 を 食べ なかっ た。

一歩進めて文節を座標にしてみた。

Page 14: Apache sparkとapache cassandraで行うテキスト解析

Sparkとは

2009年のUC Berkeleyでの研究プロジェクト

高速かつ汎用のクラスタコンピューティングシステム

API:Scala、Java、Python、およびR

200社以上の企業の1,000人以上の開発者が開発

Page 15: Apache sparkとapache cassandraで行うテキスト解析

Cassandraとは

オープンソース 単一障害点(SPOF)がない リニアなスケーラビリティ性能 すべてがアクティブな設計 透過的にエラーを検出、回復 マルチデータセンター レプリケーション CQL (Cassandra Query Language)

Amazon Dynamoの分散ハッシュテーブル(DHT)とGoogle Big TableのKVSの2つの特徴を併せ持つビッグデータ用分散データベース

Page 16: Apache sparkとapache cassandraで行うテキスト解析

SparkとCassandraSpark Cluster

Cassandra Cluster

Driver

Executor

task

slot

task

task

task

slotExecutor

task

slot

task

task

task

slotExecutor

task

slot

task

task

task

slot

Node Node Node

Sparkでは,タスクの割り当ての際にデータアクセスの局所性(ローカリティ)が考慮される

Page 17: Apache sparkとapache cassandraで行うテキスト解析

機械学習実行方法

Fulldataset

トレーニングデータ

テストデータ

features ラベル

モデル

精度 予測

新規入力

Page 18: Apache sparkとapache cassandraで行うテキスト解析

機械学習実行方法

私は ご飯を 食べた

私は

お肉を

食べた

食べなかった

私は ご飯を 食べなかった

S1:

S2:

あなたは お肉を 食べなかったS3:

座標点

:P1

:P4:P3

:P5

あなたは :P2ご飯を

:P6

座標

S1:{P1,P3,P5}

S2:{P1,P3,P6}

S3:{P2,P4,P6}

Page 19: Apache sparkとapache cassandraで行うテキスト解析

言語解析と機械学習

ロジスティック回帰

二項分類

ロジスティック関数

ナイーブベイズ分類器

多項分類

ベイズの定理

ゼロ頻度問題

Page 20: Apache sparkとapache cassandraで行うテキスト解析

ロジスティック回帰

ロジスティック関数

2値ロジスティック回帰

ある前提に対応する状態を特定など

「ポジティブ=1」と「ネガティブ=0」

xの値が大きくなると値が1に近づく(分母が1に近づくので)xの値が小さくなると値が0に近づく(分母が∞に近づくので)xが0の時に値は1/2になる。

Page 21: Apache sparkとapache cassandraで行うテキスト解析

ナイーブベイズ分類器

ベイズの定理

ある事象Bが起こる条件下で、別の事象Aが起こる確率のこと。

ゼロ頻度問題

ある単語の生起する確率を、学習データに利用したコーパス全体の中で

その単語が出現した相対頻度によって推定すると、学習データ中に出現

しなかった単語(組)の出現確率が0になってしまう問題のことである。

Page 22: Apache sparkとapache cassandraで行うテキスト解析

テキストビジュアライゼーション

類型分類したラベル毎に強い言葉を抽出

ワードクラウド

Page 23: Apache sparkとapache cassandraで行うテキスト解析

まとめ

自然言語解析

ネガポジ判定等(回帰分析)

ラベリング(クラス分類)

傾向分析(クラスタリング)

Spark と Cassandra

機械学習

データビジュアライゼーション