はじめに

3月8日(月)に「言語処理学会第16回年次大会」が開催されます!言語処理学会年次大会って何?という方もいらっしゃると思うので簡単に解説いたしますと,1年に1回主に自然言語処理学に関するたくさんの発表や講義が行われるカンファレンスです.

自然言語処理学というとなんとくむずかしそう...ってイメージがあるかもしれません.しかし,かならずしも専門的な知識がなくても楽しめる内容がたくさんあるのです!例えば,文書検索やレコメンデーション,テキストマイニングなど最近話題の技術は自然言語処理学の研究成果が多く使われているのです.また,最近では多くのウェブアプリケーションなどでも自然言語処理学の研究成果が使われています.今大会でもこれら加え,とても興味深い研究成果が多く発表されます!

以下に今回の開催内容を書きましたが,これだけのボリュームがあっても,なんと今大会は参加料が無料なのです!ぜひこれを機に自然言語処理学にご興味を持って参加していただける方がいらっしゃいましたら幸いです!

大会開催概要

言語処理学会第16回年次大会は情報処理学会共催創立50周年記念全国大会と共催で開催されます.

NLPlogo_300x100

  • 日時 2010年3月8日(月)~3月11日(木)
  • 場所 東京大学 本郷キャンパス

詳しくはこちらの大会ウェブページをご参照ください.
※ご参加いただく際はなるべく事前予約をお願いいたします.

今大会はミクシィも様々な自然言語処理技術を利用させていただいていることもあり,協賛させていただくことになりました.

プログラム概要

今大会も幅広い分野の発表が行われます.概要の図を示します.
場所や時間を示した詳しい情報はこちらの言語処理学会第16回年次大会 プログラムをごらんください.

nlp2010_program2

招待講演

普段ほとんどお話を聞けるチャンスのない著名な先生による講演です.とても貴重な経験になることと思います!今大会では以下の招待講演が実施されます.

  • 「これからの言語処理とその応用」
    長尾 真氏 (国立国会図書館 館長)
  • 「総合学術オントロジー」
    橋田 浩一氏(産業技術総合研究所 サービス工学研究センター 次長)
  • 「MASTARプロジェクト&ALAGINフォーラム」
    中村 哲氏(情報通信研究機構 知識創成コミュニケーション研究センター 副研究センター長)
  • 「The Challenge of the Multicores」
    Fran Allen女史(IBM名誉フェロー) *チューリング賞受賞者

詳しくはこちらのPlenary sessionをご参照ください.

チュートリアル

3月8日に開催されるチュートリアルでは,自然言語処理学に関する多くの功績を挙げられている先生や,実社会で自然言語処理を応用している企業の方などによる研究紹介や技術紹介を講義していただきます.各講義とも基礎から応用まで詳しく解説していただく内容となっているので,ぜひご興味がございましたらご参加ください!

「自然言語処理と関連領域」

「自然言語処理と関連領域」では主に実社会での需要を考慮したトピックが選ばれています.自然言語処理学の技術を実社会での諸問題にどのように応用するか,また,実社会ならではの出てくる問題についても解説していただきます.自然言語処理と関連領域では以下のご講義を行っていただくことになっています.

  • 「推薦システム -機械学習の視点から-」
    神嶌 敏弘氏(産業技術総合研究所)
  • 「並列テキスト処理のための環境・ツール(EC2上での並列処理体験付き)」
    田浦 健次朗氏(東京大学)
  • 「はてなで利用している言語処理技術」
    伊藤 直也氏(株式会社はてな)

「自然言語処理学基礎論」

「自然言語処理学基礎論」では主に学術的な要素が強い自然言語処理学のトピックについて講義していただきます.自然言語処理学に関する研究者の皆様が今後研究にお役立ちできるような構成を目指しました.自然言語処理学基礎論では以下のご講義を行っていただくことになっています.

  • 「超高速テキスト処理のためのアルゴリズムとデータ構造」
    岡野原 大輔氏(東京大学)
  • 「NICT発の言語資源-ALAGINフォーラムの活動を中心に-」
    風間 淳一氏,橋本 力 氏,山田 一郎 氏(情報通信研究機構)
  • 「『現代思想』と言葉――脳・認知から遠く離れて」
    影浦 峡氏 (東京大学)

チュートリアルに関する詳しい情報はこちらのページをご参照ください.

まとめ

今回は言語処理学会第16回年次大会について紹介させていただきました.普段あまり学会発表などを聞きに行く機会が無い方もぜひこれを機に参加していただけたら幸いです.特にテキストマイニングや検索エンジンなどの業務に携わっている方は,新しい知見が得られるかもしれません.今年は情報処理学会全国大会と共催ということもあってとても盛り上がると思います.私も開催に携わっている身ではあるのですがとても楽しみです.

都会よりも田舎が好きなfujisawaです。Bayesian Setsというアルゴリズムを使って、関連する文書を高速・高精度に検索できるシステムを作成しましたので、そのご紹介をさせていただきます。

