import ayatokura as hack

「IT × 開発者支援」を通じて"エンジニアの幸福度"を高めるために人生をハックしながら学んだことをお届けします

【IBM Watson】AIが性格を推定してくれるPersonality Insigthtsデモサイトの構築方法 (Node.js編)

https://cdn-ak.f.st-hatena.com/images/fotolife/a/ayatokura/20191229/20191229133141.png

皆さん、こんにちは。職業「戸倉彩」です。

今回は今すぐ使えるIBM Watson Personality Insights APIのサービスを使用した、テキストやTwitterのツイートを分析するWebアプリケーションを開発する方法を紹介します。パブリッククラウドのサービスを使用しますが、無料の範囲で作成することができるので、自己学習やコミュニティのハンズオン等の題材に迷った時には役立てていただければと思います。

IBM Watson Personality Insights (性格分析)とは

Personality Insightsは、IBMが提供しているIBM Watsonサービスの一つで、テキストから筆者のパーソナリティ(ビッグ・ファイブ、価値、ニーズ)の3つの特徴をAIから推測します。詳細についてはIBM Watson Personality Insights 公式サイトをご覧ください。

Personality Insightsデモサイトとは

IBM Watson Personality Insightsが使われているデモサイトがこちらに公開されています。リアルタイムに「サンプルのTwitterアカウント」「テキスト入力」「ご自身のTwitterからツイートされたテキスト」による分析を体験できます。

デモのために設置されているサイトのため、アクセスが集中した場合やメンテナンス時には正常に動作しない可能性もあるようです。 GitHubソースコードが公開されていますので、macOSWindowsのパソコンをお持ちの方であればいつでも誰でも入手して、自分でデモサイトを手元の環境に構築して動かすことができます。また、Apache 2.0ライセンスで配布しているため、商用利用も可能です。 万が一、ソースコードに問題があることを発見した場合には、直接GitHubリポジトリにIssueをあげて報告をしてください。

始める前に

1. Node.jsのインストール

Node.js公式サイトから入手できます。2019年12月27日現在、12.14.0 LTSが推奨版となっています。

2. IBM Cloudのアカウントの取得

IBM Cloud上で提供されているIBM Watson Personality Insightsのサービスを使用するため、ライトアカウント/従量課金(PayG)アカウント/サブスクリプションアカウントのいづれかのアカウントが必要です。これからIBM Cloudを始める場合は、過去にQiitaに投稿した「無料ではじめられるライト・アカウント登録方法」をご覧いただき、アカウントの登録を行なってみてください。

3. IBM Cloud CLIのインストール (IBM CloudにWebサイトを公開する場合)

下記のコマンドを実行して、IBM Cloud CLIのインストールを行います。

  • MacおよびLinuxの場合、次のコマンドを実行します。
curl -sL https://ibm.biz/idt-installer | bash
  • Windowsの場合、 管理者としてPowerShellで次のコマンドを実行します。
[Net.ServicePointManager]::SecurityProtocol = "Tls12"; iex(New-Object Net.WebClient).DownloadString('https://ibm.biz/idt-win-installer')

4. Twitterアカウントのログイン情報の取得

特定のTwitterアカウントでツイートされた内容を分析させたい場合は、対象となるアカウントのログイン情報を入手する。 もし、これからTwitterアカウントを取得したい場合には、下記サイトよりTwitterアカウントを作成し、ツイートをはじめる。※100程度の単語からの分析が可能ですが、より正確な分析のためには、より多くのテキストが存在していることが望ましいです。 https://twitter.com/i/flow/signup

操作の手順

大まかな操作の流れは下記の4つになります。 1. Personality Insightsのサービス作成 2. GitHub上のリソースのクローン 3. 環境ファイルの設定 (.env) 4. Twitterアプリケーションの設定 5. ローカル実行

1. Personality Insightsのサービス作成

  1. WebブラウザからIBM Cloudにアクセスしてログインする。
  2. IBM Cloudダッシュボードから右上の[カタログ]メニューをクリックする。
  3. 左側メニューの[AI]をクリックする。
  4. 右側に表示されたAIカテゴリとして提供しているサービス一覧から[Personality Insights]を見つけてクリックする。
  5. 下記の項目を確認した後、右側の[サマリー]で設定した内容を確認して正しければ[作成]ボタンをクリックしてサービスを作成する。

  6. 地域の選択

    • デフォルト[ダラス]のままでもOKです
    • ドロップダウンメニューから[東京]も選択できます
  7. 料金プランの選択
    • 今回は、[ライト(無料)]にチェックが入って選択されていることを確認してください
    • 検証や実案件などで1ヶ月あたりに1,000件を超えるAPI呼び出しを行う場合には[ティア]または[プレミアム]を選択してください
  8. サービス名
    • デフォルトのままでもOKですが、任意のサービス名をアルファベット、記号、数字の組み合わせで指定することが可能です。
    • 今回の例では[PersonalityInsights-Japan]を指定してます。

