2019年7月29日月曜日

Watson Explorer(WEX)V12のコレクション作成が劇的に簡単に。

前回、「NTHSA(米国の国家道路交通安全局)」に寄せられる「自動車の故障に関するオーナーのテキストデータ」をサンプリングし、30MB程度のコンパクトなデータセットを作成しました。

(R言語)NHTSAから4行でテキストマイニング 用データをサンプリングする
https://sapporomkt.blogspot.com/2019/07/rnhtsa4.html

今回は、このデータセットを使って、IBMが誇るテキストマイニング ソリューションである「Watson Explorer(WEX)」用の分析データ(WEXでは「コレクション」と言います)を作成します。

実施環境については、以下の通りです。
・IBM Watson Explorer Deep Analytics Edition Version 12.0.2

※本エントリーは、私、小田一弥が一個人として勉強を兼ねて記載したものです。私の勤務先である日本アイ・ビー・エム株式会社の見解・見識ではない、個人としての記載内容としてご覧ください。 

WEX Deep Analytics Edition(ver12)の概要



(そもそも「WEXってなに?」の方向けです。ご存知の方は、当パートは読み飛ばしてください)
詳細は、下記のWEX紹介ページをご参照ください。
簡単に言うと「人間が読みきれない大量の文献、文書、レポートを分類・分析して知見を獲得」するための、IBMのテキストマイニングソリューションです。

ウリとしては、下記5点ですが、特に、V12になって機械学習(AI含む)とUI/UXが大幅に強化されました。

1.ビッグデータ対応:
他社ソリューションでも数十万件レコードレベルなら対応可能と思いますが、WEXは数百万件レコードでも難なく分析するスケーラビリティを有しています。
(ただし、それに合ったシステム基盤が必要です)

2.高度な言語理解と深い洞察
同義語辞書だけではなく、様々な言い回しの意図も抽出可能な機能があります。
「IBM Watson Knowledge Studio(WKS)」を用いると、文章に注釈としてメタデータを付与し、WEX上で利用することができます。

3.多言語対応
もともと、日本IBMが開発したソリューションであるため、日本語の解析を得意としていますが、全部で16カ国もの多言語分析が可能です。

4.機械学習を用いた自動文書分類
V12から新たに機械学習を用いた分類機能が実装されました。

5.データに基づく分析ステップのガイド
テキストマイニング未経験者でも直感的に使えるUI/UXとなりました。
(初見だと、V11以前のユーザーは面食らうかもしれませんが、すぐ慣れると思います)

WEX Deep Analytics Edition(ver12)の概要


WEXに限らず、テキストマイニング ソリューションは、「文字コード指定」や「フィールド設定」など、分析着手までの作業負担が重くゲンナリすることが多いのですが、WEXはこの辺りの作業がかなり楽です。

下記に手順を記載しますが、ローデータのフィールドずれなどが無ければ、ほとんどポチポチとボタンを押せば完了するかと思います。

1.WEXにログインする
まずは、管理者から配布されたIDとPASSでログインしてください。



2.「コレクションを作成」を選択する
コレクション(WEXの分析対象となるデータ)一覧画面が表示されるので、「コレクションを作成」を選んでください。



3.「次へ」をそのまま選択する
既に「コンテンツ・マイニング」にチェックされているので、そのまま「次へ」を選択してください。


4.分析対象ファイルをアップロードする
画面下部のアップロードスペースに、前回サンプリングした分析対象ファイルをアップロードします(リンクをクリックしてのファイル選択でも可能です)。


5.コレクション名を記載する
アップロードが完了すると画面が切り替わるので、コレクション名を記載します。
なお、実務上は、ファセットのテスト用コレクションなど複数のコレクションを作ることが多いと思います。
「テスト/本番」や日付など、誰が見てもわかるコレクション名を記載するよう、習慣づけると良いと思います。

「説明」欄は、複数メンバーでの作業であれば記載してください。


6.「フィールド」画面が表示される
取り込みが完了すると、「フィールド」画面が表示されます。
「CSVプレビュー」の部分を見ると、各フィールドが自動的に識別されています。

あと、WEX V11と比べると、画面上段に「テンプレート」から「保存」までの作業ステップが明示されており、どのステップまで進んでいるかがわかりやすいですね。


7.「LDATE」を「日付」形式に変更する
「LDATE」がユーザーからクルマの異変を報告された日のため、このフィールドを「日付」に変更します。


