IBM Watson Natural Language Understanding を使って Webページを分析してみた

2022年12月13日掲載

キービジュアル

皆さま、こんにちは。

この記事は、ソフトバンク Advent Calendar2022の13日目の記事になります。

本記事では、IBM Cloud の Watson Natural Language Understanding (NLU) を紹介します。

目次

はじめに

この記事では、IBM Cloud の Watson Natural Language Understanding (NLU) を使用して、Webページの分析する方法を紹介します。

Natural Language Understanding (NLU) とは

  "sentiment": {
    "document": {
      "score": 0.709839,
      "label": "positive"
    }
  },

Natural Language Understanding (以下、NLU) は、自然言語理解を使用して文書を分析し、概念、エンティティ、キーワード、区分、評判、感情、関係、意味役割などのメタデータをコンテンツから抽出するサービスです。

汎用的な学習済みのモデルが用意されているため、トレーニングを行わなくてもすぐに分析を始めることができます。またカスタムモデルを作成することで、独自のカテゴリに分類することができます(例えば、部署ごとにカテゴリを作成して問い合わせを分類するなど)。

また、通常は分析前に広告などの分析を妨げるコンテンツを取り込まないように設定する必要がありますが、NLU では Web ページのクリーニング機能がデフォルトで有効になっているため、その手間がかかりません。

事前準備

NLU を利用するために以下の 2 つを用意します。

・IBM Cloud のアカウント作成

アカウントがない方は以下のサイトからアカウントを作成してください。

https://cloud.ibm.com

・API の実行環境

curl や python などの API が実行できるものをご用意ください。

この例では curl を使用します。

NLU の作成

まずは環境を作成します。

 

1. IBM Cloud にログインしてカタログで「Natural Language Understanding」と検索します。

2. ロケーション(リージョン)、プラン、サービス名、リソース・グループを入力して作成します。

※まずは無料で利用できるライトプランがおすすめです

3. 作成したサービスを開くと資格情報が表示されますので、API 鍵と URL をメモしておいてください。

分析データ

分析に使用する Web サイトの URL やテキストデータを用意します。

 

この例では、Watson を紹介している SoftBank の Web ページを使って、キーワード抽出と感情分析を行ってみます。

https://www.softbank.jp/biz/ai/watson/

キーワード抽出は、関連するキーワードでコンテンツを検索し、キーワードの出現回数や文書との関連性を 0 〜 1 のスコアで表します。値が大きいほど関連性が高いことを示します。

感情分析では、文書全体の感情を分析し、ポジティブ、ニュートラル、ネガティブのいずれかが返されます。スコアの範囲は -1 (ネガティブ) ~ 1 (ポジティブ) です。

 

この例で使用する Web ページ は Watson の紹介ページのため、キーワード抽出では「Watson」やそれに関するキーワードが抽出されることと、感情分析では、紹介記事のためニュートラルまたはポジティブと判定されるのではないかと予想します。

それでは早速始めてみましょう。

Web ページの分析

NLU には学習済みのモデルが用意されているため、トレーニングなしで分析することができます。
今回はそちらを使って分析してみます。

NLU には UI がないため、今回はコマンドラインツールから curl コマンドを実行します。

curl コマンドは以下のようになります。

※青字は置き換えてください。

curl -u "apikey:${API 鍵}" "${URL}/v1/analyze?version=2022-04-07&url=${WebページのURL}&features=keywords,sentiment&language=ja"

上記のコマンドで指定している内容について説明します。

① ${API 鍵} と ${URL} は NLU の資格情報です。

 事前にメモした「API 鍵」と「URL」にそれぞれ置き換えてください。

② ${WebページのURL} に分析したい Web ページの URL を入力します。

③ features= の後に抽出したい項目を入力します。

 この例では keywords(キーワード抽出)、sentiment(感情分析)を行います。

④ &language=ja で日本語を指定します。

 言語を指定しない場合でも自動で判定されますが、念のため指定しておきます。

 

コマンドができたら実行します。