Bayesian Setsとは

Bayesian Setsはいくつかアイテムを入力すると、それを補完するようなアイテムを返してくれるアルゴリズムです。原著論文の先頭に”Inspired by Google Sets”と書かれているように、Google Setsを参考にして作成されています。実際にどのような出力が得られるか、Google Setsに以下の表のクエリを検索して試してみますと、

クエリ 出力
apple, banana chocolate, strawberry, vanilla, cherry, …
apple, macintosh software, windows, mac, computer, …

どちらのクエリにも”apple”という言葉が含まれていますが、1つ目のクエリは”banana”と一緒に検索しているため、果物のapple, bananaに関連するアイテムが得られていることが分かります。また2つ目のクエリでは”macintosh”と共に検索しているため、コンピュータ関連のアイテムが結果として得られています。このように入力されたアイテムと同じ概念の集合をオンデマンドに特定し、その集合中の他のアイテムを取得することができます。

Bayesian Setsについてより詳しくは、以下のページをご参照ください。

またBayesian Setsを使った他のシステムには連想検索エンジンReflexaがあり、はてなブックマークの関連エントリなどに使用されているようです。

関連文書検索システムStupa

Bayesian Setsを使用した関連文書検索システムとして、Stupa(ストゥーパ)というシステムを作成しました。昔アジアを旅行したときに見た仏塔(ストゥーパ)から取ったもので、特に検索には関係ありません。

StupaはBayesian Setsにより類似する文書を高精度に検索し、また転置インデックスを構築することで高速に検索を実行できます。登録された文書データや転置インデックスは圧縮して保持しているため、メモリの使用量も少なく実行できます。

stupa

例として日本語版Wikipediaから作成したデータ(約61万エントリ)を使用して、Stupaのコマンドラインツールで関連エントリを検索した結果を以下に示します。結果のリストには、関連するエントリの名前と関連度が1行1エントリで表示されます。

  • 「トヨタ自動車」で検索
  • % bsmgr search /path/wikipedia.tsv
    Read input documents ...
    Query> トヨタ自動車
    トヨタ・プリウス        62.243313
    トヨタ・トヨエース      56.777371
    トヨタ・コロナ  54.229831
    張富士夫        53.586574
    トヨタ・ハイラックス    51.514397
    トヨタ・プロボックス    49.165956
    トヨタ・パブリカ        49.076950
    中村健也        47.865204
    奥田碩  45.499038
    特別仕様車      45.440519
    ...
    (search time: 3.21ms)
    
  • 「かめはめ波」と「ドラゴンボール」で検索
  • Query> かめはめ波       ドラゴンボール
    かめはめ波      263.980312
    トランクス (ドラゴンボール)     72.204788
    ミスター・サタン        69.037348
    ドラゴンボールのアニメオリジナルの登場人物      65.560679
    ドラゴンボールZ 超悟空伝 -突激編-       62.634941
    ベジット        62.190804
    ドラゴンボールZ 燃えつきろ!!熱戦・烈戦・超激戦  54.983379
    ダーブラ        53.873965
    ギニュー特戦隊  51.688147
    ドラゴンボールZ この世で一番強いヤツ    51.597809
    ...
    (search time: 3.95ms)
    

上記は「トヨタ自動車」で検索した場合と、「かめはめ波」「ドラゴンボール」の2つで検索した場合の結果ですが、両方とも関連するエントリが取得できています。検索にかかった時間は3ミリ秒ほどと比較的高速に実行できていることも分かります。

Stupaは入力された文書データや転置インデックスをメモリ上で保持して動作するため、頻繁に文書の追加・削除が行われるようなリアルタイム性の高いアプリケーションでの利用を主に想定して開発しています。例えばTwitter上で、自分の発言に関連するTweetを即座に検索する、といったアプリケーションが作れるかもしれません(Twitterだと1発言あたりの文章が短すぎて精度が悪くなってしまうかもしれませんが)。

またオプションで登録できる文書の最大数を指定すると、最大登録数を超えた場合に古い文書から削除していくようになるため、使用リソースを一定に抑えつつ、常に最新の文書から関連しているものを検索することができます。

Thriftによる検索サーバ

StupaにはC++ライブラリとコマンドラインツールが含まれているのですが、これ以外にThriftを使用した検索サーバも配布しています。Perlのクライアントも同梱されていますので、Webサービス等に実際に導入することも可能だと思います。

stupa-thrift

また現在クライアントはPerl実装しかないのですが、Thrift用のインタフェース定義ファイルがパッケージに含まれていますので、RubyやPythonなど他言語のクライアントを生成することも可能です。より詳しくはThriftのマニュアルをご参照下さい。

まとめ

関連文書検索システムStupaをご紹介させていただきました。StupaはBayesian Setsを使用して、高精度かつ高速に検索を実行することが可能です。今後はmixi上での応用を考えつつ、パフォーマンスの向上等を行っていきたいと思います。もしご興味がある方がいらっしゃいましたら、ぜひご利用下さい!