Hatena::ブログ(Diary)

ny23の日記 このページをアンテナに追加 RSSフィード

2013-08-17 省メモリな設計にしていて良かった

構文解析器の省メモリ化を頼まれた

| 構文解析器の省メモリ化を頼まれたを含むブックマーク 構文解析器の省メモリ化を頼まれたのブックマークコメント

外国の方から,公開している構文解析器を日本語学習支援の Android アプリに使いたい,というメールが来た.前段の形態素解析器 (Kuromoji) は 10MiB 程度で動作するそうで(多少解析が遅くなっても良いから)構文解析器もその程度の消費メモリ(ディスク)で動かせないか,という質問(要望).

現在公開している構文解析器の消費メモリは (Mac mini Server (Late 2012)) で 28 MiB ぐらいで,構文解析器としては比較的省メモリな設計になっているのだけど,高速化のため素性の組み合わせを陽に展開しているのである程度メモリが必要となる.そこでまず,素性の組み合わせを展開しない PKI を分類に使うことを薦めてみた.手元で試したところ,解析速度は 1/60 ぐらいになってしまうが動作に必要となるメモリ・ディスクは 6 MiB ぐらいになった.[追記] ディスクは 1.5 MiB で済むようだ.

しかしこれは流石に割に合わない(解析速度が遅くなり過ぎ)と感じる.そこで,陽に組み合わせを展開する素性数を大幅に制限して,配列*1で密に保持できる程度に展開する組み合わせ素性の数を抑えたら,解析速度の低下は 1/2 (それでも 10,000 文/秒)程度で,動作に必要となるメモリ・ディスクを 7 MiB まで減らすことができた.近似なしで解析精度はそのまま.これなら良いか.

ソースコードを一行だけ書き換える必要があったが,次に公開する版ではその必要がないようにしておこう.よく調べたら,ソースコードは書き換える必要なかったが,少し修正した方が良い箇所が見つかったので,次に公開する版で対応しよう.

[追記] もう少し調べたら,ディスク使用量は 2 MiB ぐらいで済むことが分かった.内訳は,素性の変換辞書が 0.13 MiB, 文節区切りのモデルが 0.56 MiB, 係り受け解析のモデルが 1.13 MiB.

*1:高速化のため,高頻度素性の組み合わせは配列で,それ以外はダブル配列で保持する実装になっている.

2013-08-07 零日目などと煽るタイトルをつけたばっかりに

学会出張@東欧三日目: 機械学習のセッションに出るの忘れてた

| 学会出張@東欧三日目: 機械学習のセッションに出るの忘れてたを含むブックマーク 学会出張@東欧三日目: 機械学習のセッションに出るの忘れてたのブックマークコメント

三日目は体調も良好で,一日しっかり聴講することができた.学会も最終日だからかセッション数も一つ少なく,ややゆとりのあるスケジュール.三日目も色々な発表を聞いたが,記憶に残ったのは以下の3つ.

  • Machine Translation Detection from Monolingual Web-Text: MT で自動翻訳された文書を識別する問題.面白い問題設定で,かつ,問題に関する深い観察・理解から導かれた手がかりを用いて識別器を構築しており,誠実な研究という印象を受けた.テストデータの作り方がやや人工的,局所的で苦しく,多分に苦労の跡が感じられる.ここは2日目で触れたテキスト再利用に関するコーパスのように,ユーザに機械翻訳結果を利用しつつ翻訳してもらってコーパスを作り,評価していたら,隙もなくより妥当な評価ができたのではないかな*1.企業の研究らしく実世界データを用いた実験もあって,こういうところは見習いたい.
  • Offspring from Reproduction Problems: What Replication Failure Teaches Us: WordNet に基づく類似度尺度(計算)と NER に関する既存手法について再実装により実験結果の再現を試み,その成功と失敗から得た教訓について議論した研究.最初,スライドなしでトークが進み,あれ?スライドなし?と思っていたら,半分ぐらい時間を使ったところでスライドを使った発表に移って,少し知見を話して終わり.手法の再実装を容易にするため,実験結果を公開しましょう,という話もあったりして,3月の講演で同じことを話していた自分としては,先に話しておいて良かったと思った(というか,主張自体もかなり被っていて共感した).質問で,ここで実験結果の再現で困った経験のない人はいるか?この発表が Best Paper Award(を受けるべき)だ,などと叫んでいる人がいたが,流石にそれは言い過ぎかと思う.しかし,この論文が口頭発表で採録されるということの意味は,よく考えた方が良いと思う.
  • Good, Great, Excellent: global inference of semantic intensities: 昨年から始まった,国際論文誌採録→国際会議発表枠の論文.同義の形容詞を,形容する性質の強さの順に並べるというタスク.言語的なアプローチと数理的なアプローチをうまく組み合わせていて,手を尽くしている感があった.結果も inter-rator agreement と変わらないところまで辿り着いているので,この後に同じタスクで追随するのはちょっと厳しそう.

2つ目の研究は一昨年の同会議の business meeting での Ted Pedersen の以下の議論を踏まえて行われたようだ.ちょうど参加しなかった会議で,知らなかった.明らかに3月の講演の時に触れるべき内容で,サーベイ不足を反省.