6.しばらくして[リリース・リスト]ページが表示されたら、左側の[サービス資格情報]メニューをクリックする。 7. [サービス資格情報]に自動生成された[Auto-generated service credentials][資格情報の表示]リンクをクリックする。 8. 表示された資格情報の[apiey]および[url]は後ほど使うため、メモ帳などにコピーしておく。

2. GitHub上のリソースのクローン

ターミナルから下記コマンドを実行してGitHubからソースコードを入手する。

git clone https://github.com/watson-developer-cloud/personality-insights-nodejs.git

3. 環境ファイルの設定 (.env)

1.[personality-insights-nodejs]ディレクトリを移動する。

cd personality-insights-nodejs/

2.エディタでフォルダの中身を開いて .env.example ファイルを .env というファイル名でコピーを作成する。 3. .env ファイルを開き、前の手順で取得したサービス資格情報を追加し、ファイルを保存する。

PERSONALITY_INSIGHTS_IAM_APIKEY= ここにapikeyをコピペする
PERSONALITY_INSIGHTS_URL= ここにurlをコピペする

4. Twitterアプリケーションの設定

  1. Twitter Developerサイトからアプリケーションを作成する。
  2. コールバックURLを追加する。

  3. ローカル環境の場合: http://localhost:3000/auth/twitter/callback

  4. クラウド環境の場合: 各クラウドサービスの仕様を確認してURLを指定してください。
  5. IBM Cloud環境の場合: <application-name>.mybluemix.net/auth/twitter/callback

3..env ファイルにTwitterアプリケーションの資格情報を追加し、ファイルを保存する。

TWITTER_CONSUMER_KEY=<consumer-key>
TWITTER_CONSUMER_SECRET=<consumer-secret>

5. ローカル実行

  1. 下記のコマンドを実行して依存関係をインストールする。
npm install

2.アプリケーションを実行する

npm start

3.Webブラウザlocalhost:3000にアクセスする。 4. Personality Insightsデモサイトが表示されれば成功です!!!

指定したTwitterアカウントのツイートによるテキストから性格を分析したい場合には「あなたのTiwtterによる分析」ボタンをクリックして操作を行なってみてください。

このアプリケーションについて

このアプリケーションは、Node.jsで動くWebアプリケーションです。後は、お好みのクラウドサービス上にデプロイしたり、自由にカスタマイズしてご活用ください。

ディレクトリ構成

.
├── app.js                       // express entry point
├── config                       // express configuration
│   ├── error-handler.js
│   ├── express.js
│   ├── i18n.js
│   ├── passport.js
│   └── security.js
├── helpers                      // utility modules
│   ├── personality-insights.js
│   └── twitter-helper.js
├── i18n                         // internationalization
│   ├── en.json
│   ├── es.json
│   └── ja.json
├── manifest.yml
├── package.json
├── public
│   ├── css
│   ├── data                     // sample text and tweets
│   ├── fonts
│   ├── images
│   └── js
├── router.js                   // express routes
├── server.js                   // application entry point
├── test
└── views                       // ejs views

IBM Cloudを活用してWebサイトを公開する方法

  1. IBM Cloud CLI を用いてターミナルまたはコマンドラインからIBM Cloudにログインする。
    ※ログインの際に、APIエンドポイントや地域がus-southに指定されていても問題ありません。
ibmcloud login

2.下記のコマンドを実行してCloud Foundry (IBM CloudでWebサイトを手軽にホスティングすることができるサービス) をターゲットにします。

ibmcloud target --cf

3.manifest.ymlファイルの3行目のアプリケーション名の部分を編集し、ファイルを保存する。 例えば - name: my-app-name など、ユニークな文字列を指定してください。Webサイトを公開する際にURLの一部になるため、ご注意ください。

4.アプリケーションをIBM Cloudにデプロイします。 ネットワーク環境により必要な時間は異なりますが、安定している環境の場合には数分〜で完了します。

ibmcloud app push

5.アプリケーションをデプロイしたURL (https://アプリ名.mybluemix.net) にアクセスして、公開されたことを確認します。

例えば https://personality-insights-qiitademo.mybluemix.net

今回はここまでです。お疲れ様でした! Have a nice Geek Life♪

Twitterで最新情報配信中 @ayatokura