curl -u "apikey:XXXXX" "https://api.jp-tok.natural-language-understanding.watson.cloud.ibm.com/instances/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/v1/analyze?version=2022-04-07&url=https://www.softbank.jp/biz/ai/watson/&features=keywords,sentiment&language=ja"

結果

分析が完了すると以下のように結果が返ってきます。※一部抜粋

{
  "usage": {
    "text_units": 2,
    "text_characters": 10586,
    "features": 2
  },
  "sentiment": {
    "document": {
      "score": 0.709839,
      "label": "positive"
    }
  },
  "retrieved_url": "https://www.softbank.jp/biz/ai/watson/",
  "language": "ja",
  "keywords": [
    {
      "text": "IBM Watson",
      "relevance": 0.721585,
      "count": 7
    },
    {
      "text": "AI・機械学習",
      "relevance": 0.594249,
      "count": 1
    },
    {
      "text": "ITの分野",
      "relevance": 0.573924,
      "count": 2
    },
    {
      "text": "日本語対応",
      "relevance": 0.566835,
      "count": 1
    },
    {
      "text": "自然言語",
      "relevance": 0.500067,
      "count": 2
    },
    {
      "text": "探索(Discovery",
      "relevance": 0.49816,
      "count": 1
    },
    {
      "text": "世界",
      "relevance": 0.496952,
      "count": 4
    },
    {
      "text": "サービス",
      "relevance": 0.494937,
      "count": 3
    }
  ]
}

今回は、Watson の紹介ページを分析しました。

感情分析とキーワード抽出の結果をそれぞれ確認します。

感情分析の結果は予想通りポジティブと判定されました。

紹介の際にネガティブな内容を記載することは少ないため、妥当な結果といえるのではないでしょうか。

 

次にキーワード抽出の結果を確認します。

  "keywords": [
    {
      "text": "IBM Watson",
      "relevance": 0.721585,
      "count": 7
    },
    {
      "text": "AI・機械学習",
      "relevance": 0.594249,
      "count": 1
    },
    {
      "text": "ITの分野",
      "relevance": 0.573924,
      "count": 2
    },
    {
      "text": "日本語対応",
      "relevance": 0.566835,
      "count": 1
    },
    {
      "text": "自然言語",
      "relevance": 0.500067,
      "count": 2
    },
    {
      "text": "探索(Discovery",
      "relevance": 0.49816,
      "count": 1
    },
    {
      "text": "世界",
      "relevance": 0.496952,
      "count": 4
    },
    {
      "text": "サービス",
      "relevance": 0.494937,
      "count": 3
    }
  ]

抽出されたキーワードの中では「IBM Watson」のスコアが最も高く、記事の特徴を表していると思います。また、キーワード抽出ではキーワードが文書内で登場した回数もカウントされていますが、回数が多いほどスコアが高いというわけではないことがわかります。

各項目の説明

今回はキーワード抽出と感情分析を行いましたが、それ以外にもさまざまな分析が可能です。

分析に使用できる項目は以下になります。※詳細は API リファレンスをご確認ください。

まとめ

今回は NLU の組み込みモデルを使用した Web ページの分析方法をご紹介しました。

無料プランがある点と、面倒なクリーニング作業や学習をせずに使用できることから、気軽に Web ページ分析を試すことができるのではないでしょうか。また、今回は紹介しきれませんでしたが、Web ページだけでなくテキストを使用した分析や、独自のデータを学習させるカスタムモデルの作成も可能です。気になった方はぜひ試してみてください。

 

最後までお読みいただきありがとうございました。

関連サービス

IBM Cloud

IBM Cloudは、IBMが提供するビジネスのためのクラウドサービスです。AIプラットフォームのIBM Watsonをはじめとする幅広い製品・サービスを提供。ビジネス活用だけでなく、既存システムからのセキュアなクラウド移行や、クラウドネィティブ・アプリケーションの開発の両方に対応できるクラウドサービスです。

おすすめの記事

条件に該当するページがございません