インターンシップ SVMの学習によるSNS男女判別プログラムの作成

東京都立産業技術高等専門学校 ものづくり工学科 電子情報工学コース

実習先 Shannon Lab 株式会社

1. はじめに
今回のインターンシップにて、私が行ったのはShannon Lab株式会社である。このShannon Lab株式会社は2011年12月7日に法人設立したベンチャー企業である。会社名は情報理論の父と言われる数学者・論理学者のクロード・シャノン氏にちなんでいる。
この会社では、欧米で広く普及している言語「Python」を駆使したプログラムの開発がされており、特に情報の整理、予測を行う人工知能技術の開発が行われている。
今回の実習では、人工知能という訳ではないが、先に述べたPythonを使用したプログラミングを行った。具体的なプログラム内容としては、「SVMを使用し、twitterのツイートから、男女を判別する」というものになっている。
「SVM」とは「Support vector machine」の略称で教師あり学習を用いる識別手法の1つ。2種類のデータを学習させることで図1のような分類を行う。ここに判定したいデータを与えることで、どちらに近いか判定し結果を返す。

SVM
図1 SVMのイメージ図
これは、会社の代表取締役である田中様からの提案で、とある論文を元にした実験である。その論文では、文章を使った同様の実験で70%以上の確率で分類に成功していたので、使用するデータを文章ではなくtwitterのツイートにした場合どうなるかを検証する、というものでした。
今回の実習で私が目標としたのは、実験の成功だ。勿論、論文と同じように高確率で成功するのが望ましいが、プログラムが出来上がらないままインターンシップ終了の可能性もあり、それだけは何としても避けようと思った。
2. 実習内容
私は今回のインターンシップではまとめ役として、他の3人より1週間早く実習を始めた。
一週目は他の3人が来る前に、実習環境の把握と準備を行った。具体的には、Wi-Fiの準備や他の人が行う実習の中身の簡単な把握などを行った。
二週目は前任のインターンシップ生等が作成したプログラムの改変を行った。改変を行ったプログラムは大きく2つあり、1つ目は文章から指定した品詞の単語を取り出す形態素解析エンジンMeCabを使用したプログラムで、2つ目はtwitterからidとツイートを取得し、選定した上で自動的にフォローするプログラムである。
この週は特に進みが遅く、与えられたタスクを消化しきれずに次の週へと進むことになった。
三週目は本格的に実験のプログラム作成を行った。基本的には二週目で改変したプログラムを1つにまとめていき、必要なプログラムを追加していく作業になる。
具体的には、男女別に分けたidを使いtwitterからツイートを取得、それをMeCabで単語ごとに分解してそれをデータベースに格納するまでを、二週目のプログラムで行い、それらをデータベースから取り出しSVMに学習させ、結果を出すプログラムを追加する。

ツイッター SVM
図2 プログラム構成のイメージ図
この週は特別遅れることなく、プログラムの完成まで行くことが出来た。
3. 結果と考察
結果として、これらのプログラムは一応完成した。これにより、事前に設定した目標は達成できた。しかし、正答率は50%弱とかなり低かった。
この結果より、以下のことを行えば成功率をより上げることが可能かもしれないと考える。
まずは、プログラム全体の見直し及び修正である。一週間ほどでまとめたプログラムなので、まだまだ欠陥がある可能性がある。また、データの取り扱いなどをより改善すればより良い結果が得られるかもしれない。
次に考えられるのは、学習データの追加及び精査である。今回のデータの収集は一週間で約800人分のidを取得している。本来ならば、この倍は収集する予定だったのでより多くのデータがあれば、成功率の上昇を見込めるかもしれない。またデータ収集の際、アカウントが男性か女性かを判断しなければならないが、今回はアカウントのプロフィールから男性か女性かを推測するという形をとっていたので、より精査した方が良い結果が得られるのではないかと考えられる。
もう一つ、これについては難しいところがあると思うが、取り出す単語についても考えるべきだと思っている。品詞によっては、かなり特殊な単語がデータとして収集されている可能性がある。逆に、現在使っている品詞の他に男女の差が分かりやすいものがあるかもしれない。
今後の方針としては、プログラムの確認は勿論だが、収集する単語やTwitter idについて精査していくべきだと考える。
この為に、収集した単語を品詞ごとに判定し、結果を評価してみるといいかもしれない。
4. まとめ
今回のインターンシップで、私はShannon Lab株式会社で実習を行い、以上のような結果を得ることが出来た。

(a) インターンシップに参加した感想
今回のインターンシップは皆より一週間早く実習が始まり、二週目では中々作業が進まず悩んだ。しかし、最終的にいい結果とはいい難いが、自分の全力を出して仕事を最後までやり遂げられたので、自信が持てるようになった。
まとめ役としても、一週目は情報の共有や会社の人との話し合いなど仕事はこなせていたが、二週目以降は自身の作業の遅延からほぼ機能していなかった事から、まとめ役というのが予想以上に難しいと感じた。
今回のインターンシップは、自身の能力を見る良い機会になったと思う。また、会社の方々から興味深いお話を沢山伺うことが出来たので、全体的に満足している。
(b) 後輩へのアドバイス
Shannon Labのインターンシップでは、自分で考えてプログラムを組んでいくことが多かったので、そういう事に慣れておいた方がいいと思う。また、言語はPythonを使うので、事前にある程度使えるように慣れておくことをお勧めする。
不明な点があれば、すぐに社員の方に助言を貰った方が良い。社員の方たちはいい方ばかりなので、ちゃんとアドバイスをくれる。
他にも、社員の方から就職等で役に立つお話を伺えるかもしれない。さらに、何かイベントのようなものを催してくれる事もあるかもしれない。
これらの点に興味があれば、参加するといいと思う。

Comments are closed.