メニュー

技術ブログ

Denso IT Lab.社員による技術情報の紹介

Denso IT Laboratory researcher's blog sites

数式

RSS

ページトップへ

SIGNL213

2013/9/12-13に山梨大学甲府キャンパスで開かれた情報処理学会自然言語処理研究会で研究報告をしました.

内容は教師なし・半教師あり形態素解析の話で,これまでやられていなかった分かち書きと品詞推定を同時に獲得しようというものになります.
言語処理に関わる者として,一度は自分なりの形態素解析を作ってみたいと思っていましたがその第一歩となります.


はじめたばかりの研究ですが,皆様から頂いたコメントを反映させつつ発展させて行こうと思います.

このエントリーをはてなブックマークに追加

「第4回 データ構造と情報検索と言語処理勉強会」聴講

昨日、渋谷のVOYAGE GROUPさんのセミナールームで「第4回 データ構造と情報検索と言語処理勉強会」があり、初めて聴講しました。日頃、気になっているけど、自分で勉強する時間がない、という内容の発表がいくつもあり、とても参考になりました。

VOYAGE GROUPさんのオフィスのデザインは、非常に斬新で、楽しいムードを作っていて、創造性が高まりそうだと思いました。

今回、10件の発表がありました。全体の司会は、LINEでブログ開発をされているという@overlastさんがされていました。発表も予定されていましたが、マシントラブルの為、懇親会でのLTになったのですが、今回、懇親会には参加できなかったので、話を聴くことができず、残念でした。

1件目は、@torotokiさんが、Scalaの初歩とその自然言語処理ライブラリScalaNLPについて解説してくれました。Scalaは、JVM上で動く関数型言語ということで、個人的にJava好きの私にとっては、非常に興味を感じています。@torotokiさんは、高校生ということで、社会人の方々の前で、堂々と話をされていて凄いと思いました。

2件目は、@shuyoさんが、Active learning(能動学習)に関する入門を、Settlesさんの解説を元に、ベンチマークデータで実行した結果を使って解説してくれました。アノテーションは高コストであり、半教師付き学習が必要であるが、クラウドサービスでドメイン知識に必ずしも精通している訳ではないユーザが効果的に学習データ作成するのが難しい。そこで、能動学習が良いだろうという考え方とのことでした。教師データを作って欲しいデータのクエリ方法は色々とあるが、意外にランダム選択とあまり大差がないという印象でした。但し、教師データを Information density(シンプルにはデータの密度) が高い所から選択すると、効果大きいということでした。また、複数の識別器でアンサンブル学習することの寄与も大きいという感じでした。

3件目は、@maropuさんによる不動小数点列の圧縮という話題です。浮動小数点列の圧縮というのは、数値計算系では一般的らしいが、この分野ではあまり馴染みがないということでした。こういう話題を話す方を見ると、「職人」だな、という印象を持ちます。余談で、浮動小数点の積とかは可換ではない、という小話があり、面白いと思いました。ちなみに、私は前職で地図システム関係の仕事をしていたのですが、地図データでは、ラインストリングやポリゴンデータに、この手の圧縮手法を使っていたな、ということを思い出しました。

4件目は、@slaさんが、SIGKDDでのBest Paperになったという行列スケッチの話を紹介されました。この手法を使うことで、高次元のPCAなどの計算で、次元を非常に低減してから計算できるので、高速になるということでした。所謂、低ランク近似の話かと思いましたが、A*A^Tのような形の計算に限定されているようでした。実装が非常にシンプルで、これは自分も利用してみようと思いました。

5件目は、@Phylloさんが、WFSTの入門について解説されました。転置インデックスとかもWFSTで表現することができるということでした。WFSTは合成することが可能で、合成すると複数のWFSTの計算を一度に出来てしまうので、高速に処理できるようになるということでした。WFSTは、個人的にも今後、勉強したいと思っています。

6件目は、@s5yataさんのダブル配列の豆知識というお題でした。大学でもダブル配列を研究されていたそうですが、これまでに少なく見積もっても10回以上はダブル配列を実装した経験を持たれているということで、一体、どんな人生を歩むと、10回もダブル配列を実装するのか、とtwitteerで話題となっており、面白いと思いました。私は一度も自分で実装したことはありませんが、実装する必要がある人には目から鱗の話だったのだろうと思います。

7件目は、@kumagiさんによるJubatusでのK-NNを高速に処理するために、Locality sensitive hashingを利用する方法について解説されました。詳細はコンフィデンシャルということでしたので、省略します。

8件目は、@shuya_mさんが、口コミマーケティングで、K枚のチケットを効率良く分配するための問題で、劣モジュラ関数が出て来るという話をされました。Kempeさんという方の仕事がベースになっているようでした。この問題での目的関数が劣モジュラ関数になっているとのことでした。ポイントは劣モジュラー関数では、貪欲法でも63%以上の精度(スコアの値が最適値の0.63倍以上)で最適解が求まるということでした。劣モジュラー関数で目的関数が書けていると非常に便利ですね。

9件目は、@just_do_nextさんによるsnowflakeというtwitter社が開発したID生成器(OSSとして公開)を元にID生成のテクニックについて解説されました。ID生成で、良くあるのが数値カウントアップであるが、この方法はスケールしない。一方、UUID RFC4122 の 128bit は大き過ぎる。そこで、snowflakeでは、64bitのlongで表現し、タイムスタンプ(41bit。これで69年は大丈夫らしい)・マシンId・シーケンス番号から生成するとのことでした。このようなID生成の利点は、idだけから時間でソートできること、整数値の圧縮手法を利用可能などがあり、欠点としてはOS時刻のズレに弱い、Thrift経由で生成しないといけない(分かる!)ということでした。@just_do_nextさんご自身は、shakeflakeを開発されているということでした。

10件目は、@komiya_atsushiさんによるレコメンドにおける類似度計算の傾向と対策という話題でした。アイテムベースレコメンデーションで、類似度計算を空間的時間的に最適化したいということでした。ここでも、商品属性と購買ログから作られる特徴ベクトルに対するK近傍探索が使われていました。類似度には、Jaccard係数を使う場合が考えられていました。この計算は、比較的重く、工夫が必要で、(1)ナイーブな方法(bit列化、popcountで効率化)、(2)マージアルゴリズム的にベクトルを走査、(3)転置インデックス、(4)バスケット分析(アソシエーション分析)、(おまけ)b-bit min-wise hashing(近似的な特徴ベクトルに落として計算)という手法を紹介されました。MovieLensのデータ(10M)でそれぞれの方法を比較され、転置インデックス、バスケット分析が速いということでした。ナイーブ法も実装の単純さを考えるとまあまあということでした。

このように、聴講した内容とまとめてみると、濃い内容の話ばかりであったと改めて思いました。ありがとうございます。講師陣の方々、運営の方々、ご苦労様でした。

このエントリーをはてなブックマークに追加