Watson検索システムの作り方・入門編
~データの取り込みから自然言語で検索できるまで~

Watsonは、IBMクラウドに登録するだけで誰でも使うことができるAI(人工知能)です(無料プランあり)。

今回は、Discoveryを使って、検索システムを作成していきます。

目次

そもそもDiscoveryとは

Discoveryは、大量のデータを検索して適切な意思決定を支援してくれる、クラウド型情報検索エンジンのことです。

Discoveryを使った検索をするまでの大まかな使い方の流れとしては、
①検索にあたって必要な大量のデータをDiscoveryに取り込む(クローラー機能)
②文章にどのようなフィールドが含まれているかの設定(フィールドの識別)
③さらに適切な検索結果が得られるようにデータに必要な情報をつける(エンリッチ機能)
④実際に検索(クエリ機能)
という4ステップです。

Discoveryの設定方法

まずは、IBMクラウドのアカウントを作成する必要があります。

こちらのページへアクセスし、必要事項を入力してアカウントを作成してください。

IBMクラウドにはさまざまなサービスがありますので、その中から「Discovery」を選択します。

(見つからない方はここから移動できます)

そのまま、「作成」を押します。

Watson Discoveryの起動」を押して開始します。

Discoveryの画面が起動しました。ここに既にある「Watson Discovery News」のようなものが1つ1つのデータを格納しているコレクションというものになります。

今から、新たなコレクションを作成していきます。

Upload your own data」を押すと、下のような画面が出てきます。

①このデータの名前を「Collection name」に記入してください。

②「Select the language of your documents」で「Japanese」を選択します。

③「create」を押します。

この画面になれば、初期設定は完了です。

Crawler(クローラー)機能でデータを取り込む

まず、①検索にあたって必要な大量のデータをDiscoveryに取り込む(クローラー機能)作業です。

取り込むデータの形式によって、のちのち検索結果としてでてきたデータが綺麗に出力されるかどうか決まってきます。

Discoveryは規則性のあるデータの読み込みを得意としており、最も綺麗に検索結果が出力されるのは、JSONやHTMLなどの非構造化データです。

反対に検索結果が出力されにくいのは、ExcelやPDFなどの構造化データです。

よって、構造化データはJSONデータなどに一度置き換えてから出力することをお勧めしております。

今回は、フィールド機能(後ほど詳しくご説明しますが、この機能はJSONデータでは使用できません)をご説明するため、wordデータをそのまま使用します。

初期設定の画面から、この「Upload data to get started」の部分にアップロードしたいデータをドラッグアンドドロップします。

もしくは「select documents」をクリックし、そこからデータを選択してアップロードします。

Processing your data」という画面が表示されます。

このような画面になれば、アップロード完了となります!

フィールドの識別

続いて、②文章にどのようなフィールドが含まれているかの設定(フィールドの識別)です。

※データがJSONまたはHTMLデータだと、この機能は使えませんので、ご注意ください。

こちらの画面の「Configure data」を押します。

すると、このようにアップロードしたデータが現れます。フィールドの設定をしていきましょう。

例えば、このような表紙のページですが、タイトルの文字が大きく書いてありますので、「title」フィールドを設定してみましょう。

右側「Field labels」の「title」をクリックしてみると、

このように「Field labels」の「title」がピンクに染まりました。

次にカーソルを右側の文章の「title」部分にもっていき、選択します。

このように文章が染まったら、フィールドの設定ができています。

違う部分の文章もそれぞれフィールドを設定し、1ページ終わるごとに、右下の「Submit page」を押して、次のページのフィールド設定へ進みましょう。

この作業を繰り返し、パターンが似ていると、だんだんDiscoveryが覚えてきて、設定をしていないページでもページを開けば勝手に識別してくれるようになります。

Enrich(エンリッチ)機能で文章に情報を付与する

続いて、③さらに適切な検索結果が得られるようにデータに必要な情報をつける(エンリッチ機能)作業です。

では、エンリッチ機能を実際に行っていく方法を説明します。

※HTML、JSONなどの非構造化データでは、エンリッチ機能を使えません。

まずは、「Manage data」を押し、自分のコレクションを一覧できる画面に戻ってください。

エンリッチ機能を使いたいコレクションをクリックすると、

この画面になります。「Overview」タブをクリックし、

下に画面をスクロールして「Add enrichments」をクリックします。

このような画面になったら、「Field to be enriched」から、使いたいエンリッチ機能を選択します。

エンリッチ機能はこのように数種類の機能に分類されますが、今回は、簡単に主な機能と、設定の仕方のみ説明していきます。

