スーツ姿のプロダクトマネージャー

ITで新しいプロダクトを生み出したいすべての人を応援するブログです。

30過ぎのデータサイエンティスト見習い(3) MeCabとSVMな日々

データサイエンティストとして最初に取り組んだのは、文書分類のタスクでした。詳細は書けませんが、こんなタスクです。

  • ラベル付きの文書が大量にあり、現在は人手でラベルをつけている。これを自動化したい。
  • 文書の量も大量にあったが、ラベルの数も数十以上と難易度が高い。
  • ひとつの文書が長く、人が文書のどの部分を見て判断してラベルをつけているのか、実はよくわかっていない。

よくあるタグ付け、文書分類タスク。テキストデータに対する分類モデルを作る話です。

はじめに取り組むにはとても良い題材だったと思います。しかし、アプリケーション開発とはほど遠い世界でした。実験のやり方、コーディング、評価…入口から出口まで七転八倒しました。

f:id:ku2t:20180228173303j:plain

 

ほぼすべての作業でつまずいたのですが、特に困ったのが次のようなところです。

  1. テキストファイル、データの扱い方が分からない。読み込むことすら困難。
  2. 形態素解析のためのツールであるMeCabのハンドリングに四苦八苦。正規表現にふれるのも8年ぶりという状態。
  3. ツールのみならず、自然言語処理の基礎的な知識をつける必要があった。品詞がどうたらこうたらとか、辞書をつくるとかなんとか。
  4. 巨大な次元のデータを扱うことになったが、素直に配列で実装して爆死。スパースマトリックスとか、ハッシュとか、キーバリューストアとか、そんなモダンなデータ構造・管理ツールがあるとは知らなかった。
  5. 分類モデルの構築では、まずベーシックなとこでSVMを使うことに。動かしてみても実感できず、本を読んでも数式だらけで理解できない。
  6. 評価の仕方がわからない。アンバランスなデータなのにAccuracyで評価したり、学習データでの評価結果にぬか喜びしたりして、常識を知らんのかと怒られる。
  7. せっせと1コアで仕事をしていたら遅いと言われる。それで、数十コアを使って並列にやればといわれるが、そんなやり方をしたことがなく途方に暮れる。いよいよ追いつめられて、bashのファイルに実行スクリプトを手書きで50行ほど書いて流す。実験のたびにファイルを書き換えるが、当然ミスがでる。
  8. 精度があがらず工夫を求められるが、ベーシックなチューニング方法すら知らない。SVMのマニュアルを調べて、いろんなパラメータをいじってみるが、本質を理解していないので変な雰囲気になってしまう。
  9. 実験結果を説明できない。先輩に教えてもらってやった結果をもっていくと、その先輩からなぜこれをやったのか、説明せよといわれて大混乱する。
  10. いろいろ途方に暮れて先輩に聞いて見るも、ハイスペックな先輩すぎて言葉が理解できない。参考にと渡された論文は、当然のように英語でアルゴリズムの原論文。初心者にはつらいので、入門書を含めて大量に本をかう。本を読む時間が足りず、睡眠時間がなくなっていく。

データサイエンティストの方から見ると、「冗談キツいよ。なんで転職したの?」と思うことでしょう。私も思いました。

今思い出しても辛くなってくるような毎日でしたが、当時最先端のタスク、技術に触れることは楽しいことでした。AIという言葉が流行る前の時代で、データ分析の重要性が歌われ出した頃です。ビッグデータバズワードになる直前でした。

それは通常のSEでは触れられない世界で、寝不足になりながらも興奮したものです。

 

上にあげた話は、平たく言うとデータ分析とか機械学習モデルの作り方に関するものです。今であれば、包括的で分かりやすい本や記事があるので、初学者でもすっきりした形で習得できると思います。

私のようにコテコテのSEからデータサインティスとを目指すことになった方へ、これを読んだらいいよという情報を別に整理したいと思います。

 

ところで、本当の地獄は本記事の困難を乗り越えた後にやってきたのでした。いかに問題を見つけて、機械学習のタスクに落とし込むかということです。

これを身につけるために、途方もない回り道をしたのですが、次回はこの回り道について書きます。

 

続きはこちら