1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OCI Languageの事前学習済モデルバージョン2の感情分析を日本語テキストで試してみた

1
Posted at

はじめに

OCI Languageは、Oracle Cloud Infrastructure(OCI)が提供する、機械学習の専門知識なしで高度な自然言語処理(NLP)を利用できるフルマネージドのクラウドAIサービスです。

image.png

OCI Languageが提供する事前学習済モデルは、バージョン1(v1)バージョン2(v2) があります。v1とv2でサポートされる言語は以下の表のとおりです。

image.png

最新の情報は、製品ドキュメントをご確認ください
https://docs.oracle.com/en-us/iaas/Content/language/using/pretrain-models.htm

感情分析(Sentiment Analysis)を確認すると、v1のサポート言語は英語とスペイン語の2言語のみですが、 v2は英語、スペイン語、アラビア語、ドイツ語、フランス語、イタリア語の6言語をサポートし、さらに

And 100+ languages by design

とあります。このAnd 100+ languages by design100+ languagesには日本語も含まれます。

ちなみに、この他の違いとしては、v1は事前準備作業が不要(OCIコンソールのテキスト・アナリティックスよりすぐに試すことができる)、v2は後述の事前準備作業が必要(モデルおよびエンドポイントの作成)、などがあります。

感情分析(センチメント分析)

OCI Languageの感情分析(センチメント分析)は、入力テキストの主観的情報(気分、トーン)を分析し、それぞれをポジティブ、ネガティブ、ニュートラル、ミックスを信頼度スコア付きで分類します。

image.png

この記事でやること

この記事では、事前学習済モデルv2 を利用して、日本語テキストの感情分析を試します。

1. 事前準備

OCI Languagesの事前学習済モデルのバージョン2(v2)の利用には、以下の準備作業が必要です。

  • ポリシーの設定
  • プロジェクトの作成
  • モデルの作成
  • モデル・エンドポイントの作成

1.1 ポリシーの追加

以下ドキュメントを参考にポリシーを追加します。

以下設定例です。

allow group <group-name> to manage ai-service-language-family in tenancy
allow group <group-name> to manage ai-service-language-family in compartment <compartment-name>

1.2 プロジェクトの作成

プロジェクトを作成します。プロジェクトは、OCI Language のアセットを整理・管理し、ドキュメント化するための共同作業用コンテナです。

  • OCIコンソールを開きます

  • 左上のナビゲーション・メニューをクリックし、アナリティックスとAI > AIサービス > 言語 を選択します

  • プロジェクトをクリックします
    image.png

  • プロジェクトの作成をクリックします
    image.png

  • コンパートメントを確認し、必要であれば名前説明を入力(変更)します。作成をクリックします
    image.png

  • ステータスがアクティブになるまで待ちます
    image.png

1.3 モデルの作成

感情分析のための事前学習済モデル(v2)を作成します。

  • 前の手順で作成したプロジェクトを開き、モデルの作成とトレーニングをクリックします
    image.png

  • モデル・タイプの選択で、事前トレーニング済センチメント分析 を選択します。必要であればモデルの説明を入力します。をクリックします
    image.png

  • コンパートメントを確認します。必要であれば名前説明を入力(変更)します。をクリックします
    image.png

  • 作成とトレーニング をクリックします
    image.png

  • モデルが作成されます(時間がかかる場合もあります)。モデル情報を確認し、モデル・タイプが事前トレーニング済センチメント分析、モデル・バージョンがV2.0であることを確認します
    image.png

1.4 モデル・エンドポイントの作成

前の手順で作成した事前トレーニング済センチメント分析モデル(V2)にアクセスするためのモデル・エンドポイントを作成します。

  • 画面左下のリソース・セクションのモデル・エンドポイントをクリックします(もしくはモデル・エンドポイントの作成をクリックします)
    image.png

  • モデル・エンドポイントの作成をクリックします
    image.png

  • コンパートメントを確認し、<コンパートメント名>のモデルに前の手順で作成した事前トレーニング済センチメント分析モデル(V2)が選択されていることを確認します。必要であれば名前Alias説明推論ユニット数を入力(変更)します。モデル・エンドポイントの作成をクリックします
    image.png

  • エンドポイントの作成が開始されます(時間がかかります)。作成状況を確認する場合は、作業リクエストのエンドポイントの作成をクリックします
    image.png

  • モデル・エンドポイントのステータスがアクティブになったら、作成完了です
    image.png

2. 動作確認

作成した事前学習済センチメント分析モデル(V2)を利用して、日本語テキストの感情分析をします。今回用意したのは、ECサイトの商品レビューを想定した以下3つのテキスト(サンプル)です。

