フォーム読み込み中
皆さま、こんにちは。
この記事は、ソフトバンク Advent Calendar2022の13日目の記事になります。
本記事では、IBM Cloud の Watson Natural Language Understanding (NLU) を紹介します。
この記事では、IBM Cloud の Watson Natural Language Understanding (NLU) を使用して、Webページの分析する方法を紹介します。
"sentiment": { "document": { "score": 0.709839, "label": "positive" } },
Natural Language Understanding (以下、NLU) は、自然言語理解を使用して文書を分析し、概念、エンティティ、キーワード、区分、評判、感情、関係、意味役割などのメタデータをコンテンツから抽出するサービスです。
汎用的な学習済みのモデルが用意されているため、トレーニングを行わなくてもすぐに分析を始めることができます。またカスタムモデルを作成することで、独自のカテゴリに分類することができます(例えば、部署ごとにカテゴリを作成して問い合わせを分類するなど)。
また、通常は分析前に広告などの分析を妨げるコンテンツを取り込まないように設定する必要がありますが、NLU では Web ページのクリーニング機能がデフォルトで有効になっているため、その手間がかかりません。
NLU を利用するために以下の 2 つを用意します。
・IBM Cloud のアカウント作成
アカウントがない方は以下のサイトからアカウントを作成してください。
・API の実行環境
curl や python などの API が実行できるものをご用意ください。
この例では curl を使用します。
まずは環境を作成します。
1. IBM Cloud にログインしてカタログで「Natural Language Understanding」と検索します。
2. ロケーション(リージョン)、プラン、サービス名、リソース・グループを入力して作成します。
※まずは無料で利用できるライトプランがおすすめです
3. 作成したサービスを開くと資格情報が表示されますので、API 鍵と URL をメモしておいてください。
分析に使用する Web サイトの URL やテキストデータを用意します。
この例では、Watson を紹介している SoftBank の Web ページを使って、キーワード抽出と感情分析を行ってみます。
キーワード抽出は、関連するキーワードでコンテンツを検索し、キーワードの出現回数や文書との関連性を 0 〜 1 のスコアで表します。値が大きいほど関連性が高いことを示します。
感情分析では、文書全体の感情を分析し、ポジティブ、ニュートラル、ネガティブのいずれかが返されます。スコアの範囲は -1 (ネガティブ) ~ 1 (ポジティブ) です。
この例で使用する Web ページ は Watson の紹介ページのため、キーワード抽出では「Watson」やそれに関するキーワードが抽出されることと、感情分析では、紹介記事のためニュートラルまたはポジティブと判定されるのではないかと予想します。
それでは早速始めてみましょう。
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 リファレンスをご確認ください。
項目 | 概要 | 出力例 |
---|---|---|
categories | 5段階の分類階層でコンテンツを分類 score:値が高いほど信頼度が高い label:カテゴリの階層 | "score": 0.993682, "label": "/business and finance/business/consumer issues" |
concepts | 分析されたテキストの中で参照または言及されている概念。 text:コンセプト名 relevance:0 から 1 までの関連性スコア(値が大きいほど関連性が高い) dbpedia_resource:対応する DBpedia リソースへのリンク | "text": "パターン認識", "relevance": 0.828627, "dbpedia_resource": "http://ja.dbpedia.org/resource/パターン認識" |
entities | コンテンツで言及されている人物、場所、イベントなどのエンティティを検索します。 type:エンティティのタイプ text:エンティティ名 relevance:0 から 1 までの関連性スコア(値が大きいほど関連性が高い) count:エンティティが登場した回数 confidence:0 から 1 までの信頼度スコア(値が大きいほど信頼度が高い) | "type": "Organization", "text": "IBM Watson", "relevance": 0.817161, "count": 3, "confidence": 0.824725 |
keywords | 関連するキーワードでコンテンツを検索します。 text:キーワードのテキスト relevance:0 から 1 までの関連性スコア(値が大きいほど関連性が高い) count:キーワードが登場した回数 | "text": "IBM Watson", "relevance": 0.721585, "count": 7 |
metadata | HTML と URL の入力では、Web ページの作成者、ページ タイトル、発行日を取得できます。 title:文書のタイトル publication_date:ISO 8601 形式の発行日 image:ウェブページの画像の URL authors:文書の作成者 | "title": "IBM Watson ® | AI・機械学習 | 法人のお客さま | ソフトバンク", "publication_date": "", "image": "https://www.softbank.jp/site/set/common/shared/img/icon_softbank.gif", "authors": [] |
relations | 2 つのエンティティが関連している場合を認識し、関連のタイプを識別 type:relations のタイプ sentence:関係を含む文 score:値が高いほど信頼度が高い arguments:relations に関連するエンティティ | "type": "basedIn", "sentence": "ホーム 法人のお客さま AI・機械学習 IBM Watson®", "score": 0.347851, "arguments": [{ "text": "法人", "location": [1839,1841], "entities": [{ "type": "Organization", "text": "法人" }] ] |
semantic_roles | 文を主語-動詞-目的語の形式に解析し、動詞の主語または目的語であるエンティティとキーワードを識別 sentence:文 subject:主語 object:目的語 action:動詞 | "sentence": "IBM Watsonは、米IBM社が開発した認識、学習、そして経験によって人が世界を理解するような方法を手がかりにした、コグニティブ(認知)・コンピューティング能力を世界で初めて商用化したサービスです。今までITの分野で活用できていなかった画像や言語、音声などの非構造化データを活用し、人の意思決定を支援します。", "subject": {"text": "、米IBM社が"}, "object": {"text": "世界を"}, "action": { "verb": {"text": "する"}, "text": "する", "normalized": "する" } |
sentiment | 特定のターゲットフレーズまたはドキュメント全体の感情を分析します。 score:-1 (ネガティブ) から 1 (ポジティブ) までの感情スコア label:感情をポジティブ、ニュートラル、ネガティブのいずれかで示します | "score": 0.709839, "label": "positive" |
syntax | テキスト内の文とトークンを識別 text:文書 sentence:文 location:分析されたテキストの文の開始と終了の位置 | "text": "I love apples! I do not like oranges." "sentence": "I love apples!", "location": [0, 14] |
classifications | カスタム分類モデルを使用したテキストの分析 ※事前に学習が必要です class_name:分類されたカテゴリ confidence:値が高いほど信頼度が高い | "class_name": "temperature", "confidence": 0.562519 |
emotion | 特定のターゲットフレーズまたはドキュメント全体の感情を分析 ※日本語はサポートしていません | - |
summarization (experimental) | 入力ソース コンテンツの概要を返す ※英語のみ | - |
今回は NLU の組み込みモデルを使用した Web ページの分析方法をご紹介しました。
無料プランがある点と、面倒なクリーニング作業や学習をせずに使用できることから、気軽に Web ページ分析を試すことができるのではないでしょうか。また、今回は紹介しきれませんでしたが、Web ページだけでなくテキストを使用した分析や、独自のデータを学習させるカスタムモデルの作成も可能です。気になった方はぜひ試してみてください。
最後までお読みいただきありがとうございました。
IBM Cloudは、IBMが提供するビジネスのためのクラウドサービスです。AIプラットフォームのIBM Watsonをはじめとする幅広い製品・サービスを提供。ビジネス活用だけでなく、既存システムからのセキュアなクラウド移行や、クラウドネィティブ・アプリケーションの開発の両方に対応できるクラウドサービスです。
条件に該当するページがございません