すると、「LDATE」フィールドで取り込んだデータがグラフ化されます。
WEX V11までは、コレクション作成が全て完了しないと見れなかったため、これはとても助かりますね。特に、V11まで日付形式は鬼門で何度も取り込みを繰り返していたのでありがたいです。

また、右下の「フィールド・マッピング」では、分析対象となるテキスト本文が記載されているフィールド(「CDESCR」フィールド)が自動的に指定されています。
V11までは、「Body」フィールドとして都度指定が必要でしたが、随分と楽になりましたね。


8.「CSVパーサーの構成」をチェックする
「CSVプレビュー」パートの右上部分にある「CSVパーサーの構成」をクリックします。
文字コードや区切り文字の指定が可能です。今回のデータは変更は不要なので、このまま閉じて、「次へ」ボタンを押してください。


9.アノテーターを指定する
「コレクションのエンリッチ」画面に遷移します。
ここでは、非構造化データ(ここでは「CDESCR」フィールド)に様々なアノテーション(注釈)をつけることができます。
「アノテーション??」な方は、次回以降のエントリーで記載しますので、今は、「文章や単語に意味をつけて、分析に利用できるようにする」ぐらいのご理解でOKです。


ここでは、「評判分析」と「固有表現抽出」にチェックをつけて、「次へ」ボタンを押してください。


10.ファセットを指定する
分析用ファセットの指定画面に遷移します。WEXではデフォルトで様々な品詞や語句などを抽出可能です。実務的には色々とやることがあるプロセスですが、今回はデフォルトのままでOKです。

















11.コレクションを保存する
ここはデフォルトのままでOKです。
「保存」ボタンを押すと、文章へのインデクシング(索引付け)が走ります。
分析対象となるレコード数やサーバー環境により、インデクシング時間は変動しますが、結構かかるはずですので、別作業を行いながら完了をお待ちください。




12.完了したコレクションをクリックする
しばらく経つと、下記のように「100%索引付き」と表示されるので、当該コレクションをクリックしてください。



ファセットに合わせて単語の頻度数が表示されました!
次回は、このコレクションを使って、分析機能の詳細をご紹介します。

Watson関連エントリー


Watson Explorerでディズニーの人気作品をテキストマイニング

自動でAIモデルが出来ちゃう〜Watson Studio AutoAI Experiment

SPSS Modeler flowのモデルをWebサービスとしてデプロイする

(無料)Watson StudioでSPSS Modeler flowの決定木を動かす

Watson Studioの「Data Refinery」機能で「馬の疝痛(せんつう)」データを眺めてみた。

2019年7月27日土曜日

(R言語)NHTSAから4行でテキストマイニング 用データをサンプリングする

「Watson Explorer(WEX)」に関するテキストマイニングのエントリーを書きたくなり、「NHTSA(※)」のローデータをダウンロードしたのですが・・・
※National Highway Traffic Safety Administration:自動車や運転者の安全を監視する米国運輸省の部局(コトバンク)


解凍すると1GB越え・・・。
「大規模データに潜む有用な声をクイックに発見する」のがWEXのウリだったりするので、このまま分析用サーバーにアップしちゃおうかな・・・。

・・・と、私の中の妖精が何度か囁いたのですが、本当にやっちゃうと怒られそうなので、扱いやすいファイルサイズになるよう、サンプリングしてみます。

実施環境については、以下の通りです。
・MacBook Air(CPU:1.6GHz,Memory 8GB)
・macOS Mojave ver10.14.5
・Rstudio ver1.2.1335(R version 3.6.0)

※本エントリーは、私、小田一弥が一個人として勉強を兼ねて記載したものです。私の勤務先である日本アイ・ビー・エム株式会社の見解・見識ではない、個人としての記載内容としてご覧ください。 

サンプリングの手順


1.Rstudioを端末にインストールする
このブログで何度かご紹介しているIBMのAI開発環境である「Watson studio」内にあるRstudioでも実行可能ですが、無料枠のCPU時間をデータ前処理で使うのも勿体ないので、ローカル端末にあるRstudioで実行します。
インストールプログラムが必要な方は、ここからダウンロードし、インストールしてください。

2.NHTSAからローデータをダウンロードする
下記URLからローデータ(FLAT_CMPL.csv)をダウンロードしてください。圧縮されてはいるものの、200MB以上あるので、通信環境によっては少々時間がかかります。

