ただいまMWさんは、フリーランスの立場で働ける仕事を探してます。MWさんのスペックは以下の通りです。
年齢 : 34歳 実務経験 : 10年強 契約形態 : 応相談 希望金額 : 80万〜/月を目処(契約内容、リスク、仕事内容によって変動) 希望職種 : 自然言語処理 / データマイニング / 全文検索 作業開始可能時期 : 11月1日〜
以下、MWさんがこれまでにやってきた仕事の内容について、希望職種に近い箇所だけ説明させて頂きます。分野ごとに分類してありますので、必要なジャンルのみお読みください。
興味を持たれた企業のご担当者様は、下記のWebフォームかTwitterよりお問い合わせください。
とある研究所でWebマイニング系の仕事を3年ほどやってました。
評判抽出や特徴的な事象の発見、ソーシャルサービスでのユーザとURLの関連を利用したレコメンドサービスなどを手がけてました。守秘義務があるので詳しい話はできませんが、3年くらい前にGunosyに近い(ユーザ間の共起、文書類似度、発生時期を元にしてURLを距離空間に配置するみたいな)アプリを作ったりもしました。研究用なので世には出てませんが。
Webマイニングというと、いかにもデータマイニングの仕事という感じがしますが、ご存知のように良い結果を出すにはデータの力が支配的です。より手早く結果を出す為に、労力の8割はクローラの作成とその運用に注ぎ込み、空いた時間であれこれ手法を試す、といった時間配分になることが多かったです。なので手法自体についてはそれほど凝ったことをしていたというわけでもありません。集めたデータから「えいやっ」と特徴量選択して、回帰分析して、結果を評価する。そんな日々でした。
もう1つ別件で、ソーシャルサービスにおいてユーザが発信したテキストの傾向(名詞ではなく助詞、助動詞、接続詞などに着目)をクラスタリングして、ゆるやかな性質・傾向を利用したレコメンドをするアプリを開発したことがあります。精度は当然高くはなりませんが全く傾向が出ないというわけでもなく、ユーザが入力した数十文字のテキストがあればレコメンドができたので、使い方次第では面白い試みかなと思いました。
利用していたツールとして、Rはドラ○もんが描けるくらいまでは使いました(これがRの正しい使い方です)。
Mahoutは夏目漱石と紫式部を分類できる程度に使いました。あとLiblinearはちょこちょこ使ってます。手軽で便利なので。
Hadoopは0.20=1.0の頃ですが、10台構成のを作ってえっさほいさとMapReduceしていたことがあります。自前でScalaからHadoopを使うライブラリを書いて処理してました。当時はまだ若かったので(2年くらい前ですが)、22世紀の大地はScalaでできているはずだと考えていました。プログラマってたまにそういう気持ちになることありますよね。今でも半分くらいそう思ってますが。
仕事でテキストを扱うことが多かったことから、自然言語処理についてもやる機会は多かったです。特に形態素解析についてはそこそこ専門的に利用してました。
MeCabについてはコマンドラインでの利用、辞書のカスタマイズ、コスト計算等、細かいところまで抑えるような使い方してました。Kyteaのソースを読んだりもしました。最近はDeep Learningで読み推定とか形態素解析をするライブラリがいつ出てくるのか楽しみに待ってます。DBNでKyTeaみたいな点推定をするとかならTheanoと戯れているうちにできそうな気もしますが、論文とか見てるとRecursiveなことをやってることが多くて、それってどうやって実装するのかとかは不勉強でさっぱりわかっていません。良いライブラリが出たらソース読みたいです(人任せ)。
自前でMeCabの辞書を作ったりもしてました。「的」とか「語」とか接尾語をすべて接尾語で扱う感じの辞書とか作ったんですけど、残念ながら精度は今ひとつでした(仕事で作ったので公開はされていません)。現在出回っている辞書は全文検索というジャンルにはあまり向いてないように見えるので、Kuromojiのような文字列長でスコアを調整するアプローチも1つの手ですが、辞書そのものに対してもっとアプローチしたいなという希望があります。
主にテキスト解析のお供に利用していました。単語の出現数が欲しいと思った時に、大量のデータでも一瞬で結果が出るところが良いです。MoreLikeThisで類似文書を取る機能も愛用してました。
使っていたのは3.1〜3.6くらいの頃です。4系はまだ触れていません。Soft Commitについては、3.5の時に自前で3台構成作って1台はin memoryのインデックスで最新のデータだけ持ち、2台はハードコミットで交互にoptimizeするようなことをしていたので、だいたいそれと同じ気持ちでいけるかなぁと思ってますが、SolrCloudについては一度ちゃんと調べないとなぁと思ってます。特に落ちた時の動きとか。
Solrを使う時は基本、SolrJで操作してます。Slickがもう少し落ち着いてきたら、ORMでSolrを使えるようにしてみたいですね。ORM経由でSQLiteを使うのと同じ感触でEmbeddedSolrServerを操作できるようになったら、けっこうグッと来ると思うのですよ。その用途なら普通にLucene組み込んどけばいいじゃないと言われればそうなんですが。
Luceneについてもフィルタの動きを追いかけたり、Analyzerをカスタマイズしたり(3.6が出たせいでモノ自体は無駄になりましたが)、バイナリデータにも少し目を通したりと、そこそこにちゃんと見ています。LuceneのインデックスはMahoutから扱うこともできるので、その辺も自分が好んで利用している理由の1つです。
最近は英語が必須の職場も増えているので、英語力についても懺悔します。
読む能力については問題ありません。普通に洋書を読むこともありますし(Mahout IN ACTIONとか、Lucene IN ACTIONとか、Solr IN ACTIONとか読みました。あれ、IN ACTIONばっか?)、最近はニュースももっぱら英語で読んでます。IT系の記事であればさらっと読めます。あとF1のニュースもスラスラ読めます(Minardi、Simtek、Brabhamなどの単語が出てきても戸惑いません。但しTaki Inoueという言葉が出てきたら二度見します)。ジャンルが違うニュースを読む時は少し苦労します。Snowdenのニュースとかはasylumとか馴染みのない言葉が多くて辞書なしでは読めません。
あと、英訳された少女漫画をいくつか読んだことがあるので、女性と話す上で必要な言葉もマスターしています。とりあえず You are so adorable. I have a crush on you. Would you go out with me? とか言ってればいいんですよね。自分が読んだ漫画の登場人物は、だいたいそんなことばっか言ってました。
聴く方は微妙です。早口だとさっぱりです。ゆっくり喋ってもらえばそこそこ聴き取れると思います。話す方は絶望的です。必要であれば英会話教室に駆け込んでなんとかします。
MWさんは文章を書くのが趣味です。2冊ほど本を出版したこともあります、システム開発の不真面目な辞典と、Web系の真面目な辞典の2冊です。どちらも出来はあまり良くないのでここでの紹介は控えます。もう1冊出す予定があって、暇を見つけては書いているのですが、最近暇が少なくいつ出せることやらという感じです。担当者様、遅れててすいません。ホントすいません。
Webで書いてるものだと、以前書いたプログラミング言語の紹介に関する記事は、なぜか多くの人から見られているようです。あとは文学をIT系に改変した文章を書いたり、捏造用語辞典を作ったりと、妙な文章をいろいろ書いてます。
こういった人の目を引きやすい文章を書くエンジニアをお求めの企業様には向いている人材ではないかと思われます。但し冗談なのか本気なのかわかりづらい表現を使うことが多く、誤解を招くことも多々有るので、信用のある企業様用の文章を書くには向いていません。
1〜4は希望職種に関わることなので詳細に書きましたが、他はどうでもいいのでさくっと。
まず、JavaのWeb開発はよくやってました。Javaは金額が良い案件が多いですね。PHPもちょこちょこやりました。昔はmojaviとかsmartyとかでやってて、今はCakeです。RubyとRailsもちょこちょこやってます。好きなWebフレームワークはPlayです。ViewやFormに対しても型セーフであろうとする姿やDBを操作する最も優れたDSLはSQLであるというAnormの(長くなるので以下割愛)
C++はIEツールバーを作る仕事とかしてました。Cはメールサーバーのパッチ書く仕事しました。PythonとかPerlはちょっとしたバッチを作る仕事で使いました。VB6もやってました。C#のWebアプリを改修する仕事も少しやりました。JavaScriptはけっこう長く触ってますが、今でも何が正解なのかわからなくなる時があります。C++ほどではないですが。
フリーランスとして1人で仕事を請負っている都合上、営業→要件定義→設計→実装→試験→構築→納品→保守まで1人でこなしています。サーバ立てたり監視したりとかも自前でやります。IT系なんでも屋ですね。1人プレイを続けていると神経が磨り減るので、チームで開発している現場にお邪魔して仕事を手伝うようなこともしています(こっちの方がやってる期間は長いです)。今回はどちらのタイプのご依頼もお待ちしております。
仕事で使うマシンは基本Linuxです。WindowsもMacも使いません。自宅ではMS Officeの為に1台Windows端末を確保はしてますが、他はすべてLinuxです(Androidも仲間に入れて良いよね)。ディストリビューションは1つの派閥に染まって他が使えなくなると困るので、CentOS使ったり、Fedora使ったり、Ubuntu使ったり、Mint使ったしてます。つまり2つの派閥しか使ってないってことですが、仕事で他と当たることはほとんどないので、まぁ良いかなと。