背景
ドキュメントには、様々な形式知が詰まっています。それを構造化されたデータセットに変換できると、様々な使い方が考えられます。いわゆる非構造化データから、構造化データへの変換といっていいでしょう。
そのとっても良い例が JFKFiles
です。
JFKFiles:
https://www.microsoft.com/en-us/ai/ai-lab-jfk-files
目的は文書を探す事です。
そのために、Cognitive Services
や、独自のNLP
モデルをうまく使っています。
Azure Cognitive Search における AI の概要:
https://docs.microsoft.com/ja-jp/azure/search/cognitive-search-concept-intro
decode18
にて、その一部の機能が、Azure Search
に入ったこともあり、Breakout Session にて取り扱いました。文書の差分更新に強く、n-gram/形態素解析などの言語解析エンジンを持ち、かつ、全文検索エンジンたる機能をマネージドで持っている Search Engine ですから。その利便性の高さに驚いたものです。
de:code 2018 AI01:
https://www.microsoft.com/ja-jp/events/decode/2018download/archive.aspx?#AI01
それが、MSIgnite2019
にて更に強化されていました。具体的には、以下の2つの機能が追加され、プロトタイプ作成までが、あっという間です。
Understanding AI enabled search for your apps: Azure Search technical edition:
https://myignite.techcommunity.microsoft.com/sessions/81078?source=sessions
ここでは、そのプロトタイプ作成手順を、補足していきます。
注意事項
ここで扱っているナレッジストア
は、執筆時点 (2020/1/19)、パブリックプレビューです。
事前準備
- Azure のサブスクリプション
- PDF、Word などのファイル
- Power BI Desktop (無料)
以下、オプション:
- Azure Storage Explorer
- Blob へのファイルアップロード用。Azure Portal からでも出来ますが。
- https://azure.microsoft.com/ja-jp/features/storage-explorer/
手順
特に指定が無い限り、規定値で大丈夫です😊
1. クロール対象のファイル置き場の作成
-
Azure Portal で Azure Storage Account を作成
https://docs.microsoft.com/ja-jp/azure/storage/common/storage-account-create?tabs=azure-portal -
Blob Storage に、ファイルを保存する、コンテナー (フォルダー) を作成
-
Azure Storage Explorer で、ファイルを Blob Storage にアップロード
2. Azure Search インスタンスの作成
3. Indexer の作成 と Cognitive Services らの組み込み
Indexer
とは、クローラーみたいな存在です。指定した Blob のコンテナーを、指定したスケジュールでクローリングしてくれます。Azure Search では、そのクローリング時に、別のパイプライン処理を組み込むことができて、特に Deep Learning 関連のものを コグニティブ スキルセット
と呼んでいます。それに限らずできるのですが。
面白いことに、その解析結果は、2つのデータベースに出力されます。
- 転置インデックス: Search 用
- ナレッジストア: 構造化されたデータの、2次利用 用。Azure Table Storage か、Azure Blob Storage に保存されています。
手順はこちらを。
クイック スタート:Azure Cognitive Search コグニティブ スキルセットを Azure portal で作成する
https://docs.microsoft.com/ja-jp/azure/search/cognitive-search-quickstart-blob
3. Search 用の Web アプリの HTML 作成
Azure Search の処理は、REST ですから、JavaScript などからも比較的容易に呼びやすいわけです。とはいいつつ、それなりに手間なのは事実。
なんと、Azure Search はインデックス
のポータルから、そのHTMLを作成してくれる機能があるのです! 😍
どこでも動かせるので、プロトタイプとしては、超絶便利!
手順:
クイック スタート:ポータルで検索アプリを作成する (Azure Cognitive Search):
https://docs.microsoft.com/ja-jp/azure/search/search-create-app-portal
4. 言葉の関連性などをグラフ表現などで、可視化して、フィルタリングしたい! --- Power BI からの接続
これ、超絶簡単で。しかも、Azure Table 上に格納された情報だけで、ここまで Power BI でやってくれる、とは...
Azure Portal の中ですと スキルセット
から設定できます。用意されている Power BIのテンプレートファイルに、ナレッジストア
である、Azure Storageアカウントへの接続文字列を設定するだけです😍
Power BI Template の設定項目:
出来ました。
- フィルタリングが容易。BIツールだから
- 自分で、グラフ表現や、固定でのフィルタリングなどの設定が容易。Power BI Desktopが、よくできたダッシュボード作成ツールでもあるから
Key Phase:
Entity:
- 一番下の、Page を変えてください
手順は、こちら。
Power BI を使用してナレッジ ストアに接続する:
https://docs.microsoft.com/ja-jp/azure/search/knowledge-store-connect-power-bi
What's Next
ここまで来ると、以下がやりたくなると思います。
- Cognitive Servicesで用意されているものではないものを、パイプライン処理で組み込みたい
- Azure コグニティブ検索エンリッチメント パイプラインにカスタム スキルを追加する方法
- https://docs.microsoft.com/ja-jp/azure/search/cognitive-search-custom-skill-interface
- NLP のモデルを効率的に開発したい
- BERTに限らず、Azure を活用しての NLP モデル開発のベストプラクティスがまとまっています。
- NLP Best Practices
- https://github.com/microsoft/nlp-recipes
Make Vision
以下、私の考察です。
これがあって、先の What's Next になってますね。
- 人
これは、Knowledge Managementの領域でもありますよね。となると「人」というEntityは外せません。人に着目すると、人の Activity Log にも注目したくなります。
- Data
非構造化データの構造化は、Computer業界の長年の夢であったといっていいかと思います。どんなに、動画解析エンジンが進んでも、その Speech to Textや、モーションデータを、最後は構造化するわけですから。
この Cognitive Search の取り組みは、そこへの再度の挑戦といっていいですよね。
整理ますと、こんな感じ。今日時点。
Happy Hacking!