目次


#TryIBMDev

ニュースを検索してトレンドを分析するコグニティブ Bot (Slack 版) を構築する

Comments

コンテンツシリーズ

このコンテンツは全#シリーズのパート#です: #TryIBMDev

このシリーズの続きに乞うご期待。

このコンテンツはシリーズの一部分です:#TryIBMDev

このシリーズの続きに乞うご期待。

皆さん、こんにちは。IBM デベロッパーアドボケイトの戸倉彩です。

今回は、IBM Code Patterns で公開されている「コグニティブ・ニュース検索アプリを作成する」の作成方法の Tips や日本語対応の実装方法も交えてご紹介させていただきます。

システムの特徴

Slack は国内でも 50 万人以上が毎日利用するビジネス向けコラボーレーションツールです。 Slack Bot を導入することで、インターネットを通じて効率的に情報を得られることが有効な使い方として知られています。「すらすらトレンドニュース」は、IBM Cloud で提供される Watson Discovery News サービスを活用し、ニュース記事とブログを追加して継続的に更新される最新のニュースを検索してトレンドの傾向を検出する独自のニュース Bot です。

「すらすらトレンドニュース」の Bot を作成すると、以下のことを理解することができます。

  • Watson Discovery を使い、Node.js を使用してニュース・マイニング Web アプリケーションを作成する
  • ニュースを検索してトレンディング・トピックを検出するなど、基本的な Watson Discovery 機能を使用する
  • Slack の検索機能にアクセスする SlackBot を作成する
  • 日本語対応 を実装できる

システムの構成図

前提条件

  • IBM Cloud アカウント または サブスクリプション

実装のおおまかな流れ

  1. リポジトリをクローンする
  2. IBM Cloud 上で Watson サービスを作成する
  3. Watson Descovery を設定をする
  4. Slack を設定する
  5. アプリケーションを実行する

ローカルで実行する方法

1. リポジトリをクローンする

ローカルにリポジトリをクローンします。コマンドを使う場合は、ターミナルで次のコマンドを実行してください。

git clone https://github.com/ayatokura/watson-discovery-news

2. IBM Cloud 上で Watson サービスを作成する

IBM Cloud にログイン後、「カタログ」→「AI」 → 「Discovery」を選択し、「作成」します。

しばらくすると、作成したサービスの状況が「Provisioned (プロビジョニング済み)」に変わり、緑色のマークが表示されます。

3. Watson Descovery を設定をする

Discovery を作成後、資格情報を後に使うためメモしておきます。

【Memo】2018 年 10 月 26 日以降、IAM (API Key) 認証が採用となり、これまで発行されていた API へアクセスするためのユーザー名およびパスワードの発行は廃止されました。

4. Slack を設定する

新しい Slack Bot を既存の Slack チームに統合する場合は、https://my.slack.com/services/new/bot へアクセスしてください。任意でボットのユーザ名を入力し、[ボットインテグレーションを追加する]をクリックします。

※ユーザー名はすべて小文字に制限されています。

発行された API トークンを大切に保管してください。

5. アプリケーションをローカルで実行する

  1. Node.jsYarn をインストールします。
  2. yarn コマンドを実行してすべての依存関係をインストールします。
    $ yarn
  3. yarn bootstrap を実行し、.env.sample を .env にコピーします。
    $ yarn bootstrap
  4. .env ファイルを編集し、前の手順で保存した Watson Discovery の資格情報と Slack Bot Token を入力して保存します。
    Visual Studio Code を利用してコード編集 & コマンド実行している画面例
  5. yarn start を実行してアプリを起動します。
    $ yarn start
  6. Web ブラウザを開いて http://localhost:3000 へアクセスすると

    ※ デフォルトのポート番号は 3000 番が指定されていますが、別のポート番号を指定したい場合には、.env ファイルを編集してください。

  7. Slack の #random チャンネルに bot を招待し、会話を始めてみます。

    Code Patterns で公開されているソースコードは、英語での対応となります。
  8. 日本語のニュースは記事を対象にする場合には、watson-discovery-service.json ファイルで言語指定を行なってください。
    discovery.collectionId = 'news-ja';
  9. slack-bot.js ファイルの 144 行目以降に下記を追加し、センチメント分析結果の URL を指定するための記述を追加します。
    }).then(() => {
        setTimeout(() => {
        bot.reply(message, '');
        bot.reply(message, `センチメント分析やより詳細は http://localhost:3000/search/${decodeURI(qs.replace('query=',''))} をご覧ください`);
            }, 4000);
        });
  10. ファイルを保存した後、yarn start を実行してアプリを起動し直してから Slack の操作を試します。

センチメント分析やより詳細な URL へアクセスすると、分析結果が表示されます。

トップニュースからのブリーフィングの例
センチメント分析結果の例

こちらの日本語チャットに対応したコードは GitHub に公開しましたので、こちらも合わせて参考にしてください。

最後に

今回は、Watson Discovery を利用することで英語または日本語でのニュースを自由に検索行い、検索結果に対して自動的にセンチメント分析を行うシステム構成でご紹介いたしました。こちらの IBM Code Patterns で提供されているサンプルコードは Apach 2.0 ライセンスを適用していますので、自由にカスタマイズしてお使いいただくことが可能です。IBM Cloud では、他にさまざまな AI 機能が簡単に実装できる Watson API サービスを提供していますので、組み合わせてより画期的な Slack などの Bot を開発をお試しください。


ダウンロード可能なリソース


コメント

コメントを登録するにはサインインあるいは登録してください。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Cognitive computing
ArticleID=1064192
ArticleTitle=#TryIBMDev: ニュースを検索してトレンドを分析するコグニティブ Bot (Slack 版) を構築する
publish-date=12272018