2010-09-02
■ 自然言語処理とデータ構造
大規模なデータを触ろうとしているのだが,数十MB越えると, さすがにboost::serializationでは厳しくなってきた. ローディングが終われば普通に使えるが,さすがに1分もロードにかかるのは避けたい.
ものは試しと,一部をランダムアクセスできるようにすると,すごく早くなった. もう少し改善しよう.
大学院入学前に,学部でも「データ構造とアルゴリズム」という授業を受けたのだが, これからの専門に進んでも,正直あんまり関係ないだろうなと思っていたのだが,全然そんなことなかった.
自然言語処理でも大規模にしていくと,ナイーブな方法では処理が全く追いつかなかったり, 記憶容量が爆発的に増えたりと,色々と工夫しないといけないことが出てくる. 話としては,去年の秋くらいから,ちょこちょこ耳にしていたのだが, 実際に自分がその問題にぶちあたると,いかに重要かが分かる.
岡野原さんのスライドを見たりして勉強したりしている.
あの授業は面白くなかったです。
門外漢からのコメント失礼します。
言語ってそもそも他人と共有しているという妄想の下にしか成り立たないものだ、という哲学的な問題を抱えています。
これを情報として処理する場合も、それゆえ、大規模なデータを扱うことを避けられないのだろうと推察します。人々が扱っている現実に依存してそのルールないし特徴が見えてくるはずだから。
大変な研究分野ですね。。
技術的にどう解決すればいいのかは全く分からないし、どういう「大規模なデータ」を用いているのか分からないけど、扱うデータは正確分けできそうですね。例えばツイッターに出てくる言語と、裁判所の判決文に出てくる言語には、文法的にも有意な差がおそらくあります。
頑張ってね!
>Jota
確かにあれは……
言語処理のためのアルゴリズムって結構色々有って,工夫も随所にあっておもしろいよ!
>>いたもちさん
(大雑把な説明ですが)大規模なデータ,例えばweb上にある文書から数十億文を扱うことで,統計的処理をすることで,ある種の「知識」を得ることができるようになります.
例えば,「食べる」という語の目的語には「食べ物」が来やすいといったような.
どのような種類の文書を使うかによって,変わってくるというのは,おっしゃる通りで,分野の違いによる差をどのように処理するか,などもここ最近ホットな話題です.
ただ,自由に使える大規模なデータというのは,意外となかなか少ないので,まずは集めるところからですね.
がんばります!