Watson Knowledge Studio 〜プレアノテーションをやってみた〜

<h1>記事の目的</h1>
<p>
　著者はWatson Knowledge Studio(以降、WKSと記載)を使用した検証を行う機会がよくありますが、検証の際、よく使用する機能(または操作手順)であるけれど、日本語でわかりやすく解説された情報がないものについて幾つかQiitaに投稿していこうと思います。この記事は「<a href='https://qiita.com/kng100/items/9700ceb36d08f2c88699'>Watson Knowledge Studio 〜ワークスペースの環境移行手順〜</a>」に続く第二弾となります。かなり間があいてしまいました...；<br>
　プレアノテーションには、予め登録された辞書をもとに新規文書へアノテーションを行う<b>辞書によるプレアノテーション</b>と、作成済みの学習モデルによりアノテーションを行う<b>学習モデルによるプレアノテーション</b>があります。プレアノテーションを実施する動機としては下記が考えられます。
<ul>
<li>学習文書に一からアノテーションするのがめんど臭い</li>
<li>アノテーションを一貫性を持って実施したい</li>
</ul>

以降において、①辞書によるプレアノテーションと②学習モデルによるアノテーションの手順を記載し、最後にそれぞれの使い分けについて言及します。
</p>

<h1>前提知識</h1>
<p>
本記事では、WKSの概要や基本的な操作についついては記載しておりません。
必要に応じて、参考リンクに記載の情報をお読みください。
</p>

<h1>参考リンク</h1>
<ul>
<li><a href="https://qiita.com/makaishi2/items/ae83828a711d0d946011">最新版IBM Cloud ライトアカウント登録手順(2018-05-06時点)  -Qiita</a></li>
<li><a href="https://www.ibm.com/watson/jp-ja/developercloud/knowledge-studio.html">Watson Knowledge Studio - IBM</a></li>
<li><a href="https://console.bluemix.net/docs/services/watson-knowledge-studio/tutorials-create-project.html#wks_tutintro">Watson Knowledge Studio ドキュメンテーション</a></li>
<li><a href="https://qiita.com/sukusuku_watson_editorial_room/items/d8407c938af47bc5ac44">Watson Knowledge StudioのTutorialをやってみた （前編）  -Qiita</a></li>
<li><a href="https://qiita.com/sukusuku_watson_editorial_room/items/981a4383f9defc5db6f5">Watson Knowledge StudioのTutorialをやってみた （後編）  -Qiita</a></li>
<li><a href="https://qiita.com/hone/items/03f2cbfbd30c20433a98">Watson Knowledge Studioの機械学習アノテーションをWatson Explorer にデプロイする  -Qiita</a>
<li><a href="https://qiita.com/yoshiono/items/b0619c91e9315c90ef97">Watson Knowledge Studio(WKS)のアノテーション作業手順　その１  -Qiita</a></li>
<li><a href="https://qiita.com/yoshiono/items/ed6b3bf64ef783c5cf43">Watson Knowledge Studio(WKS)のアノテーション作業手順　その２  -Qiita</a></li>
<li><a href="https://qiita.com/yoshiono/items/043087b9902a9135ab5d">Watson Knowledge Studio(WKS)のアノテーション作業手順　その３  -Qiita</a></li>
</ul>

<h1>①辞書によるプレアノテーション</h1>
辞書によるプレアノテーションは、辞書が登録されていることが前提となります。ここでは、サッカーのポジション名やチーム名といった各Entityに対応する辞書情報が既に登録されているとします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299863/0e8b6172-633d-4ea4-e29c-2272966803d3.png)



まずは、新規の学習文書を追加してみましょう。学習文書は2列のcsvファイルで、１列目に選手名を２列目にWikipediaのテキスト情報の抜粋を記載しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299863/943fbddd-e58f-de1a-bb5e-727e843f2b48.png)
上記のcsvファイルを下記の手順でWKSにアップロードします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299863/f39bf77c-a215-63c2-f4df-986ac5193128.png)
正常にアップロードされました。WKSに読み込まれた段階では、当然アノテーションされていません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299863/2ee340cc-6db7-3023-b978-f2812b71bb9a.png)


