oneWEX検証メモ - (0) 概要理解

#はじめに
oneWEXを使ってみた時のメモをつらつら書いていく予定ですが、まずはoneWEXの全体像をざっくり整理しておこうと思います。

最終的には、PDF,Word,Excelなどで保管されている各種文書をうまいこと探索したり分析したりするってのがどんな感じでできるのかを試してみるのが目的です。


##関連記事

インストール関連
[oneWEX導入メモ / Ubuntu編](https://qiita.com/tomotagwork/items/bdd48adf45140b584678)
[oneWEX導入メモ / RHEL7.6 オフライン編](https://qiita.com/tomotagwork/items/6ad047d0b72e199b7878)

検索関連
[oneWEX検証メモ - (0) 概要理解](https://qiita.com/tomotagwork/items/2c00007f45a3d2e482ea)
[oneWEX検証メモ - (1)ファイルシステムクローラーによるデータの取り込み / データセット、コレクションの作成](https://qiita.com/tomotagwork/items/00301322d4336b52d1e3)
[oneWEX検証メモ - (2)Windowsファイルシステムクローラーによるデータの取り込み](https://qiita.com/tomotagwork/items/1619624af8a64cf330d4)
[oneWEX検証メモ - (3)ContentMinerによる文書の検索](https://qiita.com/tomotagwork/items/24b5bbcc85c6bada41da)
[oneWEX検証メモ - (4)ApplicationBuilderによるWebアプリの作成と文書の検索](https://qiita.com/tomotagwork/items/a53b2c7f52cb1dcb68d9)

分析関連
[oneWEX検証メモ - (5)ContentMinerによる分析 / ガイド付きモード](https://qiita.com/tomotagwork/items/a9c381a477594453e2b1)
[oneWEX検証メモ - (6)ContentMinerによる分析 / 各種"ID情報"をベースとした分析](https://qiita.com/tomotagwork/items/9269fd31109638e6dd89)

API関連
[oneWEX検証メモ - (7)REST API](https://qiita.com/tomotagwork/items/7c1340f41333896f8fe3)

# oneWEXの位置づけ
oneWEXという製品の位置づけをおさらいしておきましょう。
oneWEXは、Watson Explorer Deep Analytics Editionという製品の1コンポーネントです。

[IBM Watson® Explorer oneWEX](https://www.ibm.com/support/knowledgecenter/ja/SS8NLW_12.0.0/com.ibm.watson.wex.ee.doc/explorer_onewex.html)
>Watson Explorer には、探索とコンテンツ分析を組み合わせた真の統合アーキテクチャーである oneWEX が導入されています。 ...  oneWEX には、構造化されていないダーク・データから従来より簡単に洞察を得るコグニティブ機能が追加されています。

[Watson Explorer の概要](https://www.ibm.com/support/knowledgecenter/ja/SS8NLW_12.0.0/com.ibm.watson.wex.ee.doc/c_ee_getstarted.html)
>IBM Watson® Explorer は、高度な自然言語処理 (NLP) や機械学習 (ML) に基づくコグニティブ・コンピューティングにより、基本検索から自然かつ累積的に進化したコンポーネントを導入しています。この進化の目標は、情報や業務に関する洞察を配信する際の速度と正確度を向上させることです。
Watson™ Explorer は、検索とコンテンツ分析を組み合わせることによって、ユーザーが非構造化情報を見つけて理解できるよう支援します。ユーザーはその情報を使用して、作業を効率化し、急所となる時点でより的確で信頼できる意思決定を行うことができます。 Watson Explorer では、以下のことができます。
* コグニティブ探索: すべての組織のデータを形式、格納場所、管理場所にかかわらず、安全に接続したり、検索したり、探索したりできます (既知の項目の検出)。
* コグニティブ洞察: 仮説に頼らない検出方法を使用した高度なコンテンツ分析により、構造化されていないダーク・データから洞察を得られます (未知の項目の発見)。
* コグニティブ・アドバイス: ディスカバリー・プロセスにおける後続の各ステップで、システムからアドバイスが提供されます。

ふうむ...

"非構造化情報"としてどこまでのものが扱えるのか不明ですが...
上の文章を読む限りでは、"データの形式や格納場所にかかわらず..."と言っているので、WordやPowerPointやExcel(とは言ってもきれいな表になっているものではないドキュメント)を扱うことができるんじゃないかと推察します。
サンプルとか色々見てると、対象データとしてはcsv形式で与えられるようなある程度の構造化はされたものを扱う前提で、そのうちの1つの列情報に"日本語での文章"が含まれていて、この部分を"非構造化情報"と言っているフシもあります。例えばTwitterの情報とか、商品に対するクレーム情報とかが分かりやすい例ですね。
参考: [実際に使われている用語を IBM Watson Content Analytics で見つけて使用する](https://www.ibm.com/developerworks/jp/analytics/library/ba-watson-dictionary/index.html)

ここでは、そういうものではなく、とりあえずは例えば、システムの設計書とかパラメーター定義書とか障害報告書とか製品マニュアルとか、そういうものがPDF, Word, Excel, PowerPointといった形式で保持されており、それらを効率よく探索したり、分析して何らかの洞察を与えてくれたりする、っていうことを期待してやってみます。(こういうのは一般的にはエンタープライズ・サーチと呼ばれるようですが。)
分析とか洞察ってのがどうもフワッとしていて直感的ではないのですが、その辺は扱う情報とか業務に依存する所になるでしょう。とりあえずどんなことができるのか触りながら探っていきたいと思います。

# oneWEX利用の大まかな流れ

主に以下のような流れでoneWEXを利用することになるようです。

##(1) 対象データの取り込み
検索/分析対象となるデータを一旦oneWEX上に取り込みます。与えるデータの形式によって取り込み方が異なり、色々な取り込み方が提供されているようです。

よくサンプルなどであるのが、CSVでデータを与えるというものですが、これは"インポーター"という機能を使って取り込めるようです。データはCSVで与えられるので、CSVファイルの1行が1レコード(検索対象の単位)ということになるでしょうか。

※上でも少し触れましたがCSVでデータ与えるってことは、各列に同じ意味のデータが並んでいることになるので、それってもはや構造化されたデータなんじゃないの？(非構造化データではない！)という気がするのだが...。CSVにできるんだったら、そらぁ、分析もしやすいでしょうよ。

で、CSVで整理できないようなその他のデータについては、"クローラー"という機能を使ってデータを取り込めます。ファイルシステム上にあるファイルを取り込む場合、ファイルシステムクローラーというのが使えるようです。
Web上のコンテンツを取り込む場合はWebクローラー、Box上のファイルを取り込む場合はBoxクローラー、Notes上の文書を取り込む場合はNotesクローラー、といったようにいくつかのクローラーが提供されています。

※とりあえずこのシリーズではWindows上で作られたファイルを扱うことを考えたいので、ファイルシステム・クローラー、Agent for Windows file systems クローラー辺りをやってみる予定です。

oneWEX上に取り込んだデータは、**データセット**という概念で取り扱われます。

参考:
[データ・セット](https://www.ibm.com/support/knowledgecenter/ja/SS8NLW_12.0.0/com.ibm.watson.wex.ee.doc/c_ee_adm_datasets.html)
[クローラー](https://www.ibm.com/support/knowledgecenter/ja/SS8NLW_12.0.0/com.ibm.watson.wex.ee.doc/c_ee_adm_ds_crawl_import.html)

##(2) 取り込んだデータの解析/加工
上で取り込んだデータについて、日本語文章の形態素解析を行って品詞ごとに分類をしたり、タグ付けをしたり、カスタマイズした辞書を適用したりと、分析をしやすくするための加工を行います。

これは、oneWEX上では、**コレクション**という概念で取り扱われます。

参考:
[コレクション](https://www.ibm.com/support/knowledgecenter/ja/SS8NLW_12.0.0/com.ibm.watson.wex.ee.doc/c_ee_adm_collections.html)

##(3) 探索/分析作業
(1)で"データセット"を作って対象データを取り込み、(2)で探索/分析用の"コレクション"を作成すると、ようやく本来の目的である探索や分析が行えるようになります。
これは、Content MinerというブラウザベースのUIが提供されていて、そこでキーワードを元に目的の情報を探したり、分析作業が行えるようです。

出来合いのUIではなく、専用の検索用アプリを作成/公開するための仕組みとして、ApplicationBuilderというツールも提供されています。これもブラウザベースのツールで、GUIベースで部品を組み合わせることで検索アプリケーションをカスタマイズできる機能が提供されています。

その他、分析や洞察を与えるための各種支援機能も色々提供されているようですが、大まかにはこのような流れでデータを扱っていくことになるようです。

# 補足
oneWEXは、Apache Solrという全文検索サーバーをベースに実装されており、そのコアになっているのはApache Luceneという全文検索エンジンです。Javaで実装されています。

参考: [SolrとElasticsearchを比べてみよう](https://www.slideshare.net/shinsuke/solr-vses2014)


雑多なリソースの"検索"を行うという観点では、FESSというOSSがあります(無償で使えます)。FESSはApache Solrとよく比較されるElasticsearchという全文検索サーバーをベースにしており、こちらもApache Luceneがエンジンとして使われています。
"検索"についてはFESSはかなり簡単に使い勝手の良い環境が作れます。FESSを使ってみた時のメモは以下の記事に記載しましたのでご参考まで。
参考: [Fess環境構築メモ](https://qiita.com/tomotagwork/items/ce4d66984e809a44dbc1)

oneWEXでは、単なる"検索"という機能だけでなく、さらに+α(分析/洞察)の部分が特徴のようなので、それらがどんな感じで使えるのかを使いながらお勉強していきたいと思います。

今更ながらですが、そもそも"全文検索"という分野について色々と馴染みのない考え方があったので、以下の記事は前提知識がコンパクトにまとまっていて非常に参考になりました。
(転置インデックス、トークナイザ、N-gram、正規化/ノーマライザ、ストップワードなどなど...)
参考: [検索エンジンの常識をApache Solrで身につける](https://www.atmarkit.co.jp/ait/articles/1111/18/news148.html)


#おまけ
WEXというのはWatson Exlorerの略でして、Watsonという冠が付いた製品です。Watsonという名前が付くと、"AI"というモノを連想する人も多いようですが、"AI"とだけ言われると一体何を指すのか曖昧すぎるし、人によってそれが指すものがバラバラすぎて本質を見失いやすいと思っています。"AI"ブームが到来してから久しいのに、なかなか"AI"というものの共通理解が進んでいないように思います(私も全然理解が追い付かないのですが...)。「これからはAIやらないとね」、とか、「AIを活用したいね」、とか、「それってAIっぽくないね」、とか、そういうフワっとしたフレーズを良く聞くのですが、なかなか実体を伴わないまま話をしているケースも多いように思います。技術者としてはモヤっとした言葉でごまかすのではなく、もう少し実体のある議論をしたいところです。ということで、とりあえずここでは"AI"というくくりでは語らないと思います(というか語れない...)。
参考: [Watson Assistantを使ってみた](https://qiita.com/tomotagwork/items/3b91709930ba5ee09ff2)