https://www-odi.nhtsa.dot.gov/downloads/


3.フィールド情報をダウンロードする
ローデータには、フィールド名が記載されていないため、ローデータと同じフォルダに「CMPL.txt」もダウンロードしておきます。
※この後、ソースコードで整形済みのフィールド一覧テキストを記載しますので、面倒でしたら無視してもOKです。


4.作業ディレクトリを変更する
「setwd("ディレクトリのパス")」をRstudioのコンソールに入力してもいいのですが、面倒なので、Rstudioのメニュー画面から「Session→Set Working Directory」を選び、ローデータが入っているディレクトリを指定します。


5.以下のコードを実行する。
「dplyrパッケージ」のロードを除くと、わずか4行のコードでサンプリングされたファイルが生成されます。
特に便利なのが、「dplyrパッケージ」の中にある「sample_frac()」関数です。
当該関数の引数にパーセンテージとなる引数を入れると、入力ファイル(この場合、master.df)を母数として、指定したパーセント分のレコードをサンプリングしてくれます。

# dplyrのロード。初めて利用する場合は、事前に当該パッケージをインストールしてください。
library(dplyr)

# 「sep="\t"」でTab区切りファイルを読み込み。
# 「FLAT_CMPL.txt」にはフィールド名が記載されていないので、最初のレコードをフィールド名として
# 読み込まないように「header = FALSE」を指定する。
# デフォルトのFactorデータで読み込むと重くなる。今回は、ローデータ抽出が目的のため、
# 「stringsAsFactors = FALSE」とする。
master.df <- read.csv("FLAT_CMPL.txt",sep="\t",header = FALSE,stringsAsFactors = FALSE)

# 下記にフィールド定義が記載されています
# https://www-odi.nhtsa.dot.gov/downloads/folders/Complaints/Import_Instructions.pdf
# 先ほど読み込んだデータフレームのフィールド名を上書き。
colnames(master.df) <- c("CMPLID","ODINO","MFR_NAME","MAKETXT","MODELTXT","YEARTXT","CRASH","FAILDATE","FIRE","INJURED","DEATHS","COMPDESC","CITY","STATE","VIN","DATEA","LDATE","MILES","OCCURENCES","CDESCR","CMPL_TYPE","POLICE_RPT_YN","PURCH_DT","ORIG_OWNER_YN","ANTI_BRAKES_YN","CRUISE_CONT_YN","NUM_CYLS","DRIVE_TRAIN","FUEL_SYS","FUEL_TYPE","TRANS_TYPE","VEH_SPEED","DOT","TIRE_SIZE","LOC_OF_TIRE","TIRE_FAIL_TYPE","ORIG_EQUIP_YN","MANUF_DT","SEAT_TYPE","RESTRAINT_TYPE","DEALER_NAME","DEALER_TEL","DEALER_CITY","DEALER_STATE","DEALER_ZIP","PROD_TYPE","REPAIRED_YN","MEDICAL_ATTN","VEHICLES_TOWED_YN")

# 取り込み直後は、782,115 records。
# 「Ctrl+Shift+M」でpipe演算子(`%>%`)を挿入
# マスターのデータフレーム(master.df)から3%を無作為抽出し、別のデータフレーム
# (sample_3_percent.df)に書き出す。今回は3%で指定するため、23,463 recordsとなる。
sample_3_percent.df <- master.df %>% sample_frac(0.03)

# CSVファイルとして書き出し
write.csv(sample_3_percent.df,"sample_3_percent.csv")

サンプリングされたファイルを見ると、32.1MBなのでExcelでも開けるサイズになりました。


次回は、このファイルを使って新しくなったWEXのご紹介をしたいと思います。

R関連エントリー


R言語:starwarsキャラの身長や年齢をdplyrで加工してggplot2する。http://sapporomkt.blogspot.jp/2017/08/rstarwarsdplyrggplot2.html 

RESASの不動産取引データでheatmapを作ってみた。
http://sapporomkt.blogspot.jp/2017/05/resasheatmap.html 

RESASデータを「IBM Data Scientist Workbench」でゴニョゴニョしてみた。
http://sapporomkt.blogspot.jp/2017/05/resasibm-data-scientist-workbench.html