それでは、下記の手順でプレアノテーションを実行してみましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299863/d6b1630e-0b55-b9f1-d3bc-ddd0b8f55c72.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299863/3ead807a-1d0d-f4d2-ab33-a7e2ffc844b6.png)
「Run」の実行後、辞書によるプレアノテーションが対象文書に対して行われ、下記のようにSuccessのメッセージにより完了を確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299863/3b31ece7-175e-810d-b050-8452b0a5ddd9.png)


辞書情報にもとづいて、アノテーションされているかどうかみてみましょう。対象のドキュメントセットからアノテーションセットを作成し、Taskにて確認します。手順は、「<a href='https://qiita.com/kng100/items/9700ceb36d08f2c88699'>Watson Knowledge Studio 〜ワークスペースの環境移行手順〜</a>」を参照ください。

上記の手順実行後、文書を確認すると下記のように辞書情報をもとにアノテーションされていることを確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299863/7f527ecb-dabd-6a44-d6c4-9e9e5e409984.png)




<h1>②学習モデルによるプレアノテーション</h1>
学習モデルによるプレアノテーションは、作成済みの学習モデルがあることが前提となります。ここでは、下記の学習モデルが既に作成されているとします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299863/c7807af4-5dca-5e15-fa47-4f46fc41fc64.png)



辞書によるプレアノテーションと同様に、新規の学習文書を追加してみましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299863/01c3704c-d198-8658-74fa-4773d9019561.png)

上記のcsvファイルを下記の手順でWKSにアップロードします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299863/47524e31-bd80-5687-dffa-f5813dfdaedd.png)

正常にアップロードされました。WKSに読み込まれた段階では、当然アノテーションされていません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299863/dd82b680-0a2b-a088-90e8-9651a295a36d.png)


それでは、下記の手順でプレアノテーションを実行してみましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299863/92a7b057-99de-dbc9-f311-1fac442ddcc2.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299863/da1d0c22-cfab-8bd7-e07e-6966157b14c2.png)


「Run」の実行後、学習モデルによるプレアノテーションが対象文書に対して行われます。下記のようにSuccessのメッセージにより完了を確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299863/32b51dd8-ab63-5e1d-4130-5b82a7ec4fcb.png)


学習モデルの内容にもとづいて、アノテーションされているかどうかみてみましょう。対象のドキュメントセットからアノテーションセットを作成し、Taskにて確認します。手順は、「<a href='https://qiita.com/kng100/items/9700ceb36d08f2c88699'>Watson Knowledge Studio 〜ワークスペースの環境移行手順〜</a>」を参照ください。

上記の手順実行後、文書を確認すると下記のようにアノテーションされていることを確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299863/31f3e285-dbc1-5891-e881-6157792ed469.png)

また学習モデルによるプレアノテーションは、辞書によるプレアノテーションとは異なり、辞書に登録されているかどうかに関わらず、学習した内容にもとづきアノテーションを行うため、Relationもアノテーションされています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299863/9ad2b431-3544-be86-7f58-9e579e7a3718.png)


<h1>まとめ</h1>
<p>
　新規の文書に効率的にアノテーションを行う手段として２つの機能を紹介しましたが、どちらのプレアノテーションを利用すれば良いのでしょうか。どちらを利用するかは、それぞれのメリデメを把握しておく必要があります。著者の経験上、下記のメリデメがあると思います。状況に応じて使い分けることが大切です。
<ul>
<li><b>辞書によるプレアノテーション</b></li>
<ul>
<li><b>メリット</b></li>
辞書に登録した内容に基づき一貫性を持ってアノテーションできる（アノテーションし忘れを防げる）　
<li><b>デメリット</b></li>
・辞書があることが前提となる<br>
・プレアノテーションの範囲が、登録されている辞書の範囲にとどまる
</ul>
<li><b>学習モデルによるプレアノテーション</b></li>
<ul>
<li><b>メリット</b></li>
学習内容にもとづき、辞書に登録していないEntityやRelationについてもアノテーションしてくれる
<li><b>デメリット</b></li>
・作成済みの学習モデルがあることが前提となる<br>
・精度が低い学習モデルで実施すると修正作業が発生するため、かえって手間が増える
</ul>
</ul>
<br>
本記事が、アノテーションの煩わしさを解消するHints&Tipsとなれば幸いです。
</p>