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の機能を調べていると、一つのものが無償の貢献で作られていることに感謝と感動が湧きます。

社会貢献について考えてしまいますね。

参考

コメントを残す