一定期間更新がないため広告を表示しています
関口宏司のLuceneブログOSS検索ライブラリのLuceneおよびそのサブプロジェクト(Solr/Tika/Mahoutなど)について
2014.01.30 Thursday
テキストアノテーションツール brat がすごい件
brat は OSS のテキストアノテーションツールである。GUI(ビジュアルと操作性)とできあがりのアノテーション情報のわかりやすさ(シンプルなフォーマットが自作NLPプログラムから扱いやすい!)、導入の簡単さがすばらしいのでここで紹介しよう。 brat のインストールApache などの Web サーバ上で動かして本格的に使う方法と、個人的にさくっと立ち上げて使う方法があり、ここでは後者を紹介する。この場合インストールは簡単で、brat を適当なディレクトリにダウンロードして展開する。 $ mkdir work $ cd work $ wget http://weaver.nlplab.org/~brat/releases/brat-v1.3_Crunchy_Frog.tar.gz $ tar xvzf brat-v1.3_Crunchy_Frog.tar.gzそして、次のようにインストールのスクリプトを実行して質問に答えれば終わりである。 $ cd brat-v1.3_Crunchy_Frog $ ./install.sh # brat にログインするユーザ名を新規設定する。 Please the user name that you want to use when logging into brat editor # パスワードを入れる。 Please enter a brat password (this shows on screen) annotate # メールアドレスを入れる。 Please enter the administrator contact email example@brat.orgコーパスの準備 次にアノテーションを入れる対象のコーパスを data ディレクトリの下に用意する。ここでは livedoorニュースコーパスを使った例を示す。 $ wget http://www.rondhuit.com/download/ldcc-20120915.tar.gz $ tar xvzf ldcc-20120915.tar.gzコーパスファイルは UTF-8 で保存され、.txt の拡張子でなければならない。さらに、次のようにアノテーションを実行する .txt ファイルひとつひとつに対応する空の .ann ファイルをあらかじめ用意しておく必要がある。 $ find text -name '*.txt' | sed -e 's|¥.txt|.ann|g' | xargs touch固有表現タグ設定と brat の起動 brat は係り受けのような構造的アノテーションもつけることができるが、本記事では固有表現タグをつける例を示す。デフォルトの状態でもいくつかの固有表現タグが設定されているが、ここでは独自タグを設定してみる。livedoorニュースコーパスを tar で展開したときにできた text ディレクトリの直下に、次のように2つの設定ファイルを作成する。 $ cd text $ cat > annotation.conf <<EOF > [entities] > ORGANIZATION > FACILITY > PERSON > TITLE > LOCATION > > [relations] > [events] > [attributes] > EOF $ $ cat > visual.conf <<EOF > [labels] > > [drawing] > ORGANIZATION bgColor:#8fb2ff > FACILITY bgColor:#aaaaee > PERSON bgColor:#ffccaa > TITLE bgColor:#7fe2ff > LOCATION bgColor:#6fffdf > EOF最初の設定ファイルはタグの設定、2つめはタグの色の設定である。なおこれらは必要最低限の設定である。設定ファイルを完璧に設定したい方は、brat ディレクトリ内に設定ファイルがあるので、そちらを参照していただきたい。 以上の設定が終われば、brat をスタンドアロンモードで起動できる。なお、brat は Python で書かれているので、Python の環境が必要である。 $ cd ../.. $ python standalone.pybrat へのログイン
上の起動時に表示された URL http://127.0.0.1:8001 にブラウザからアクセスする。すると、次のような画面が表示される。
ログインしたらコーパスコレクションを選択する。それにはタブキーを押下するか、上のメニューから [Collection] を選んでクリックする。すると、次のコーパスコレクション選択画面になる。 このときすでに、サーバサイドの対応する .ann ファイルには次のようにアノテーション情報がシンプルなフォーマットで記録されている。 $ cat movie-enter-5840081.ann T1 PERSON 81 86 宮崎あおい T2 PERSON 87 90 堺雅人 T3 TITLE 1046 1048 さん T4 PERSON 447 450 堺雅人 T5 PERSON 975 977 宮崎 T6 TITLE 977 979 さん T7 PERSON 980 981 堺 T8 TITLE 981 983 さん T9 PERSON 1021 1023 宮崎 T10 PERSON 1196 1197 堺 T11 PERSON 1245 1247 宮崎 T12 PERSON 1254 1255 堺 T13 PERSON 947 949 宮崎タグをつけた順番で記録されているので、プログラムで読み込むときは、3〜4列でソートする必要があるだろう。
SolrとMahoutのトレーニングコース、ただいま2月の受講者を募集中です! 2014.01.20 Monday
Heliosearch/Solrオフヒープフィルタ
筆者のYonikの許可を得て翻訳した。原文はこちら。 Solrのパフォーマンスを一段高めるHeliosearchという新しいオープンソースプロジェクトに真っ先に追加された機能がオフヒープNativeフィルタだ。 大容量JVMヒープの潜在的問題JVMは大きいヒープの処理が決してうまくなかった。ヒープが大きいとガーベッジコレクション作業が難しくなり、GCポーズによって長時間システムが停止し、ほかの処理が一切できなくなる場合も多い。そのためクエリ/リクエストタイムアウトが発生したり、SolrCloudモードでzookeeperセッションのタイムアウトまでも発生する可能性がある。 オフヒープフィルタ非常に高度なフィルタキャッシング機能を用意しているHeliosearch/Solrだが、アプリケーションによっては膨大なメモリを使用する可能性がある。大きく存続期間の長いオブジェクトの方が、JVMヒープから取り出して明示的に管理するメリットを得られる。オフヒープメモリはガーベッジコレクタから見えないのだ。 Heliosearchフィルタ(Solr DocSetオブジェクト)はオフヒープでアロケートされるようになっており、不要になればすぐに解放できるよう参照がカウントされるようになった。また、JVM GCはこのようなメモリブロックのコピー処理で時間を無駄にする必要がなくなった。このことはGCの長時間ポーズを排除し、リクエストスループットを改善するのに役立っている。 テスト設定各方面から報告のあった長時間のGCポーズを再現するにはかなりいろいろなことを試す必要があると考えていたが、何と1回目でいきなりこれが再現されてしまった。ヒープサイズは報告のように大きなものではなく現状は小さく収まっている。ヒープが大きいとGCポーズも延びるようだ。 テストの詳細
Apache Solrコマンドライン: $ java -jar -Xmx4G start.jarHeliosearch/Solrコマンドライン: $ java -jar start.jar Apache Solr実行時はOOM例外を回避するためにヒープサイズを4Gバイトに設定する必要があった。搭載可能なRAMは最大8Gだったため、残りのメモリはインデックスファイルのキャッシング用としてOSに残しておきたかった(そうしないと速度が大幅に落ちてしまう)。 GCの結果2万クエリリクエストを行ったGCの実行結果を以下のグラフに示す。 グレーの棒はGCに要した時間、赤線はヒープの実サイズ、そして青線はヒープの実使用量を示している。 SolrSolrでの長時間ポーズをテスト中に外から見るのはさらに容易だった。ログが有効になっていたためリクエストがすべてログメッセージを残し、ターミナルでは高速スクロールが発生した。そして、GCの大規模なコンパクションが発生するとターミナルのスクロールは突然停止した。 Heliosearchガーベッジコレクションの処理が短時間ですむためにHeliosearch GCグラフの方が完了は早い。長時間の完全なGCポーズがほとんど発生しておらず、ほかのGCポーズも大幅に減少していることに注目したい。 クエリの待ち時間
このグラフは、2万クエリを実行したときの後半の1万クエリ(ホットスポットとキャッシュが落ち着いたタイミングを見計らうため)の待ち時間をパーセントで示している。
プロセス(トップ経由で外部から監視)の常駐メモリ最大使用量は5回にわたって計測した。
今回の簡単なテストにより、オフヒープフィルタが大きな異常値を減らして全体のクエリスループットを高め、長時間のGCポーズを排除してリクエストの予測を容易にすることが判明した。 ご自身でお試しいただき、HeliosearchForumで感想をお聞かせいただきたい。 SolrとMahoutのトレーニングコース、ただいま2月の受講者を募集中です! |
+ Solrによるブログ内検索
+ PROFILE
+ LINKS
+ Lucene&Solrデモ
+ ThinkIT記事
+ RECOMMEND
+ RECOMMEND
Lucene in Action (JUGEMレビュー »)
Erik Hatcher,Otis Gospodnetic,Mike McCandless FastVectorHighlighterについて解説記事を寄稿しました。
+ RECOMMEND
+ SELECTED ENTRIES
+ RECENT COMMENTS
+ RECENT TRACKBACK
+ CATEGORIES
+ ARCHIVES
+ MOBILE
+ SPONSORED LINKS
|
(C) 2024 ブログ JUGEM Some Rights Reserved.
|
PAGE TOP |