無料の「IBM Cloudライト・アカウント」でWatson APIを試してみた

このエントリーをはてなブックマークに追加

先日、日本IBMから、クラウド開発基盤である「IBM Cloud」のライト・アカウントを期間無制限・クレジットカード登録不要で、提供開始すると発表されました。

IBM Cloudライト・アカウント」では42種類ものプラットフォームサービスやAPIを使うことができ、もちろんWatson APIも無料で使うことができます。

ということで、LedgeでもWatson APIを試してみます!

今回試すのは、

以上、3つのAPI。

それではさっそく、IBM Bluemixアカウントにログインして、Watson APIを使っていきましょう。

エンティティーや感情のメタデータを抽出するNatural Language Understanding API

Natural Language Understanding APIは、テキストを分析して、コンテンツから概念、エンティティー、キーワード、感情、意味役割などのメタデータを抽出してくます。

日本語で試そうとすると、日本語というのは認識してくれるみたいですが、結果がうまく返ってこないので、今回は英文を使います。

さっそく、「Because it is fine tomorrow, I go to a picnic with my friend.」という英文を、文章全体とキーワードごとに感情分析させてみると、

{
  "usage": {
    "text_units": 1,
    "text_characters": 61,
    "features": 2
  },
  "sentiment": {
    "document": {
      "score": 0.913119,
      "label": "positive"
    }
  },
  "language": "en",
  "keywords": [
    {
      "text": "picnic",
      "sentiment": {
        "score": 0.675633,
        "label": "positive"
      },
      "relevance": 0.903911
    },
    {
      "text": "friend",
      "sentiment": {
        "score": 0.675633,
        "label": "positive"
      },
      "relevance": 0.792163
    }
  ]
}

スコアリングとラベルで、感情分析の結果がでてきました。

“picnic”という単語に対して高いスコアで、ポジティブというラベルがついています。詳しいところまではわからないですが、確かに単語の意味を理解して感情分析をしてそうです。

とすると、一般的にネガティブな意味を含む単語を分析させて、ネガティブ判定してくれれば、意味を理解していると、納得できそうです。

ということで、ネガティブな「Since it is a storm tomorrow, I can not get out of the house.」という文章を分析させてみると

{
  "usage": {
    "text_units": 1,
    "text_characters": 61,
    "features": 2
  },
  "sentiment": {
    "document": {
      "score": -0.791099,
      "label": "negative"
    }
  },
  "language": "en",
  "keywords": [
    {
      "text": "storm",
      "sentiment": {
        "score": -0.70981,
        "label": "negative"
      },
      "relevance": 0.960642
    },
    {
      "text": "house",
      "sentiment": {
        "score": -0.604393,
        "label": "negative"
      },
      "relevance": 0.327018
    }
  ]
}

しっかりとネガティブ判定して、その判定には“storm”という単語が影響していることもわかります。

Watson Conversationと連携することで、より自然な会話を生むチャットボット、AIを開発できるのではないでしょうか。

感情・社交性・文体を分析するTone Analyzer API

Tone Analyzer APIはテキストから、

  • 喜怒哀楽
  • 文体
  • 社交性

など、3種類を分析して「トーン」という独自の指標を検出してくれます。

以上の3要素を分析することで、コミュニケーションの改善に役立つんだとか。

今回は以下の、お客さんとカスタマーサポートの会話を分析させてみます。

こちらも、まだ日本語には対応していないようなので、英文で試してみます。

"utterances": [
    {
      "text": "Hello, I'm having a problem with your product.",
      "user": "customer"
    },
    {
      "text": "OK, let me know what's going on, please.",
      "user": "agent"
    },
    {
      "text": "Well, nothing is working :(",
      "user": "customer"
    },
    {
      "text": "Sorry to hear that.",
      "user": "agent"
    }
  ]

すると、こんな結果が返ってきました。