というわけで,三日間に渡る会議もこれにて終了.セッションとしては,国際論文誌採録→国際会議発表枠のニセッション目が面白かったそうな.論文誌に良い研究が流れて会議論文の発表はイマイチだったと言う人もいたが,個人的には数年前の同会議よりよっぽど面白かったのだけど.感性の違いかなぁ.自分の分野には,今回参加した国際会議の他に,もう一つ大きな(歴史の長い)国際会議*2があって,自分はそちらの会議の幅広く論文をとる懐の深さが好きだったのだけど,こちらの会議もそういうところが今回は見受けられて,参加していて楽しかった.

昼はランチの時間を利用して,同僚氏とタクシーで近郊のフレスコ画で有名な教会(世界遺産)を訪ねて,中の人にフレスコ画に描かれた人物に関する説明を聞いたりした.地味だけどこういう遺跡,割と好きだな.夜は,今回の発表者三人で最終日打ち上げに行く途中,偶然に初日にランチを食べた研究員の方と会ったので合流して近くのビアバーへ.半地下の小部屋で,近所の野良猫を眺めながら,丸まったソーセージやマッシュルームのバター炒めなどを食べつつ,ビール片手に夜遅くまで語り合った.このぐらいの人数で食べたり話したりするのが自分にはちょうど良い.

今回,ホテルの朝食は美味しいのだけど,三日間同じとなると少しばかり飽きてくる.この辺りが帰りどころかな.今回,初日から二週間ぐらい前の記憶を遡りつつ日記を書いたのだけど,こんなことなら零日目などと書かなければよかったと少し後悔(本当は PENTAX K-5 のバッテリの笑い話を書きたかっただけ).

*1:コーパスを作っても企業だと公開するのは難しそうなので,この程度で留めておくのが合理的なのかもしれない.論文としての焦点もうまく書かないとぼやけるし.

*2:近年,学会運営の不手際などもあって,やや評判を落としているらしい.

2013-08-06 二週間経っても記憶に残っている研究だけ言及しておく

学会出張@東欧二日目: 注釈付けに関する研究が興味深い

| 学会出張@東欧二日目: 注釈付けに関する研究が興味深いを含むブックマーク 学会出張@東欧二日目: 注釈付けに関する研究が興味深いのブックマークコメント

学会の一日は招待講演で始まる.初日と三日目は認知言語学や大脳生理学など周辺分野の研究者による学術的な講演なのに対し,この日はサービス寄り話で顔本のグラフ検索の話.まああんまり聞いててワクワクする話ではなかった.自分は研究室内でこの手の産業寄りの話ばかり聞いているので,個人的に(この会議には)その手の話は期待していないというのがあるのかも.多分普通の聴講者はワクワクするのだと思うけど.

続いて,Best Paper Award, Best Student Paper Award の発表.ちなみに,Best Student Paper Award は

  • A corpus-based evaluation method for Distributional Semantic Models (from Student Research Workshop)

だった.

初日は起きる時間が現地時間にピッタリ合って一日集中して聞けたが,二日目は疲れもあり,夜明け前に目が覚めてしまってやや寝不足気味で,聴講を聞き続けるのがしんどかった.ランチは軽い気持ちで本格的な現地料理の店に行ったら,料理のサーブがやたらと遅くて午後の最初のセッションの最初が聞けなかったりして,がっくり.自分も残念だけど,一緒に行った方々にも申し訳なく.

二日目の発表で記憶に残ったのは,

  • Reconstructing an Indo-European Family Tree from Non-native English Texts: 内容はタイトルそのまま.知的好奇心をくすぐる問題設定で興味深かったのだけど,後半の分析が事例分析の段階に留まっていて,やや物足りない.もう一段階抽象化して何らかの仮説をたてるところまで行って欲しいなと感じた.その辺りはジャーナル版で期待したい.
  • Crowdsourcing interaction logs to understand text reuse from the Web: Web 上のテキストを再利用して書かれたコーパスの構築に関する話.こういう論文が通るのが面白い.TREC の Web トラックから選んだトピックに関する文書の作成を crowdsourcing し,その作業ログを可能な限り*1記録して,そのログをもとにユーザが文書を書く際にどのようにテキストを再利用するのかを分析している.件のテキスト再利用については,引用型 (build-up) の再利用と,推敲型 (boil-down) の再利用が半々ぐらいだったのこと.
  • Outsourcing FrameNet to the Crowd: FrameNet に基づく注釈付けを crowdsourcing することを念頭に,注釈付けの手順を従来の二段階(フレーム選択→意味役割付与)から,直接,意味役割付与を行う方法に簡略化することで,注釈の精度,時間,注釈付けコストがどう変わるか調査した研究.実際に worker に支払った金額でコストを評価しているのが非常に妥当で現実的.結論は論文をどうぞ.個人的にはこういう研究,とても重要だと思う.

今日は懇親会がある日だったが,最近の学会参加では懇親会は基本参加しないことにしているので,講演終了後は今回の発表の共著者の卒業生と市内を歩いてまわって,夕飯を軽く食べて帰った.学生の頃のように観光気分で学会に来ることは無くなった(というか,発表の内容がよく分かるようになったので,発表を聞いている方が楽しくなった)けど,やっぱりずっと頭を使いっぱなしだとクラクラしてくるので,空いた時間には街を歩いたりしてリフレッシュするようにしている.

*1:作業者ごとにウェブの閲覧履歴や編集履歴を記録し,どのようにウェブ上から情報源となる文書を見つけて,どのような形でテキストを再利用したかを記録している.