高評価コメント
ずっと欲しかったこの炊飯器、思い切って買って大正解でした!
デザインがスタイリッシュでキッチンに馴染むし、何よりお米がツヤツヤに炊き上がって本当に美味しいです。
操作も直感的で分かりやすく、発送も迅速で梱包も丁寧でした。
友人にも自信を持っておすすめしたい逸品です。
低評価コメント
商品写真と実物の色が全然違います。
もっと高級感があるかと思いましたが、実物はプラスチックのようで安っぽいです。
さらに、使い始めて3日でボタンが反応しなくなりました。
カスタマーサポートに連絡しても対応が遅く、非常に不愉快な思いをしました。
返品の手間もかかるし、本当に最悪です。
高評価と低評価の両方を含むコメント
商品自体のクオリティは非常に高く、肌触りも抜群で大変気に入っています。サイズ感もぴったりでした。
ただ、配送トラブルのせいで予定より1週間も遅れて届いたのが残念でなりません。
お詫びのメールも定型文だけで、誠意を感じませんでした。
モノが良いだけに、この対応の悪さは非常に勿体ないと感じます。
  • 高評価コメント(サンプル)を利用して感情分析を実行します。前の手順で作成した事前トレーニング済センチメント分析(V2)モデルを開きます。分析するテキストを入力し、分析をクリックします
    image.png

  • 感情分析の結果が表示されます。すべての分析がPositiveと評価されました
    image.png

  • 同じ手順を繰り返し、低評価コメント(サンプル)を分析します。結果はNegativeと評価されました
    image.png

  • 最後に高評価と低評価の両方を含むコメント(サンプル)を分析します。アスペクト・ベースもセンテンス・レベルも、PositiveとNegativeが混在し、全体としてはMixedと評価されました。これを活用すると「商品品質」はPositive、「配送」「トラブル発生時の対応」はNegative、といった要素単位での分析もできそうです。
    image.png

(参考)REST APIで事前学習済モデルv2の感情分析を実行する

参考までに、OCI Languageの感情分析をREST APIで実行した例を紹介します。なお、RESTクライアントはPostmanを利用し、リクエストのBodyでは分析テキストやその言語コードに加えて、コンパートメントとモデル・エンドポイントのそれぞれのOCIDを指定します(もしくは、コンパートメントのOCIDとモデル・エンドポイントのエイリアス名を指定)

リクエスト(Postmanの実行イメージ)
image.png

レスポンス

{
    "documents": [
        {
            "key": "doc1",
            "documentSentiment": "Negative",
            "documentScores": {
                "Positive": 0.03166045736847299,
                "Negative": 0.9888149109873315,
                "Neutral": 0.024765941287914876,
                "Mixed": 0.9316169539400594
            },
            "sentences": [
                {
                    "text": "商品写真と実物の色が全然違います。",
                    "offset": 0,
                    "length": 17,
                    "sentiment": "Neutral",
                    "scores": {
                        "Positive": 0.003826144712995705,
                        "Negative": 0.003826144712995705,
                        "Neutral": 0.9940162897109985,
                        "Mixed": 0.0021036032315074273
                    }
                },
                {
                    "text": "もっと高級感があるかと思いましたが、実物はプラスチック感が強くて安っぽいです。",
                    "offset": 17,
                    "length": 39,
                    "sentiment": "Positive",
                    "scores": {
                        "Positive": 0.9325296878814697,
                        "Negative": 0.04314232566890597,
                        "Neutral": 6.084613141519115E-4,
                        "Mixed": 0.023719525135472395
                    }
                },
                {
                    "text": "さらに、使い始めて3日でボタンが反応しなくなりました。",
                    "offset": 56,
                    "length": 27,
                    "sentiment": "Negative",
                    "scores": {
                        "Positive": 0.0014538130299553856,
                        "Negative": 0.9977263808250427,
                        "Neutral": 2.0503970822680462E-5,
                        "Mixed": 7.993021741792094E-4
                    }
                },
                {
                    "text": "カスタマーサポートに連絡しても対応が遅く、非常に不愉快な思いをしました。",
                    "offset": 83,
                    "length": 36,
                    "sentiment": "Negative",
                    "scores": {
                        "Positive": 7.407986331955127E-4,
                        "Negative": 0.9988414645195007,
                        "Neutral": 1.0447914035402808E-5,
                        "Mixed": 4.0728893326835204E-4
                    }
                },
                {
                    "text": "返品の手間もかかるし、本当に最悪です。",
                    "offset": 119,
                    "length": 19,
                    "sentiment": "Negative",
                    "scores": {
                        "Positive": 9.060176523292549E-4,
                        "Negative": 0.9985830783843994,
                        "Neutral": 1.2778093967669678E-5,
                        "Mixed": 4.981258693036614E-4
                    }
                }
            ],
            "aspects": [
                {
                    "offset": 83,
                    "length": 20,
                    "text": "カスタマーサポートに連絡しても対応が遅く",
                    "sentiment": "Negative",
                    "scores": {
                        "Positive": 0.014604065455978626,
                        "Negative": 0.9771606922149658,
                        "Neutral": 2.05969630091354E-4,
                        "Mixed": 0.0080292726989642
                    }
                },
                {
                    "offset": 119,
                    "length": 10,
                    "text": "返品の手間もかかるし",
                    "sentiment": "Negative",
                    "scores": {
                        "Positive": 0.047436266977252894,
                        "Negative": 0.9258143901824951,
                        "Neutral": 6.690212661447408E-4,
                        "Mixed": 0.026080321574107248
                    }
                }
            ],
            "languageCode": "ja"
        }
    ],
    "errors": []
}

まとめ

OCI Languageの事前学習済モデル(v2)を利用して、日本語テキストの感情分析を試しました。おおむね期待通りの分析結果が得られたと思いますが、いかがでしょうか?

OCI Languageの具体的なユースケースとしては、アンケートのコメントや商品レビューの分析、ソーシャル・メディア上の自社および自社製品に関する投稿の分析、などが考えられます

なお、冒頭で説明したとおり、事前学習済モデル(v2)の感情分析(Sentiment Analysis)の日本語を含む多言語対応は

English, Spanish, Arabic, German, French, Italian
And 100+ languages by design

です。利用検討時は事前検証等で十分にご確認いただき、適用可否をご判断いただければ幸いです


参考ドキュメント

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?