Brat前準備:データと各種設定
Bratのデータ用意と設定ファイルの書き方などをまとめました。
環境構築
前回macOSにBratをインストールしました。
環境などは以下を参照してください。
テキストファイル、アノテーションファイルを用意する
注意!!
ディレクトリやファイルの名前に日本語を用いるとエラーが発生します。ローマ字を用いましょう。
アノテーションを行う対象のデータを用意します。
拡張子は.txtにします。
改行コードを認識して区切ってくれます。作業に適した形で文章を保存しましょう。
Bratのインストール先にdata/ ディレクトリがあるので、適当なディレクトリ作成(ここではcancer/ とします)。
先ほどのファイルを突っ込みます(ここではncomms1309.txt)。
さらにこのファイルに対応したアノテーションファイルを用意してあげます。
同じファイル名で拡張子を.annにしましょう。
ここまで用意したファイルとその保存先は以下のようになります。
- テキストファイル: data/cancer/ncomms1309.txt
- アノテーションファイル: data/cancer/ncomms1309.ann
この時点でBratを起動し、ファイルを選択するとブラウザ上に表示できます。
ログインすると編集できるようになります。
Errno 13: Could not write statistics cache file to directory
ファイルのパーミッションを適切に設定しないと編集できません。
無視してアノテーションすると以下のエラーメッセージが表示されます。
This document is read-only and can't be edited.
他のファイルを見るところ、777で良さそうです。
こんな感じでディレクトリのパーミッションを変更します。
chmod -R 777 data/cancer/
アノテーションの設定ファイルを作成する
さて、ログインすれば早速アノテーションができますが、デフォルトの設定ファイルを参照してしまいます。
独自のアノテーションルールを使いたければ、同一ディレクトリ内に設定ファイルを設置してあげる必要があります。
Bratでは以下の4つのファイルでアノテーションのルールなどを設定できます。
- annotation.conf
- visual.conf
- tools.conf
- kb_shortcuts.conf
annotation.confが必須で、効率化のためにkb_shortcuts.confも設定するといいかなという感じです。
他2つはひとまずデフォルトで良さそうです。
インストールディレクトリ内のconfigurations/ には様々な設定ファイルの例が保存してあります。
そちらを参考にするのも良いでしょう。
では詳しく見ていきます。
なお、インデントはタブでなくてはいけません。スペースだとエラーが出ます(スペース込みのrelation名と判定されたりする)。
annotation.conf
アノテーションのルールに関する設定ファイルです。
entities, relations, events, attributesの4セクションで構成されます。
最低限entitiesだけを埋めれば動きます。
entities
テキストに付与するentity。
例:Person、Locationなど
階層構造を持たせることも可能。
relations
2つのentity間の関係。
これらのentityを指定するため、relationは特定のentity間だけでを選択可能。
(個別のentity名を指定する代わりに<ENTITY>とすることで自由になる)
Family Arg1:Person, Arg2:Person
と記述すれば、Family relationは2つのPerson entityの間の関係に構築されるという指定になります。
(PersonとLocationの間にFamily relationを貼ることはできない)
events
文の中で発生した出来事。
必要なentityを指定可能。
event typeをまず書き、カンマ区切りでROLE:TYPEの形式を任意の数続けます。
TYPEはentitiesで設定したもの、ROLEはevents上で任意に設定できます。
Marriage Participant1:Person, Participant2:Person
とすればMarriageというeventはParticipant1, 2としてそれぞれPerson entityを必要とすることになります。
Marriage Participant1:Person, Participant2:Person, Site?:Location
と追加すれば、SiteとしてLocation entityも含めることができます。
さらに「Site?」と「?」をつけることでオプションとして設定できます(なくてもOKになる)。
またROLEの直後に「*」を使えば0回以上、「+」を使えば1回以上の繰り返しとして設定できます。
ROLEにArg1、Arg2などを設定する例がいくつかありますが、末尾が数字だと繰り返し記号などが使えないので注意です。
attributes
eventに対して属性を設定することができます。
attributesは種別と二値、もしくは複数の値を設定できます。
Negated Arg:<EVENT>
とすればevenに対して否定の属性を設定できるようになります。
Confidence Arg:<EVENT>, Value:L1|L2|L3
とすれば確信度として三段階を設定できます。
visual.conf
アノテーションの表示に関する設定
labels, drawingの2セクションで構成されます。
いずれも必須ですが、中身は空でも問題ないようです。
labels
スペースが限られているときに表示する短縮系の設定。
Organization | Organization | Org
選択したテキストの領域が狭い場合は「Org」と表示されます。
また、ラベルにはスペースを含めることが可能です。
drawing
Brat上での表示に関する設定。
特にこだわりがなければ空にすれば自動で設定してくれます。
Person bgColor:#ffccaa
これはPerson entityの背景色を設定しています。
他にも文字色や矢印の大きさなど変更できます。
特にこだわりがなければいじらなくて良さそうです。
tools.conf
各種機能の設定。
options, search, normalization, annotators, disambiguatorsの5セクションで構成。
全てオプションなので、ファイルの中身が空でも問題なし。
ここでは概要だけ触れます。詳しい記述方法は公式ページを確認ください。
options
トークナイゼーション、センテンス分割、バリデーション、ログなどの設定。
センテンス分割はデフォルトではnewline以外の部分でも正規表現に従って分割するようになっています。
従ってtxtファイルをエディタで開いた時と見え方が変わるので注意してください。それによってアノテーションがずれることはない、と思う。
気持ち悪ければtools.confに以下の記述追記しておきましょう。
[options]
Sentences splitter:regex
search
テキストを選択した時に、検索で使うエンジンの設定。
デフォルトだとGoogleとWikipedia。
normalization
データベースを登録することで、アノテーションを正規化することができます。
例えば、serotoninは別名をいくつか持っていて、5-hydroxytryptamineと表記されることもあります。
これらが別のentityとして扱われるのは好ましくないのであらかじめ化学物質のDBを登録しておき、そこに格納されているIDで紐付けるというようなことができます。
v1.3からの機能らしいです。
詳しくはこちら。
使いこなせたら有用そうです。
annotators
ウェブで公開されている自動アノテーションの呼び出しの設定。
詳細の挙動は不明ですが、自分でアノテーションルールを作ってあげれば色々と手間が減りそう。
disambiguators
The [disambiguators] section defines automatic semantic class (annotation type) disambiguation services that can be invoked from brat.
と書いてあったのですが、よくわかりませんでした。判明したら追記します。
kb_shortcuts.conf
キーボードショートカットの設定。
セクションを持ちません。
P Person
O Organization
F Family
と設定すれば、テキスト選択後のentity, event typeの選択画面でショートカットに応じた選択が可能です。
作業の効率化にぜひ登録したいですね。
おまけ
調べるほどに多機能搭載でした。
OSSの機能を調べていると、一つのものが無償の貢献で作られていることに感謝と感動が湧きます。
社会貢献について考えてしまいますね。