ggplot2でクロス集計的に複数グラフをプロットする方法 
http://sapporomkt.blogspot.jp/2016/11/ggplot2.html

R開発環境が無料で簡単導入!「Data Scientist Workbench」を使ってみた。
 
http://sapporomkt.blogspot.jp/2016/10/rdata-scientist-workbench.html

(Bluemix)知ってた?dashDBってTwitter分析にもツカエルのさ(+ちょっとだけコンサドーレ調べ) 
http://sapporomkt.blogspot.jp/2016/07/bluemixdashdbtwitter.html

RMeCabで形容詞の形態素解析をやってみた。 
http://sapporomkt.blogspot.jp/2016/07/rmecab.html

【R言語】今年は、leafletでマップをグリグリしたい。 
http://sapporomkt.blogspot.jp/2016/01/rleaflet.html

(R言語)当ブログアクセス者の興味関心事をコレポン(コレスポンデンス)した。
http://sapporomkt.blogspot.jp/2015/12/r.htm

2019年7月11日木曜日

自動でAIモデルが出来ちゃう〜Watson Studio AutoAI Experiment

今回は、Watson Studio上で、自動でAIモデルが作成可能な「Watson Studio AutoAI Experiment」を試してみます。
最終的には、下記のようなアウトプットが数クリックで作成可能です。



「AIモデル」と聞くと、「うわっ、難しい!」と思うかもしれませんが、本当に、本当に簡単に作成できます。

前回までの経緯については、下記エントリーをご覧ください。

SPSS Modeler flowのモデルをWebサービスとしてデプロイする
https://sapporomkt.blogspot.com/2019/07/spss-modeler-flowweb.html

※本エントリーは、私、小田一弥が一個人として勉強を兼ねて記載したものです。私の勤務先である日本アイ・ビー・エム株式会社の見解・見識ではない、個人としての記載内容としてご覧ください。  



AIモデル作成までの手順


1.データのアップロード
前回までの作業で、Watson Studioの「Data Refinery」で加工したデータがData Assetsにあると思うので、そちらを使って頂いても大丈夫です。

私の場合、データ加工後、ファイル名を指定せずに保存したため、「xxx.csv.xxx.csv」のようになってしまい、「AutoAI」のRunがStopしたので、リネームしたものをアップロードし直しています。




2.「AutoAI」を追加
右上の「Add project」から「AutoAI」を追加してください。



3.「Asset name」にモデル名を入力する
前述画面からCreatを押すと下記画面になるので、「Asset name」にお好きなAIモデル名を入力してください。



4.Assetを選択する
画面上は、ちょっと裏に隠れてしまっていますが、「Select from project」からAssetを選択してください。




5.予測したい変数を選択する
予測したい変数(目的変数)を選択します。今回は、クルマの受容性である「Class」を選びます。
なお、予測したい変数が「Binary Classification(二値分類)」であれば、このまま進んでOKですが、Classのフィールドは値が4種類あるので、「Edit prediction」を選んでください。



6.「Multiclass classicifation」を選択する
「Prediciton type」で「Multiclass classification」を選択してください。「Optimized metric」はそのまま「Accuracy」でOKです。



7.「AIモデル作成」を待つ
前述画面の「Apply」を押すと、なんと、もう、AIモデル作成がスタートします!
ナニコレ、簡単過ぎるっ!




8.AIモデルを保存する
5分程度待つと、作成されたモデルが表示されるので、「Save as model」を押して保存してください。



なお、「Pipeline」をクリックすると、モデルの詳細を確認することができます。





作成したAIモデルは、WEBサービスとしてデプロイも可能です。
一階層上(Project)にリンクで移動すると「Models」に先ほどのAIモデルが表示されるので、Deployしてください。



















また、作成したPipelineからAIモデルの精度に関する情報も確認可能です。























今回も相当長いエントリーになってしまったので、Deploy後のテストなどは省略しましたが、Qiitaなどにjsonの記載内容なども纏まっていますのでご興味ありましたらお試しください。


ご参考:その他のWatson関連エントリー


SPSS Modeler flowのモデルをWebサービスとしてデプロイする


(無料)Watson StudioでSPSS Modeler flowの決定木を動かす

(Watson)Personality InsightsのJSONをR言語でパースしてみた

Watson Studioの「Data Refinery」機能で「馬の疝痛(せんつう)」データを眺めてみた。
https://sapporomkt.blogspot.com/2019/06/watson-studiodata-refinery.html

