Watson Knowledge StudioのTutorialをやってみた (後編)

この記事は最終更新日から1年以上が経過しています。

はじめに(前編のおさらい)

Watson Knowledge Studio(以下、WKS)は、IBM Watsonにおいて、特定の業界に特化して用いられる言葉のニュアンス、意味や関係を理解する機械学習モデルを、開発者と専門家が協力して作成するクラウド・ベースのアプリケーションです。

本記事は、Watson Knowledge StudioのTutorialをやってみた (前編)に続く後編です。前回に引き続き、WKSのチュートリアルを実施していきます。

前回では、まずチュートリアルに先立ち、WKSの特色や使用の流れ、アノテーションやtype systemといった概念について解説しました。そしてチュートリアルでは、プロジェクトの作成、type systemの作成、ドキュメントの追加、ドキュメントセットの作成、辞書の追加を実施しました。

今回は、ヒューマン・アノテーション辞書ベースアノテーション機械学習アノテーションなど、数種類のアノテーションの方法をチュートリアルを通して学習します。

チュートリアルの前に

前回(前編)で解説した用語のひとつに、ドキュメントに対して正解データを付与する作業を意味するアノテーションがありました。WKSでは、このアノテーションを自動的に行ってくれる機械学習アノテーターを作成することを目指すことになります。

今回(後編)では、この機械学習アノテーターを作成するために用いる次の3つのアノテーションを、チュートリアルを通して体験します。

  • ヒューマン・アノテーション:人間の目でドキュメントを確認し、その中の単語や関係に対して手動でentityやrelationを割り当てる方法です。ある意味もっとも確実といえる方法ですが、時間がかかったり人間ならではのミスもある方法です。複数のヒューマンアノテーターで一斉にアノテーションすることにより正確さを高めることもできますが、その場合はアノテーター間で矛盾したアノテーションをおこなう(アノテーションの競合といいます)可能性もあるため、最終的にはその競合を解消する必要があります。

  • 辞書ベースアノテーション:辞書とドキュメントを照らし合わせ、辞書にある単語がドキュメント内にもある場合、その辞書に対応するentity typeをその単語に割り当てる方法です。ドキュメントが固有名詞や特殊な用語を持つ場合に有効ですが、逆に多義語の分類を正しくできないことがあります(はし(橋)とはし(端)など)。また、辞書ベースアノテーションではrelationをアノテーションしないため、代わりにヒューマン・アノテーションにより手動で補う必要があります。

  • 機械学習アノテーション:既存のドキュメントのみをアノテーションした後、機械学習モデルを作成してアノテーションの結果を学習させ、その学習モデルを使用して後から追加した未知の新しい文書に自動的にアノテーションする方法です。学習に使用されたドキュメントと新しいドキュメントが似ている場合に有効です。

重要なのはこの3つのアノテーションの使い分けです。たとえば、辞書ベースアノテーションを事前に実施しておくことで、ヒューマン・アノテーションを行う際にドキュメントのアノテーションを一からすべて実施する必要をなくし、作業負荷を軽減する、といったことが可能になります。こうしてアノテーションしたドキュメントを機械学習させてモデルを作成したり、逆にそのモデルによって機械学習アノテーションしたドキュメントを再びヒューマン・アノテーションによって修正してモデルを再学習させることによって、機械学習アノテーターの精度を改善する、といった作業をすすめることになります。

チュートリアル

では、前回の続きからチュートリアルを再開します。

  • 前編(前回)
    • Lesson 1: ユーザーロールの割り当て
    • Lesson 2: プロジェクトの作成
    • Lesson 3: type system の作成
    • Lesson 4: ドキュメントの追加
    • Lesson 5: ドキュメントセットの作成
    • Lesson 6: 辞書の追加
  • 後編(今回)
    • Lesson 7: 辞書ベースアノテーターによる事前アノテーション
    • Lesson 8: アノテーション・タスクの作成
    • Lesson 9: ドキュメントのアノテーション
    • Lesson 10: アノテーター間合意分析
    • Lesson 11: アノテーション済ドキュメント間の競合の解消
    • Lesson 12: 機械学習アノテーターの作成
    • Lesson 13: 機械学習アノテーターによる事前アノテーション

なお、Lesson 8からLesson 11は、ヒューマン・アノテーションの作業に相当します。

Lesson 7: 辞書ベースアノテーターによる事前アノテーション

