2012-02-08
日本語入力を支える技術、本日発売
発売ですよ、というだけではアレなので、日本語入力と私、という題目で自分語りでもしてみようかと思っていました…が、時間もないのでそれはまた今度にして、細かなトピック選択について少し触れてみようかと思います。(写真は昨日既に入荷していたジュンク堂池袋店です。右上に見えるプログラミングコンテストチャレンジブックもオススメ!)
データ構造については、カッコウハッシュ、ダブル配列、LOUDSを選択しました。カッコウハッシュはやや唐突な感じがしますが、本当はfujimapまで紹介してfalse positiveを許すとサイズが小さくできるねー、とかやりたかったのです。fujimapをボツにしてしまったので、結果としてカッコウハッシュはちょっと浮いてしまったかなと思います。ただ、面白いデータ構造なので知っといて損はないでしょう。ダブル配列、LOUDSあたりは選択としては特に異論もないところかと思います。しかし、LOUDSは平易に説明しようとするとものすごく大変で、かなり苦戦しました。うまく説明できたかわかりませんが、とりあえず現時点でのベストは尽くしました。
学習系に関しては、当初は確率的言語モデル→構造化SVM→CRFの順に説明を書いていたのですが、確率の説明がやっかいなことから、構造化SVM→CRF→確率的言語モデルの順番に変更しました。つまり、確率が出てくるのはできるだけ後回しにしたかったし、確率が出てきたとしてもベイズの定理とか使うのは後ろの方にしたかったのです。構造化SVMは前向き後ろ向きアルゴリズムが要らないし、オーバーフローとかアンダーフローとかあんま気にしなくても動くし、良い手法だと思っています。確率値が出せないけどね。最適化にFOBOSを使ったのは、目的関数があって劣微分が定義できたら使えるので汎用性が高い点、実装が簡単である点を評価しました。他にも条件を満たす手法はきっとあるとは思いますが、要件は十分に満たせているので今回は(自分の中で)定評があるFOBOSを使いました。
その他、隠れマルコフモデルについてはスライスサンプリングでパラメーター推定を行う説明とか書いていたのですが、これ書いてたら発売が半年伸びるなと思って途中でボツにしました。
とにかく、学生時代の自分が知りたかったことを今の能力で出来る限り噛み砕きつつ詰め込んだので、誰に読ませたいかというと、一番読ませたいのは過去の自分です。タイムマシンがあったら、一冊過去に送りたい。
- 日本語入力を支える技術 技術評論社の公式ページ
- 日本語入力を支える技術という本を書きました 数日前に書いた告知記事
- Amazonのページ アフィリエイトIDなし
- Amazonのページ アフィリエイトIDあり
- 楽天ブックスのページ
- セブンネットショッピングのページ
2012-02-03
日本語入力を支える技術という本を書きました
(追記):「この本に書かれていないこと」という項を追加しました。
以前も告知しましたが、日本語入力を支える技術という本を書きました。技術評論社から2012年2月8日に発売されます。(私の知っている限りでは、ジュンク堂池袋店、有隣堂AKIBA店、丸善丸の内店、書泉ブックタワーでは既に先行販売しているよう…でしたが、ジュンク堂池袋店、有隣堂AKIBA店、書泉ブックタワーは先行販売分は売り切れの模様です。)どんな本なのか、目次などについては公式ページを参照していただくとして、以下ではどんな本なのか宣伝したいと思います。
この本のキーワードは「実装」と「初心者向け」です。初心者でも実装ができるようにサンプルコードを多用し、また数式が出てくる部分に関してはちょっとしつこいぐらいに説明を加えました。私自身の経験からすると、本を読んだで理解したと思っていても、大抵の場合、細かいところはわかっていないものです。実際に自分で作ってみることは、そういった理解があやふやなところを浮き彫りにするにはとてもよい手段です。本書を読んだ人にはぜひ、実際にプログラムを書いていただきたいです。一度書いてみると、以後その分野については想像力が大幅に増しますので、そのような観点からも、書いてみることは重要です。
ここがポイント
- 日本語入力の歴史を説明する部分は地味にがんばっていて、九州大学の栗原教授の論文まで確認しました。NHK技研の相沢, 江原らの論文は、入手するためにNAISTの小町さん経由でNTTの永田さんを紹介していただき、さらにそこから山梨英和大の江原さんを紹介していただいた、というような複雑なルートをたどったりしました。そうやって頑張った割には、ちょっとしか書いてないけど…。あと、MS-IMEやATOKに関しては、MicrosoftやJust Systemの人にお聞きした知識が入っています。
- データ構造に関して、特にLOUDSを使ったトライを紹介しているような日本語で書かれた書籍はまだ他にないはず。
- ビタビアルゴリズムについては動的計画法とかメモ化再帰とかをからめて詳細に説明しました。ちょっと詳しすぎるかもしれない。すいません、書きたかったんです。
- 機械学習に関して、構造化パーセプトロンや構造化SVMを説明している書籍はまだないはず。また、CRFについても前向き後ろ向きアルゴリズムの説明に6ページ使うとか、かなり力を入れて紹介しました。
上記の通り、日本語入力を軸として、いくつかのトピックが詰め込まれています。大雑把に構成を説明すると、日本語入力の話がまず最初にあって、その後は日本語入力を実現するための要素技術としてデータ構造と機械学習についての説明がある、というような感じです。
こういう人にオススメ
- 日本語入力に興味がある人
- 日本語入力について歴史から実装まで、一通り知ることができます。日本語入力の技術的なところにまで突っ込んだ本って、たぶん今世紀初なはず。
- 自然言語処理に興味がある人
- 機械学習に興味がある人
この本に書かれていないこと
- 文字入力用のAPI(IMMとかTSFとか)については、概念は紹介していますが、具体的な説明は書いていません。具体的なAPI仕様はOSによって変わるし、同一OSでもバージョンによって変わってくるからです。
- 歴史的な用語などについては、有名なものは紹介してありますが、やや手薄です。
- 個別のかな漢字変換エンジンの話はあまり載っていません。ある程度ページを割いているのはATOK、Microsoft IME、Google日本語入力、Baidu IMEの4種類です。詳しい中身はわからないので、全部あわせても数ページ程度の紹介です。
- 日本語の文法の話についてはほぼ触れていません。もちろん、実用的な物をつくろうとすると日本語そのものと向き合うことはどうしても避けられないのですが、それだけで一冊の本になってしまうこと、今の私には書ききる力が無いことから、バッサリと省略しました。
感謝
謝辞にも書きましたが、多くの方にレビューしていただき、多くの改善がなされました。特に小町さんには全体にわたって何度もチェックしていただきました。レビューによるクオリティの向上は通常どれぐらいのものなのかはわかりませんが、この本に関して言うと相当な向上が行われました。大変感謝しております。もちろん、残った間違いやわかりづらい部分は筆者の責任です。
また、すでに何人かの方には 宣伝 して いただいて おり、ちょっとハードル上げすぎな感もありつつ、感謝しております。また、ステマと言いながら全然ステルスではない宣伝をしてくださった 皆 様 にも感謝しております。
リンク
- 日本語入力を支える技術 技術評論社の公式ページ
- Amazonのページ アフィリエイトIDなし
- Amazonのページ アフィリエイトIDあり
- 楽天ブックスのページ
- セブンネットショッピングのページ
2012-01-25
2012年あけましておめでとうございます
やっと一息ついたので。
2011年振り返り
- 余暇の時間はほとんどを本の執筆に使った。
- 余裕がなかったせいでやると言っていてやらないといった不義理があったので、キャパオーバーな状態にある期間を減らしていきたい。
- 無茶なことを引き受けて精神を消耗するみたいな事例がいくつかあったので、積極的に断る力を発揮していきたい。
2012年の目標
- 英語
- ダイエット
- bell
- コードを整理して公開する。
- dual decomposition(を使ったargmaxの素敵な求め方)
- MCMC
- suffix array
- multi key quicksort, dc3, saisあたりを実装してみたい。
- Goliath
- raphael.js
- MathJax
- web系技術勉強の一環として勉強する。
全部ちゃんとできるとは思えないし、心の平穏も大事なので、ぼちぼちやっていこうと思います。
2012-01-03
2011-12-13
第2回DSIRNLP勉強会で発表してきました
佐藤さんに誘われてDSIRNLP勉強会で発表してきました。
最近社内で高村本輪講をやっていて、自分自身改めて良い勉強になったこと、以前TokyoNLPでランク学習の話をした際にはもしかしたら聴衆の半分ぐらいを置き去りにしてしまっていたのではと最近気づいたことなどから、今回はSVMって案外怖くないよね、みたいなことを順を追って説明してみる話にしてみました。既に知ってる人にとっては明らかに退屈な話だったと思いますが、分かりやすかったで賞的なものをいただけたので、わかりやすく、というところはある程度うまくいったのかなと思います。
発表資料はspeakerdeckに上げました。→機械学習と最適化の基礎
- 他の人の発表の最中に資料を作ってるとどうしても話が半分ぐらいしか聞けないので事前に作ってくるべき。
- ただ今回は風邪のせいもあり仕方がなかった。
- nokunoさんにmacbook air借りれなかったらやばかった。スライドをPDFにできていたのはポータビリティの点で良かった。
- 5ページ目ぐらいでちょっと話が飛びそうになって一気に緊張して、そこから先は聴衆が見れなかったというか見たらやばいと思い見なかった。
- 見てもっと緊張するよりは良かったが、聴衆を見て話せるようになるべき。
- 大域的最適が言いにくいことはわかっていたので、別の言い方を考えておけば良かった。最初の1回以外はグローバル最適とかで良かった。
- 自分にパクリの意図がなくてもそう取られる可能性がありそうなところがあったら出展をつけておくべき。
- 受けたところで時間を稼いで発表に意識を向けてもらおうとするのは逆効果。さっさと流そう。
- 最後の方は説明不足過ぎて前提を知らない人にはわからない話になっていた。後1枚ぐらい説明があるべきだった。
mixiさんの自販機でレッドブル買ったらTwitter上であれだけレッドブル好きアピールしている@kisa12012に「えー、(僕は)休日は飲まないですよ、だって健康に悪いじゃないですか」と言われてしまい、はしごを外された気分でした。まぁでも確かに健康に良い飲み物ではないよね、甘すぎる。
hitoshi_niさんとは「人は老害になるのか、老害として生まれてくるのか」みたいな話をしたりしていました。
後はNegative/Positive Thinkingの中の人が分かってよかった。1年目でこの実装力、この理解度というのが恐ろしい。将来が楽しみです。
2006 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 02 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2012 | 01 | 02 |