{
    "utterances_tone": [
        {
            "tones": [
                {
                    "score": 0.718352, 
                    "tone_id": "polite", 
                    "tone_name": "Polite"
                }
            ], 
            "utterance_id": 0, 
            "utterance_text": "Hello, I'm having a problem with your product."
        }, 
        {
            "tones": [], 
            "utterance_id": 1, 
            "utterance_text": "OK, let me know what's going on, please."
        }, 
        {
            "tones": [
                {
                    "score": 0.997149, 
                    "tone_id": "sad", 
                    "tone_name": "sad"
                }
            ], 
            "utterance_id": 2, 
            "utterance_text": "Well, nothing is working :("
        }, 
        {
            "tones": [
                {
                    "score": 0.689109, 
                    "tone_id": "polite", 
                    "tone_name": "Polite"
                }, 
                {
                    "score": 0.663203, 
                    "tone_id": "sympathetic", 
                    "tone_name": "Sympathetic"
                }
            ], 
            "utterance_id": 3, 
            "utterance_text": "Sorry to hear that."
        }
    ]
}

こちらの文章はカスタマーが購入した商品に不具合があり、問い合わせした際の会話です。

それぞれのユーザーの発言に対して、たとえば「Polite:礼儀正しさ」や「Sympathetic:同情的な」などのトーンを検出してくれています。

Tone Analyzer API、精度高そうに見えますね。

ユーザーとのチャットデータやコールセンターでの会話データなどがますます増えていくなか、Tone Analyzer APIを使えば、カスタマーサポート、レコメンド精度などを大幅に向上できるのではないでしょうか。

文章から意図、行動特性を分析するPersonality Insights API

Personality Insights APIは、トランザクション・データやSNSメディアのデータを分析して、心理的な特性を識別してくれます。

心理的な特性を識別できれば、コンバージョン向上に役立つんですね。

それでは、SNSの投稿にみたてた文章を分析させてみます。

  • 今月お金使いすぎた!!!このバッグほしいけど来月まで我慢しよー。
  • このシャツデザインは好きだけど、洗ったらすぐにだめになりそうだから迷う。。。
  • うわ!これまえに売り切れてた商品だ!!!めっちゃほしい!
  • この靴かわいいけど、昨日ほかの靴かったばっかなんだよね、また今度見つけたらかおーーっと。
  • このPCほんとうにパフォーマンスいいのかなー。操作性とか気になるから一度直接触って判断したいな。

すると、順に解析結果が返ってきました。

{
    "needs": [
        {
            "category": "needs", 
            "name": "Challenge", 
            "percentile": 0.35613928967545994, 
            "significant": true, 
            "trait_id": "need_challenge"
        }, 
        {
            "category": "needs", 
            "name": "Closeness", 
            "percentile": 0.25055360067235116, 
            "significant": true, 
            "trait_id": "need_closeness"
        }, 
        {
            "category": "needs", 
            "name": "Curiosity", 
            "percentile": 0.998924078520935, 
            "significant": true, 
            "trait_id": "need_curiosity"
        }, 
        {
            "category": "needs", 
            "name": "Excitement", 
            "percentile": 0.2552012052036719, 
            "significant": true, 
            "trait_id": "need_excitement"
        }, 
        {
            "category": "needs", 
            "name": "Harmony", 
            "percentile": 0.5190125156793238, 
            "significant": true, 
            "trait_id": "need_harmony"
        }, 
    ]
}

Personality Insights API、すごいです!

文章と分析結果を照らし合わせてみると、そのユーザーの心理状態が一目瞭然。

この精度で顧客のSNSデータを分析できれば、よりパーソナライズした広告やレコメンドをうつことが可能になるので、コンバージョン率の底上げに直結ですよね。

Watson API、マーケティングで駆使すれば、とてつもない威力を発揮する可能性秘めています。

まさに、人工知能がマーケティングを変えていく、転換期といえますよね。

Watson APIはほかにも種類があり、IBM Bluemixのプラットフォームやサービスも「IBM Cloudライト・アカウント」で試すことができるので、興味ある方はぜひ使ってみると面白いかもしれません。