エンリッチ機能はおもに「NLU(自然言語処理)と連携してつかう」機能と「WKS(Watson Knowledge Studio)と連携してつかう」機能の2つに分かれていますが、今回は前者のみ説明します。

NLU(自然言語処理)と連携してつかう」エンリッチ機能は、以下の9つです。

・キーワード抽出(Keyword Extraction)

・感情分析(Emotion Analysis)

・コンセプトのタグつけ(Concept Tagging)

・カテゴリ分類(Category Classification)

・意味や役割の抽出(Semantic Role Extraction)

・センチメント分析(Sentiment Analysis)

・エンティティ抽出(Entity Extraction)

・2つのエンティティの関係抽出(Relation Extraction)

・要素分類(Element Classification)

・キーワード抽出(Keyword Extraction)

コンテンツ内のキーワードを識別します。

スコアが高いほどキーワードの関連性が高いです。

・感情分析(Emotion Analysis)

こちらでは、各感情(怒り・嫌悪・不安・喜び・悲しみ)のスコアの計算ができます。

・コンセプトのタグつけ(Concept Tagging)

対象の文章と関連の深い概念を、テキスト内に存在するほかの概念やエンティティに基づいて識別します。

・カテゴリ分類(Category Classification)

既存のカテゴリ分類が1000種類以上あり、階層の深さ(1分類中のより詳細な分類)も最大5階層まで識別可能です。

・意味や役割の抽出(Semantic Role Extraction)

文章の主語・動作・目的語の関係を識別します。

・センチメント分析(Sentiment Analysis)

文章が「肯定的」「中立」「否定的」かを判断します。

スコアが0なら中立的、正であれば肯定的、負であれば否定的となります。

・エンティティ抽出(Entity Extraction)

エンティティが何かという定義につきましては、こちらの項目「2-3.Entities(エンティティー)に辞書データを登録する」をご覧ください。

ここで得られるエンティティ・タイトルの種類は26種類で、サブタイトルは400種類以上あるようです。

・2つのエンティティの関係抽出(Relation Extraction)

2つのエンティティが関連していることを認識し、関係のタイプを識別します。

スコアが高ければ高いほど関連性が高いです。

・要素分類(Element Classification)

管理文書全体を解析し、重要な要素を変換・識別・分類し、文章の要素を抽出してくれます。

※PDFでのみ機能します。

では、エンリッチ機能の追加の方法を説明します。

それぞれの機能の右下にある「Add」という青いボタンを押し、上の「text:」の部分にその機能名が表示されれば、表示されている機能を使うことができます。

また、そこに表示されている機能の右側の×ボタンにカーソルを合わせてクリックすると、機能を追加するのをやめることができます。

追加すると、チェックマークと「Added!」というメッセージが右下に表れます。

追加したいものをすべて選択した後は、右上の×ボタンを押してこの画面を閉じましょう。

Query(クエリ)機能を使って、実際に検索してみる

最後に④実際に検索(クエリ)をしてみましょう。

自然文検索

  

まずは、自然文で検索してみましょう。

左側の🔍をクリックすると、このような画面になります。この中の一番上「Search for documents」をクリックします。

Use natural language」が選択されていることを確認し、検索条件を下の部分に入力してみてください。入力後に「Run Query」を1回、またはEnterキーを2回押すと、検索が開始されます。

右側を見ると、「Passages」という欄があるかと思いますが、この欄を下にスクロールすると、「Results」という欄が出てきます。

Results」には、検索にヒットしたドキュメントがこのように表示されています。

※「Passages」は、JSON以外のデータをアップデートしたときのみ、表示されます。

検索条件を指定してみる

検索条件を指定する場合は、「Use the discovery language」を押してみてください。

こちらのプルダウンからallanyを選ぶことができます。すべてのルールを満たすものを検索したい場合は、「all」を、いくつかのルールを満たす場合は、「any」を選択してください。

Field」「Operator」「Value」もそれぞれ自分が検索したいことをプルダウンから設定し、「Run Query」を1回、またはEnterキーを2回押し、検索を開始してみてください。

このように、右側に検索結果が出力されました!

[PR] Discovery対応の検索サービスなら「FirstSearch」

FirstSearchの特色

検索システムをWeb上で実用化するなら弊社「FirstSearch」がおすすめです。

・Discoveryの各機能に対応

・ご要望・業務内容に応じたカスタマイズに対応ができる

・姉妹製品「FirstContact」との連携可能

今なら初月の月額費が無料!

なんと初月無料で検索システムをご利用可能です!この機会にぜひお申し込みください。

FirstSearchの無料トライアルのお申し込み