辞書ベースアノテーターを作成して、ドキュメントの事前アノテーションを行います。

  1. Annotator Componentページにて、DictionaryボックスのCreate this type of pre-annotatorをクリックします。
    WS000027.JPG

  2. Create Annotatorページにて、前回(前編)の「Lesson 6: 辞書の作成」で作成したTest dictionary辞書の横のチェックボックスを選択します。選択された辞書の単語がプレビューに表示されます。
    さらに、Createをクリックして、ドロップダウンからCreate & Runを選択します。
    WS000028.JPG

  3. Run Annotatorページにて、前回(前編)の「Lesson 5: ドキュメントセットの作成」で作成した2つのドキュメントセットの横のチェックボックスを選択し、Runをクリックします。
    WS000029.JPG
    Annotator Componentページに辞書ベースアノテーターが追加され、この辞書ベースアノテーターによる2つのドキュメントセットSet1Set2への事前アノテーションが行われます。
    WS000030.JPG

Lesson 8: アノテーション・タスクの作成

ヒューマン・アノテーションを行うために、アノテーション・タスクを作成します。

  1. Human Annotationページにて、Add Taskをクリックします。
    WS000031.JPG

  2. タスクを表すボックスにおいて、タスクの詳細を下記のように指定し、Add Taskをクリックします。

    • Enter a title欄:Test
    • Deadline欄:未来の任意の日付 WS000032.JPG
  3. Add Document Set to Taskウインドウにおいて、前回(前編)の「Lesson 5: ドキュメントセットの作成」で作成した2つのドキュメントセットの横のチェックボックスを選択し、Create Taskをクリックします。
    WS000033.JPG
    Testタスクが作成され、Human AnnotationページのTasksタブに表示されます。
    WS000034.JPG

Lesson 9: ドキュメントのアノテーション

ヒューマン・アノテーションを行います。
実際のプロジェクトでは、HUMAN_ANNOTATORロールを持つ複数の異なるユーザーにより多くの単語に対してアノテーションを行いますが、本チュートリアルでは話を簡単にするため、単一のユーザーにより2箇所だけアノテーションを行うことにします。

  1. Human Annotationページにて、「Lesson 8: アノテーション・タスクの作成」で作成したTestアノテーション・タスクをクリックします。
    WS000034.JPG

  2. ドキュメントセットSet 1の横のAnnotateをクリックします。
    WS000036.JPG

  3. ドキュメント一覧のページにて、ドキュメントTechnology - gmanews.tvをクリックします。 
    WS000037.JPG

  4. アノテーションページが開きます。
    WS000038.JPG
    すでに単語IBMORGANIZATION entity typeとしてアノテーションされています。このアノテーションは、「Lesson 7: 辞書ベースアノテーターによる事前アノテーション」にて辞書ベースアノテーターによって事前に追加されたものです。この事前アノテーションは正しいので変更の必要はありません。

  5. 左側のMentionアイコンをクリックし、entityのアノテーションを開始します。
    ドキュメント内のテキストThomas Watsonを選択して、右のEntity-TypeリストのPERSONをクリックします。これにより、テキストThomas WatsonPERSONentity typeとしてアノテーションされます。
    WS000039.JPG
    ※ショートカットコマンドとして、右側のリスト内のentity/relationをクリックする際、代わりにリスト内のentity/relationの左側に表示されている文字(PERSONentityの場合はpPRODUCTentityの場合はQなど)を入力することによってもアノテーションを行うことができます。

  6. 左側のRelationアイコンをクリックし、ドキュメント内の2つのテキストThomas WatsonIBMのrelationのアノテーションを開始します。
    この2つのテキスト上部に表示されたentity typeのラベルPERSONORGANIZATIONをこの順番で選択します。さらに、右のRelationリストのfounderOfをクリックします。これにより、2つのテキストThomas WatsonIBMとの間の関係がfouderOfrelation typeとしてアノテーションされます。
    WS000040.JPG

  7. 上部のメニューからCompletedを選択し、Saveをクリックします。
    WS000043.JPG

  8. 戻ってきたドキュメント一覧のページにて、Submit Allをクリックします。
    WS000044.JPG

  9. ドキュメントセットSet 2に対しても、手順2.-8.を繰り返します。ただし、手順6.においてのみ、founderOfrelation typeの代わりにemployedByrelation typeを選択します。
    WS000045.JPG

Lesson 10: アノテーター間合意分析

複数のヒューマン・アノテーターによるアノテーションを比較する方法を見ます。

