快適なアノテーション環境を求めて

# TL;DR
テキストアノテーションツールbratの話
作業効率化のために試したこと
- 外部ディスプレイ
- マウス
- キーボードショートカット
- サーバで複数人編集
- 外注
- iPad
- その他のツール


# bratって何さ
bratはオープンソースのテキストアノテーションツールです。
以下のようにドラッグとマウスぽちぽちだけで直感的にラベル付け可能です。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/167609/4ae1fb34-7c09-b480-0ff1-29f1fd4b247e.png)
出典: [brat公式サイト](http://brat.nlplab.org/index.html)

具体的にはテキストをドラッグして、その範囲に対してラベルを選択します。便利。
動画だとこんな感じ。
<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">Qiita埋め込み用<a href="https://t.co/F5YqIw10cQ">https://t.co/F5YqIw10cQ</a></p>&mdash; 山田涼太 (@roy29fuku) <a href="https://twitter.com/roy29fuku/status/1072457998063333376?ref_src=twsrc%5Etfw">2018年12月11日</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

公式の案内に従えば簡単にローカルでアノテーション作業ができるようになりました。
インストール方法についてはブログで簡単にまとめたよ。
- [macOSでbratを使う](http://blog.roy29fuku.com/natural-language-processing/install-brat-to-macos/)



# bratで何やってんの
背景として私がbratでどんなテキストを扱っているか紹介します。

私は論文から動物実験条件の情報を抽出しようとしています。
なので、対象はこんな感じ。
- テキスト: 生命科学論文のMethods
- ラベル: マウスの種類、薬の種類、細胞の種類、投与経路・量、etc...

実際の画面はこんな感じ。
<img width="835" alt="スクリーンショット 2018-12-13 15.23.11.png" src="https://qiita-image-store.s3.amazonaws.com/0/167609/824359bb-1411-595c-1920-90be9ead76eb.png">
現在はとりあえずentityだけですが、将来的にはrelationも貼ります。

このプロジェクトに関して興味がある人はこっち読んでね。
- [がんのin vivo論文アノテーション①固有な語彙](http://blog.roy29fuku.com/natural-language-processing/paper-analysis/annotate-cancer-in-vivo-paper-1-vocabulary-unique-to-in-vivo-papers/)



# 外部ディスプレイ
効率化第一弾は外部ディスプレイ。必須です。
解決したかったこと: テキストを表示しながら調べ物

![IMG_20181213_151446.jpg](https://qiita-image-store.s3.amazonaws.com/0/167609/d481f169-e5b8-9752-ebd7-95c159f48bb8.jpeg)

アノテーション対象が専門性の高い論文なので、結構ウェブで検索します。
文脈的に細胞の名前っぽいけど、念のため確認する時とか。

細胞名や系統名は英数字の羅列でタイポしがちなので見ながら打ち込めて良い。
（bratはコピペのためにドラッグするとアノテーションウィンドウが開いてしまうのでタイプした方が早い）

一つ不満があるとすれば、ブラウザをアクティブにするためにはマウスをMac側に持ってきてどこかしらクリックする必要がある点です。
要するに、調べ物しようとChromeでCmd+Lするとアノテーション作業中のウィンドウが反応してしまうということ。
Mission Controlを使えばCtrl+数字キーで画面移動できるのですが、外部ディスプレイを対象に取れない。
これの解決方法知っている方いたら教えてください！

やりたいことは以下の質問と同じ。
- [Keyboard shorcut to switch focus between multiple displays on OS X 10.9.5 + (mavericks, el capitan, sierra)](https://apple.stackexchange.com/questions/106559/keyboard-shorcut-to-switch-focus-between-multiple-displays-on-os-x-10-9-5-mav)



# マウス
トラックパッドでたくさんドラッグ、クリックすると指が疲れちゃう。
解決したかったこと: MK5（マジで腱鞘炎になる5秒前）


ということで知人におすすめされたロジクール製マウスを購入。
![81NpmTWMzpL._SX522_.jpg](https://qiita-image-store.s3.amazonaws.com/0/167609/f68b6cf4-101d-463d-92fb-21645f538740.jpeg)
[Logicool MX ERGO](https://www.amazon.co.jp/exec/obidos/ASIN/B074Z71C2M/blog04ef-22)

ドラッグとクリックの負担が軽くなりました。
ポインタ移動の精度がまだトラックパッドに及ばないけど、そこは慣れていきそう。



# キーボードショートカット
解決したかったこと: タグ選択の効率化

bratではテキストをドラッグしたらラベル選択ウィンドウが立ち上がります。
このラジオボタンをクリックするのが地味に面倒。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/167609/6a30cf61-6973-9ec0-28e8-d6d6f54b4c69.png)

各ラベルの下線付きの文字をショートカットキーに設定しました（Strainならsを押せば選択される）。

kb_shortcuts.confで簡単に設定できます。
詳しくは公式を。
- [Keyboard - brat rapid annotation tool](http://brat.nlplab.org/configuration.html#keyboard-configuration)

マウスを動かさなくて済むのでめっちゃ早くなる。
ドラッグ、ショートカット、return。
ドラッグ、ショートカット、return。
ドラッグ、ショートカット、return。。。



# サーバで複数人編集可能
これまでローカルで動かしていたのですが、サーバに置くことでどこからでもアクセスできるようになりました。
ID・パスワードを発行することで複数人で作業することも可能です。

こっちは長くなったのでブログでまとめました。
- [bratサーバをEC2に立てて複数人でアノテーションできるようにした](http://blog.roy29fuku.com/natural-language-processing/brat-server-on-ec2-with-docker/)

簡単にまとめると、bratサーバを構築するDockerfile使ってEC2にコンテナ立てました。
先人の知恵をお借りしただけですが。


# 外注
とりあえず自分で論文100本分アノテーションしました。
つら。
獣医にいた時より論文読んだ。

微々たるものですが、とりあえずはこれを使って分析してみます。
同時並行でデータを拡充するためにアノテーションを外注することにしました。
今回取り扱うテキストデータが「生命科学の英語論文」ということでそれなりに専門性が高く、誰にでもお願いできるタスクでないことが災いしてアノテーター探しに難航しました。

最終的にエムスリーさんにハイスペック医療従事者を紹介してもらうことになりました。
時給5000円。ひょえー。
バイオ系で英語論文読める方、募集しています！
上述のアノテーターの方の作業効率をベースに給与を設定するので、興味のある方は[Twitter](https://twitter.com/roy29fuku)に連絡ください！



# 失敗: iPadは使えなかった
テキストのドラッグに悩んでた時、紙とペンっぽく作業できたら楽かなーと思いました。
けどタブレット・スマホは、編集には対応してなかったよ。残念。
閲覧だけはできるから確認作業とかは寝っ転がりながらできそう。

<img width="952" alt="スクリーンショット 2018-12-13 14.50.38.png" src="https://qiita-image-store.s3.amazonaws.com/0/167609/68677e27-4b08-c0c4-6cc1-7a88851c49f9.png">
> On touch-based interfaces such as those on the iPad, the iPhone, and Android tablets, selection is currently not supported, so editing is limited to existing annotations. We hope to address this limitation in the next release.

出典: [brat公式サイト](http://brat.nlplab.org/supported-browsers.html)



# その他のテキストアノテーションツール
## doccano
TISさんがOSSとして公開しているdoccano（ドッカーノ）にも注目しています。
モダンなデザインでカッコいい！

![image.png](https://qiita-image-store.s3.amazonaws.com/0/167609/761c1761-2a39-3bee-a24f-3ec6096888d5.png)
出典: [doccano](https://doccano.herokuapp.com/)

bratにはない対訳コーパスの作成や文書のラベル付けに対応しているので、そっちがメインの人には向いてるかも。

複数人のIDを発行して作業を管理したり、作業中にアノテーションガイドラインを表示できたり親切設計が香ります。

あとbratはファイル名に日本語使うとエラー吐きます。これ地味に辛い。
その辺は日本人が作ってるdoccanoなら大丈夫だと思います（試してないけど）。

まだrelationに対応していないので、できるようになったら使ってみます。



## ABEJA Platform
有料だけどユーザの管理とかもできるらしいよ。
画像のアノテーションは機能が揃ってていい感じでした。

先日お話を聞いたけど、こちらもrelationには対応してないってさ。
relation extraction人気ないんですかね。
悲し。

relation貼れるようになったら使います。


# 最後に
結局どんなに効率的になっても最後は気力でやり切らなくてはいけないんですが。

この記事は、辛い辛いアノテーション中に少しでも新鮮なことをやろうとした、息継ぎの軌跡です。
色々試した結果効率が上がりました。

少しでも皆さんの辛い作業が効率的になれば幸いです。

オススメのツールあったら教えてください。