🐱

PaLM 2 APIを使ってtext-bisonモデルに感情分析させてみた

2023/07/07に公開



クラウドエース宮崎です。


蒸し暑い日々が続きますが、皆さん夏を楽しんでいますでしょうか。私は早く涼しくなって欲しいです。

ということで、今回は6月9日にGAとなったVertex AIのPaLM 2 API for text-bisonを利用してサクッとこんな憂鬱な感情を分析してみたいと思います。

はじめに

  • 本記事の趣旨は、「GAになったばかりのPaLM APIをとりあえず活用してみた」といったものになります。
    実用的ではないので、Vertex AIのGenerative AIに興味があって、触ってみたいといったライトユーザー向けの記事になります。

PaLM 2 APIとは

  • PaLM 2 APIは、テキストデータの言語モデリングに特化したAPIです。PaLM 2は、Googleが開発した大規模なプレトレーニング言語モデル(LLM)であり、PaLM 2 APIを使用することで、パフォーマンスの高い言語モデリングを実現することができます。

  • PaLM 2 APIを使用することで、テキスト生成、文脈理解、質問応答といった様々な機能を簡単に利用することができます。また、感情分析やテキスト分類などの自然言語処理タスクにも応用することも可能です。

  • PaLM 2には、Gecko、Otter、Bison、Unicorn という4つのモデルサイズがあり、前者ほど軽量なモデルとなっています。

PaLM 2 APIの詳細な使い方や機能については、Google公式ブログを参照してください。

text-bisonとは

  • text-bisonは、Vertex AIが提供する基礎モデルの一つであり、先述したPaLM 2のBisonモデルサイズを言語タスク向けに最適化したモデルとなっています。分類・感情分析・エンティティの抽出・質問回答・文章要約・文章生成といった様々な言語タスクに適しています。

  • 今回GAとなったPaLM 2 API for text-bisonを利用することで、簡単に強力な言語タスクモデルであるtext-bisonを利用したアプリケーションを構築できます。

まとめ

  • PaLMは大規模なプレトレーニング言語モデル(LLM)の一つであり、Gecko、Otter、Bison、Unicorn という4つのモデルサイズを内包している。
  • text-bisonはPaLMのBisonモデルを言語タスク向けに最適化したものである。
  • 今回、PaLM 2 APIがtext-bisonに対応したので、簡単にtext-bisonを利用したアプリケーションが構築できるようになった。

実際に触ってみた

目標

  • GAとなったPaLM 2 API for text-bisonを使って、簡単な感情分析アプリケーションを作ってみる。

準備

gcloud の認証をします。

gcloud auth login
gcloud auth application-default login

プロジェクトの設定もしておきます。

gcloud config set project <YOUR-PROJECT>

Vertex AIのAPIを有効化します。

gcloud services enable aiplatform.googleapis.com

必要なライブラリをインストールします。

pip install google-cloud-aiplatform

サンプルプロンプトの確認

Google CloudコンソールのGenerative AI Studioにアクセスします。


alt

チャット・要約・分類・抽出・文章生成など数多くのサンプルプロンプトが用意されています。

今回は感情分析を行いたいので、Sentiment analysis about a personを使ってみようと思います。


alt



このままUI上でプロンプトに入力を与えて、Responseを確認することもできますし、

右上のコードを表示ボタンをクリックすると、モデル レスポンスをリクエストするPaLM 2 APIのサンプルコードが表示されます。

今回は後者を利用してpythonで簡易な感情分析コードを記述したいと思います。

実装したコード

main.py
import vertexai
from vertexai.language_models import TextGenerationModel

# Vertex AIの初期化
vertexai.init(project="sample-project", location="us-central1")

# パラメータ設定(任意)
parameters = {
    "temperature": 0.2,
    "max_output_tokens": 256,
    "top_p": 0.8,
    "top_k": 40
}

# PaLM 2 APIを利用して感情分析を行うメソッド
def predict_sentiment(text):
    model = TextGenerationModel.from_pretrained("text-bison@001")
    sentiment = model.predict(text, **parameters)

    return sentiment

# ユーザーの入力を受け取る
user_input = input("テキストを入力してください: ")
predict_input = "is the sentiment positive or negative based on below text?: \nText: " + user_input

# 感情を予測
emotion = predict_sentiment(predict_input)

# 結果を出力
print("emotion:", emotion)

感情分析の結果

入力の内容

テキストを入力してください: The hot and humid days continue. How is everyone spending their summer? I hope it cools down soon.

現在(2023年7月7日時点)、text-bisonは英語のみ対応しているので、記事冒頭の挨拶を英語翻訳したものを入力しました。

出力の内容

emotion: negative

私が夏に対してネガティブな感情を持っていることを正しく予測してくれました!

感想

初めてPaLM 2 APIやGenerative AI Studioを使ってみましたが、どちらもお試し感覚で使うにはとても適していると思いました。
今回使用した感情分析用のプロンプト以外にも、コード生成や文章要約、質問応答などそれぞれに適したサンプルが用意されているので皆さんも一度試してみてはいかがでしょうか!

Discussion