「Lesson 9:ドキュメントのアノテーション」により、ヒューマン・アノテーターからアノテーションが提出されました。異なるヒューマン・アノテーターが同じドキュメントに対して矛盾なくアノテーションしている(アノテーションに競合がない)かどうかを確認するには、アノテーター間合意(Inter-Annotator Agreement)スコア(以下、IAAスコア)を確認します。スコアが許容範囲内であれば、提出されたアノテーションを承認し、そうでない場合は、提出されたアノテーションを却下して、再度ヒューマン・アノテーターに差し戻します。

  1. Human Annotationページにて、Testタスクをクリックします。
    WS000052.JPG

  2. 2つのドキュメントセットSet 1Set 2の状態がSUBMITTEDになっていることを確認した上で、Calcurate Inter-Annotator Agreementをクリックします。
    WS000046.JPG

  3. IAAスコアを表示します。このとき、画面上部のMentionPairと表示されたドロップダウンを選択することで、表示を切り替えます。

    • Mention/Relation:entity/relationごとのIAAスコアを表示
    • Pair/Document:アノテーター/ドキュメントごとのIAAスコアを表示 WS000047_modified.JPG
      ※上記画面では、Mention/RelationのドロップダウンでMentionを選択したことにより各entityごとのIAAスコアが表示され、さらにPair/DocumentのプルダウンでPairを選択したことによりアノテーターごとの比較をおこなっています(青枠部分に2人のアノテーターの名前が表示されます)。
  4. スコアを確認後、状態がSUBMITTEDになっているドキュメントの隣に表示されているチェックボックスを選択して、Approve(承認)またはRejectを(却下)をクリックします。本チュートリアルではApproveを選択します。
    WS000051.JPG

完全合意、すなわち2人のヒューマン・アノテーターがそのentityやrelationに対して同じアノテーションをした場合、IAAスコアは1となります。アノテーションを行わなかったものに対しては、IAAスコアはN/Aとなります。
チュートリアルの結果からは、2つのアノテーション間のIAAに関して、下記のことが読み取れます。

  • ORGANIZATIONPERSONentity typeのIAAには1(Set 1Set 2で同じアノテーションを行ったため)
    WS000048.JPG

  • employedByfounderOfrelation typeのIAAには0(Set 1Set 2で異なるアノテーションを行ったため)
    WS000050.JPG

Lesson 11: アノテーション済ドキュメント間の競合の解消

ドキュメント間のアノテーションの競合を解消する方法を学習します。
「Lesson 10: アノテーター間合意分析」においてアノテーションを承認する場合、もしアノテーションに競合がある場合は承認前に競合を解消する必要があります。

  1. Human Annotationページにて、Testタスクをクリックします。
    WS000052.JPG

  2. 2つのドキュメントセットSet 1Set 2の状態がIN CONFLICTになっていることを確認した上で、Check Overlapping Documents for Conflictsを選択します。
    WS000054.JPG

  3. Overlapping Documents in Task Testページにて、1つのドキュメントの横のCheck for Conflictsをクリックします。
    WS000055.JPG

  4. Set 1Set 2を選択して、Check for Conflictsをクリックします。
    WS000057_modified.JPG

  5. 競合しているアノテーションの数を確認し、競合が存在した場合、そのアノテーションを削除または修正することにより競合を解消します。
    WS000059.JPG

  6. 他のドキュメントに対しても、手順3. ~ 7.を繰り返し、アノテーションの競合を解消します。
    WS000062.JPG

Lesson 12: 機械学習アノテーターの作成

機械学習アノテーターを作成し、学習を行い、その結果を確認します。

  1. Annotator ComponentページにてCreate Annotatorをクリックします。
    WS000064.JPG

  2. Create Annotatorページにて、Machine LeaerningボックスのCreate this type of pre-annotatorをクリックします。
    WS000065.JPG

  3. 学習に使用するドキュメントセットを指定するため、Set 1Set 2のチェックボックスを選択します。
    さらに、これらのドキュメントセットを下記3種類のドキュメントに分けるため、それぞれの割合を指定し、Train & Evaluateをクリックします。

    • Training Set:まだ学習を行っていないアノテーターの学習を行うために使用されるドキュメントセット。
    • Test Set:すでに学習を行ったアノテーターのテストを行うために使用されるドキュメントセット。
    • Blind Set:アノテーターのテストと改善を何度か反復した後で、定期的にシステムのテストを行うために使用されるドキュメントセット。
      ※数値を入力するテキストボックスには推奨値(70%, 23%, 7%)がデフォルトで入力されていますが、ユーザーの判断で変更の必要がある場合には改めて入力し直します。
      WS000066.JPG機械学習アノテーターの学習がはじまります。 ドキュメント内の単語の量やアノテーションの個数により、十数分から数時間程度かかることがあります。 WS000067.JPG
  4. 機械学習アノテーターの学習が終了した後、Machine LeaerningボックスのDetailsをクリックします。
    WS000068.JPG

  5. Train/Test/Buildページにて以下のボタンをクリックすると、それぞれ下記の操作をすることができます。

    • View Ground Truth:ヒューマン・アノテーションしたドキュメントの内容の確認
    • View Decoding Result:学習済みの機械学習アノテーターが行ったアノテーションの確認 WS000069.JPG
  6. Statisticsページにて、各entityに対する機械学習アノテーションの精度(Precision)と再現度(Recall)、F1値(後述)といった統計情報を表示します。
    WS000070.JPG

  7. Versionページでは、アノテーターとその作成に使用されたリソース(辞書やアノテーション・タスクを除く)のスナップショットを作成できます。
    たとえば、アノテーター変更前にスナップショットを作成し、アノテーション変更後に統計情報が悪い場合は、古いバージョンに戻し新しいバージョンを削除する、といった使い方ができます。
    WS000071.JPG
    WS000072.JPG