Watson AnalyticsとMeCabで「老人と海」を軽く可視化してみた。
https://sapporomkt.blogspot.com/2017/08/watson-analyticsmecab.html

Watson Explorerでディズニーの人気作品をテキストマイニング
http://sapporomkt.blogspot.jp/2017/04/watson-explorer.html

いま話題のIBM「Bluemix(ワトソンくん)」が「老人と海」をサマったら。
http://sapporomkt.blogspot.jp/2015/11/ibmbluemix.html

2019年7月2日火曜日

SPSS Modeler flowのモデルをWebサービスとしてデプロイする

前回、「Watson Studio」上の「SPSS Modeler flow」で決定木(decision tree)を作成しました。
せっかくなので、Webサービスとしてデプロイしてみます。
今回も、前回同様、無料で作成できます。

前回エントリー:(無料)Watson StudioでSPSS Modeler flowの決定木を動かす
https://sapporomkt.blogspot.com/2019/06/watson-studiospss-modeler-flow.html


※本エントリーは、私、小田一弥が一個人として勉強を兼ねて記載したものです。私の勤務先である日本アイ・ビー・エム株式会社の見解・見識ではない、個人としての記載内容としてご覧ください。  

デプロイまでの手順


1.決定木モデルの保存
「Analysis」ノードの右上にある「・・・」メニューから「Save branch as a model」を選択してください。


2.「Watson Machine Learning service instance」をクリック
「Watson Machine Learning service instance」が無いと表示された方は、当該リンクをクリックしてください。



3.「Watson Machine Learning service instance」をCreateする
画面が切り替わりますので、下までスクロールして「Create」ボタンを押してください。


4.「Confirm」をクリック
instanceを置くRegionなどを聞かれますが、そのまま変更なしで「Confirm」を押してください。


5.「Model name」を入力する
モデルの保存画面に切り替わるので、「Model name」に判別しやすい名称を入力してください。
Saveが完了しましたら「Close」ボタンを押してください。






6.Webサービスとしてデプロイする
Modeler flow画面に戻りましたら、一つ上の階層に移ってください。


「Modeler flow」のパートに作成したモデルが表示されているので、「Deploy」を選んでください。
切り替わった画面で「Add Deployment」を押してください。



7.デプロイするサービス名称を記載する
デプロイするサービス名称を記載してください。



8.デプロイ完了まで少し待つ
デプロイが完了すると「DEPLOY_SUCCESS」と表示されますので、少々お待ちください。
完了しましたら、NAME欄のデプロイ名称をクリックしてください。




Overviewを見ると、無事にデプロイされたことがわかります。


9.テストのためのjsonをアップする
「Test」タブをクリックし、テストのためのjsonをアップします。


下記のテストデータを貼り付け、「Predict」ボタンを押してください。

{"fields": ["buying","maint","doors","persons","lug_boot","safety","class"], "values": [
["vhigh","vhigh","2","2","med","low","unacc"],
["vhigh","vhigh","2","4","med","low","unacc"],
["vhigh","vhigh","2","4","med","high","unacc"],
["vhigh","vhigh","2","4","big","low","unacc"]
]}


右側に、「予測値」と「確信度」がjson形式で返ってきました。
ここまでコンソールもコマンドも使わず、全てGUIだけでWebサービスとしてデプロイ出来たのはとても便利だと思います。
皆様もご興味ありましたら、是非、お試しください。

















ご参考:その他のWatson関連エントリー


(無料)Watson StudioでSPSS Modeler flowの決定木を動かす

(Watson)Personality InsightsのJSONをR言語でパースしてみた

Watson Studioの「Data Refinery」機能で「馬の疝痛(せんつう)」データを眺めてみた。
https://sapporomkt.blogspot.com/2019/06/watson-studiodata-refinery.html

Watson AnalyticsとMeCabで「老人と海」を軽く可視化してみた。
https://sapporomkt.blogspot.com/2017/08/watson-analyticsmecab.html

Watson Explorerでディズニーの人気作品をテキストマイニング
http://sapporomkt.blogspot.jp/2017/04/watson-explorer.html

いま話題のIBM「Bluemix(ワトソンくん)」が「老人と海」をサマったら。
http://sapporomkt.blogspot.jp/2015/11/ibmbluemix.html