【OpenHack】AI-Powered Knowledge Mining いけばわかるさ！

# はじめに

みなさん、検索エンジンってつくったことありますか？
私はあります:muscle: そう、**OpenHack**で。

本記事は2月開催OpenHackに参加して得た学びの記録です。

https://openhack.microsoft.com/

https://zine.qiita.com/event/202112-microsoft/

## 今回のテーマは AI-Powered Knowledge Mining

OpenHackは8つのテーマに分かれていて、開催回ごとにテーマが変わります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/b7c24f6a-0df4-df00-f79a-ae72b28278cf.png)

>AI-Powered Knowledge Mining OpenHackでは、開発者がアプリケーションやサービスにインテリジェントな検索機能を追加し、人工知能を活用してデータから意味のある結果を抽出できるようにします。参加者は、Azure Searchを検索ソリューションのコアとして使用する方法や、Cognitive Services、Language Understanding Intelligence Service、Azure Machine Learning、およびカスタムコードとの統合によって検索を強化する方法を探ります。

## 全体像

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/6ea82b29-09a8-9475-bede-f4b7fac3ca9c.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/83b35f6d-d493-6d55-e261-91fe9f949f5c.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/cd1e0f3d-92b7-3d19-c364-578287971fd1.png)

## 参加メモ

### データ・環境

このサンプルデータをもとにシナリオは進んでいきます。

https://aka.ms/kmoh-docs

:::note
OpenHackのリポジトリ
https://github.com/microsoft/OpenHack/blob/main/byos/knowledge-mining/deployment.md
:::

### 使用した主要サービス

サンプルデータを元に、`Microsoft QnA Maker`、`Language Service`、`Azure Search`などの各種リソースを使用してナレッジベースを作成、すべてのDocumentsを横串で**全文検索可能な状態**にしていきます。文章データやPDF内に書かれていることだけではなく、画像データをAIで解析したり、文章から感情を読み取ったりしてナレッジストアを充実させていきます。**AI-Powered**ですね:sunglasses:

### Azure Cognitive Search

今回のすべてのHubになるサービス。このなかにナレッジベースを作成し、検索システムを作成していきます。

https://docs.microsoft.com/ja-jp/azure/search/

https://docs.microsoft.com/ja-jp/azure/search/cognitive-search-skill-sentiment-v3

https://docs.microsoft.com/ja-jp/azure/search/cognitive-search-skill-image-analysis

https://docs.microsoft.com/ja-jp/azure/cognitive-services/language-service/question-answering/quickstart/sdk?pivots=studio#create-your-first-question-answering-projec


### Azure Cognitive Service for Language

WordやPDFからテキスト情報を抜き出してくるときに使用。

>Azure Cognitive Service for Language は、テキストを理解し分析するための自然言語処理 (NLP) 機能を提供するクラウドベースのサービスです。 このサービスを使用すると、Web ベースの Language Studio、REST API、およびクライアント ライブラリを使用してインテリジェントなアプリケーションを構築できます。

https://docs.microsoft.com/ja-jp/azure/cognitive-services/language-service/question-answering/quickstart/sdk?pivots=studio#create-your-first-question-answering-projec

### Azure Functions

カスタムスキルの作成で使用。組み込みのAIでもかなりリッチなコンテンツを付加することができるが、自分でPythonコードを記述するとさらに自由度高く付加情報を付与することができる。

https://docs.microsoft.com/ja-jp/azure/azure-functions/

## To Be Continued

今回のOpenHack3日間でシナリオすべて終わりませんでした。世界中で行われているOpenHackでも、期間内に最後まで到達したチームはほぼいないと説明もありました。今回到達しなかったシナリオの終盤では上記の主要サービス以外に、**Microsoft Form Recognizer、Azure Machine Learning**などを使用してさらにDocumentsをエンリッチしていくようでした。自社の環境でためしてみたいと思います。

### 参加しないのはなんで:thinking:？

参加を迷っている人がいたらぜひ背中を押したいです。非エンジニアでも全然OK。現に私もエンジニアではないです。

#### 前提条件

>今回のOpenHackを成功させ、最大限に活用するために、参加者はC#、JavaScript、Node.JS、Javaなどのプログラミング言語の知識を持っている必要があります。

申し込みページなどに参加前提条件の記載がありますが、あまり気にしなくてもOKです。参加してみて、大事なのは**前向きに参加する気持ち**と**テクノロジーと仲良くなりたい魂**だと感じました:smirk: 

参加者はこの分野に詳しい人達がたくさん集まることはありません（恐らく）。すでに詳しい人は3日間まるっと使うこのイベントには参加しないです。これからこのテクノロジーを使いたい、興味がある！という人が大半です。足りないところはチームのメンバー、コーチとともに補い合いましょう:slight_smile: わからないところがDocumentを読めば大丈夫！3日間もあるんですから。イベントが終わったころには**知識がかけている部分がより鮮明になる**というのもこのイベントのいいところだと思います。気になるなら **まずは参加！** がおすすめです。

実際には、今回のシナリオではREST APIもたくさん使いましたし、Pythonも多く登場します。むしろJSとかNodeは自チームでは出番がなかったです。ですので、「前提条件の知識に自信ないんだよなぁ・・・:pensive:」とか思い悩む必要なし。前提条件に書いてない知識も必要になるので、結局は**魂**:metal: でも予習していくとより楽しめることも間違いなし:muscle:

### 使用するテクノロジー

>Microsoft Azure Search、Cognitive Services、Azure Functions、Microsoft QnA Maker、Language Understanding Intelligent Service (LUIS)、Microsoft Form Recognizer、Azure Machine Learning

使用するテクノロジーについても**同上**です。触ったことがなくても大丈夫！でも少しでも触っておく、Documentsの概要を読んでおく・・・くらいしておくとさらに楽しく取り組めます。

### 進め方も安心

すべてチームに委ねられます。注意事項として言われるのは、**「休憩時間をしっかりとること」**くらいでしょうか。シナリオを読んだうえで、どのサービスを使用するのか、実装方法が複数ある場合にどの手法を使うのか、すべてチームで決めます。コーチは1名ついてくれるのですが、基本的には発言をしません。積極的な介入はしません。知らない技術がでてきたときにも、Documentsをみんなで読み込みます。あーでもない、こーでもないと議論して、実装して、期待通りの結果にならないとまたDocumentsを読む。その繰り返しです。

#### 議論が煮詰まっているとコーチから愛のDocument:relaxed:

しかし参加者でDocumentを読み漁ったりしてもなかなか先に進まないとき、コーチがそっと的確なDocumentをおいてくれます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/57f99648-6dda-cb09-0d2d-92f5dabb030a.png)

## 次回開催はModern Data Warehouse！

#### 2022/03/23(水)09:00 〜 2022/03/25(金) 17:00

https://dllab.connpass.com/event/237724/

迷わずいけよ、行けばわかるさ！