なお、各entityに対するアノテーションの精度と再現度F1値の定義は下記のとおりです。

名称変数(※)意味
精度Precision=TPTP+FP実際にそのentityにアノテーションされた単語のうち、本来そのentityにアノテーションされるべきである単語の割合
再現度Recall=TPTP+FN本来そのentityにアノテーションされるべきである単語のうち、実際にそのentityにアノテーションされた単語の割合
F1値F1=2PrecisionRecallPrecision+Recall精度と再現度の調和平均

※ここで、各変数の定義は以下の通りです。

名称変数意味
True PositiveTP本来そのentityにアノテーションされるべきであり、実際にそのentityにアノテーションされた単語の数
True NegativeTN本来そのentityにアノテーションされるべきでなく、実際にそのentityにアノテーションされなかった単語の数
False PositiveFP本来そのentityにアノテーションされるべきでなく、実際にそのentityにアノテーションされた単語の数
False NegativeFN本来そのentityにアノテーションされるべきであり、実際にそのentityにアノテーションされなかった単語の数

Lesson 13: 機械学習アノテーターによるドキュメントの事前アノテーション

学習させた機械学習アノテーターを使用して、後から追加したドキュメントを機械学習アノテーションします。

さらに、機械学習アノテーションしたドキュメントにヒューマン・アノテーションによる修正を行い、修正したそのドキュメントを使用して機械学習アノテーターを再度学習させてみます。

  1. ドキュメントdocuments-ml.csvを追加し、下記設定でドキュメントセットを作成します(参考:Lesson 4: ドキュメントの追加、Lesson 5: ドキュメントセットの作成)。

    • Base Set欄:documents-ml.csv
    • Overlap欄:100
    • Annotator欄:sample_user
    • Set Name欄:adminSet WS000079.JPG
  2. Annotator Componentページにて、Machine LeaerningボックスのRunをクリックします。
    WS000080.JPG

  3. Run Annotatorページにて、adminSetを選択して、Runをクリックします。
    WS000081.JPG
    機械学習アノテーションが開始されます。
    WS000082.JPG

  4. 機械学習アノテーションが完了した後、アノテーション・タスクTest2を作成し、ドキュメントセットadminSetをヒューマン・アノテーションして結果を保存した後、そのDocument Setを承認します(参考:Lesson 8: アノテーション・タスクの作成、Lesson 9: ドキュメントのアノテーション、Lesson 10: アノテーター間合意分析、Lesson 11: アノテーションしたドキュメント内の矛盾の解消)。
    WS000083.JPG
    WS000084.JPG
    WS000088.JPG

  5. Annotator Componentページにて、Machine LearningボックスのDetailをクリックします。
    WS000092.JPG

  6. Train/Test/BuildページにてEdit Setsをクリックします。
    WS000105.JPG

  7. 追加したドキュメントセットadminSet横のチェックボックスを選択して学習データに追加し、TRAINまたはTRAIN & EVALUATEをクリックします。
    WS000095.JPG
    これにより、追加したドキュメントセットを含めて再度機械学習アノテーターの学習が始まります。

おわりに

前回(前編)と今回(後編)を通して、以上でWKSのチュートリアルを完了しました。type system、ドキュメントセット、辞書、アノテーションといった基本概念に始まり、アノテーションの種類(ヒューマン・アノテーション、辞書ベースアノテーション、機械学習アノテーション)、およびアノテーションの競合やその解消といった、WKSを使う上での基本的な流れをひととおりご覧いただけたかと思います。

前回(前編)で紹介したとおり、WKSで作成したモデルは、Watson ExplorerAlchemy APIなどの他の多くのWatson製品と連携することができます。これに関しては、別記事にて詳しく紹介したいと思います。

お問い合わせ

ご質問がございましたら、こちらにもお問い合わせいただけます。

すくすくワトソン編集室: eb17685@jp.ibm.com


+ Recent posts