当記事はWatson Discovery Serviceが日本語対応したので、触ってみた【何、それ?】編の続きです。
え!今後はSmart Document Understanding推しかよ!(Getting Started)
Watson Discoveryのドキュメントのトップの Getting startedをみたら、内容が最新のSmart Document Understandingのハンズオンになってました。あ、そうなの? もう?今後はそっちメインで?と、ちと意外でしたが、まあやってみました。
日本語のpdfもやってみたのですが、pdfの作り方の違いでしょうか、SDUエディター上で文字が認識されなかったり、なぜか本文全体がFooterと認識されてしまって直すのがえらく大変なものがあったり、、、とまだちょっと問題ありそうです。SDUは2018/12にベータ公開されて2019/2にGAした「出来立てほやほや」の機能です。日本語もサポートされてますが、個人的には本番利用はすこし様子を見ていただいたほうがいいように感じました。
以下、大元のドキュメントと章立て合わせてます
0) 事前準備
IBM Cloudにログインし、カタログからWatson Discoveryのインスタンスを作成します
1) Discovery Toolingの起動
管理コンソールでサービスをクリックし、「ツールの起動」ボタン
2) コレクションの作成
右上でディスクのアイコンをクリックして「Create Environment」
プランどうする?と聞かれるのでとりあえず「Set up with current plan」で無料のLiteプランで進めます
Collection名を「InstallDoc」として「Create」
Advancedでの構成はElement Classification用なのでチェックしないようお願いします。
3)サンプル・ドキュメントのダウンロードとコレクションへのアップロード
Watson Explorer Installation GuideのPDFをPCにダウンロードします。中身は普通の製品マニュアルで98ページあります。目次などの体裁も整ったものです。
このpdfをドラッグ&ドロップまたは「browse from computer」でアップロードします。
処理が終わると以下のようになります。この時点で既に索引は作成済みです。
文書は1つ
「text」というフィールドのみ認識されています
デフォルトのエンリッチメントが適用されています
すぐ使える照会が組み立てられています
エラーになった文書があれば、ここに表示されます
まずは文書の照会を試します。右下の「Build your own query」をクリック
自然言語で照会しましょう。照会パネルの「Use natural language」で「What are the minimum hardware requirements」と入力し、「Run Query」ボタンを押すと、右側に照会の結果が表示されます。
左上の「InstallDocs」のリンクをクリックしてOverviewパネルに戻ります
4) ドキュメントのアノテーション
今はドキュメント全体が一つの「text」という分類でしか認識されていません。でも実際は目次やヘダー、フッターなどの構造があります。ではPDFマニュアルに「ここはこういう意味だよ!」とアノテーションを付けて文書の構造を教えていきましょう。
タブ「Identify fields」にPDFのドキュメントが表示されています。右側には様々なフィールドの意味が定義されています。
まずはタイトルです。右のfield labelsからtitileをクリックし、「Installation and Integration Guide」のタイトルに相当する箇所をクリックします。クリックするとフィールドの色がピンクに変わります。この操作で「ここはタイトルだよ!」と教えているわけです。できたら「Submit Page」
つぎはフッターです。ページ4に進み、右のfield labelsからfooterを選び、該当箇所クリックの上、また「Submit Page」
ページ5とページ6も同様にfooterを定義して各ページで「Submit Page」
この状態でページ7やページ8に進むと、このページでは、何もしていないのにフッターの箇所が認識されているのがわかります。まさにSmart Document Understanding(スマートな文書の理解)ですね!
ページ7, 9,10 のtitleとsubtitleも同様にアノテーションしましょう.各ページで「Submit Page」をお忘れなく。
p11以降も数ページでいいのでtitleとsubtitleも同様にアノテーションしてみてください。
文書は98ページと大きいので、検索用に小さい単位に区切ります。「Manage Fields」タブ-右側「Split Document on each occurence of 」で「subtitle」を指定します。先ほどのアノテーションでsubtitleが出てくる都度、内部的に別の文書に分割するわけです。なぜ分割するかというと、性能面もありますが検索がヒットした箇所の特定を容易にするためです。例えば1文書がマニュアル数百ページで検索ヒットした場合、「これ、この文書(のどこか)にあったよ」といわれただけでは探せません。細かく区切っておけば「この章のこの節」と特定しやすくなりますよね。
これでひとまずアノテーションは完了です。右上の「Apply Changes to Collection」を押すと、改めて文書をアップロードするパネルがでるので、もう一度同じ文書をアップロードします。要は、文書の解釈ルールが変わったので、もういちど解釈しなおすわけです。同じ名前の文書なら置換されます。
しばらくすると文書が40以上に分割され、title,subtitle,footer,textのフィールドが特定されました。フィールドが特定されれば、サブタイトルのみを検索する、footerは検索対象に含めない、など細かい検索結果の調整ができます。
何もおきなければ再度ここでupload documentする、ブラウザーをリロードする、など試みてください。
左の「View Metadata Schema」ではCollectionレベルで認識されたフィールドが見られます。
Document Viewタブでは個別のドキュメントで認識された内容が見られます。
5) 再度、照会します
では改めて「Build your query」で冒頭と同じ自然言語照会「What are the minimum hardware requirements」を実行してみましょう。
下記はアノテーション実施前後の検索結果の比較です。初期状態よりSDU&分離を適用した後の検索結果のほうが、最小ハードウエア要件の結果としては、よさげにみえます。
照会(Query)のチュートリアル
以下2つのTutorialもありました
前者はプログラムでAPIを使って照会を実行するものです。ここでは後者のDiscovery Toolingで照会を実行する方をやってみます。
0) 事前準備
「IBM Press Release」という名前の新しいコレクションを作ります
このページから上記test-doc1.html~test-doc4.htmlをPCにダウンロードし、上記コレクションにアップロードします。
1) データ・スキーマをサクッと見ておく
「View data schema」でCollection/Documentのタブにて、元のhtmlからどんな情報が抽出されているのか(エンリッチ)、さらっとみておきましょう。
2) ベーシックな照会(Query)を実行する
デフォルトで適用されたエンリッチメントのうち、Concept Expansionが付与したメタデータのうち「Cloud computing」という概念(Concept)をもつ文書を照会してみましょう。単に文書全体を全文検索でサーチするのではなく、特定のエンリッチされたフィールドを照会の対象にするのがキモです。たとえば目次や索引で単語がヒットしても、有意義な結果は得られませんよね。適切なものだけ検索の対象とする=余計なヒットが減ることで、検索結果の品質が上がることが期待できます。今回は自然言語検索ではなく、Discovery特有の検索言語であるDQL(Discovery Query Language)を使います。
1.「Build Queries」で「Use the Discovery Query Language」タブ
2. 以下を入力
- field: enriched_text.concept.text
- Operator:contains
- Value: Cloud Comuting
:triangular_flag_on_post: 組み立てられたDQL enriched_text.concepts.text:"Cloud computing"が表示されます
- Run Query
- 右側に一件ヒットで結果が表示されます。Query URLはそのままアプリで利用できます。
- 右上の「Edit in query language」で入力モードを切り替えて、直接以下のようにDQLを書くこともできます。
畳まれている「>More Options」を展開すると、色々な検索オプションがあることがわかります。
3) 様々な照会(Query)を実行する
もっとエンリッチメントでの検索をやってみます。
a) 条件:センチメントが"positive"
enriched_text.sentiment.document.label:"positive"
b) 条件:カテゴリーが"/health and fitness/men's health"
enriched_text.categories.label::"/health and fitness/men's health1"
- isは完全一致でDQLでは :: (コロン2つ)で表現
c) 条件:エンティティが"IBM"
enriched_text.entities.text:"IBM",enriched_text.entities.text:!"Watson"
DQLの完全な構文は Query Referenceをご参照ください
4) 連結照会(Combined Query)
filterとqueryを連結した書き方をしましょう。filter=IBMで絞り込んだ結果を更にquery="World Wide Web"で絞り込みます
ご参考) QueryとFilterはどう違う?
Serch for documentsとFilter which documents you queryの両方を指定します
5) 集約(Aggregation)
カウントやトップ10、センチメントの概要など、複数のデータを集約する照会です
コンセプトのトップ10を照会します。
** term(enriched_text.concepts.text,count:10)**
6) Watson Discovery News
Watson Discovery Newsでフットボール・チーム ”Pittsburgh Steelers”に対して"positive"センチメントを有する記事トップ10件を照会します
Watson Discovery News(English)のコレクションを開きます
以下の条件を入力します
** text:"Pittsburgh Steelers",enriched_text.sentiment.document.label:"positive"**
Number of documents t returnは10件にします(デフォルト)
照会の結果、記事が10件返りました
「Connector使ってみた」記事
「Watson DiscoveryのConnectorを使ってみた( ICOS/Webクロール )」
クローラーでMySQLをクロールしてみる
(2019/2/15) 現時点でクローラーの利用は非推奨ですが、DBに対する利用はOKなので昔の記事をご紹介します。
「Watson Discovery ServiceのData Crawlerでデータベース(MySQL)をクロールしてみた」
改訂履歴
Release Notes日付 | 記事更新日 | 内容 |
---|---|---|
2017/10/16 | 2017/10/18 | Discovery Toolingが機能強化され画面が変更になったので一部画面を取り直しました |
- | 2018/02/15 | SDUのGAに伴い、Getting Startedが全面的に変わっていたので、全面的に書き換え。 |
- | 2018/02/19 | Connector使ってみた記事へのリンク追加 |
以上です。
-
ドキュメントでは"health_and_fitness"で検索するようになっていましたが、記述が古いようです。 ↩