見出し画像

完全自動化!GPT-3+Googleスプレッドシートを使ってユーザーコメントを感情分析


GPT-3とGoogle Spread Sheetを使ってコメントに対するネガポジ分析を行います。ユーザーからの感想やアンケートを分類したい時ってありますよね。ネガティブ、ポジティブだけでなく、建設的なコメントには「建設的」と分類できるようにします。最後はコメントのキーワードを抽出して、ユーザーへの返信文も生成できるようにします。

最終的には↓このようになります。

最終形


1.OpenAI API keyを発行

既に手順を知っている人は飛ばしてもらっていいです。


会員登録もしくはログイン


ログインしてください。


メニューからView API keysへ→Create new secret key


API keyを控えておいてください。


今回は料金がかかるので注意してください。料金はUsageでモニターできます。

初回登録時は18ドル無料で付与されます。


APIの使用料は以下からで確認できます。


2.Google Sheets(Google スプレッドシート)設定

次にGoogleSheetsの設定に入ります。

スプレッドシートに移動


拡張機能からApp Scriptを選択


エディタが開きます。


今回のコードです。先ほどのAPI Keyを変数SECRET_KEYに代入してください。
const SECRET_KEY ="この中に貼り付ける"

/**
* GPT-3 and Google Sheets
* https://liquidjumper.com/google-sheets/googlespreadsheet_connect_to_gpt_3
* @param {string} prompt Prompt.
* @param {number} temperature (Optional) Temperature.
* @param {string} model (Optional) GPT-3 Model.
* @return Response returned by GPT-3.
* @customfunction
*/

const SECRET_KEY = "ここにOpenAIのAPI Keyを貼り付けてください。";
//const MAX_TOKENS = 10;
const MODEL_NAME = "text-davinci-003"; // more structured and deterministic: for data
//const MODEL_NAME = "davinci"; // more flexible and creative: for stories, chatbots
const MODEL_TEMP = 0.3;

function GPT(prompt,max_tokens=30) {
  const url = "https://api.openai.com/v1/completions";
    const payload = {
    model: MODEL_NAME,
    prompt: prompt,
    temperature: MODEL_TEMP,
    //max_tokens: MAX_TOKENS,
    max_tokens: max_tokens
  };

  const options = {
    contentType: "application/json",
    headers: { Authorization: "Bearer " + SECRET_KEY },
    payload: JSON.stringify(payload),
  };

  const res = JSON.parse(UrlFetchApp.fetch(url, options).getContentText());
  return res.choices[0].text.trim();
}

ちなみにAPIのモデルとtemperatureを変えたい人は以下を変更してください。
今回はtext-davinci-003を使います。

const MODEL_NAME = "text-davinci-003";
const MODEL_TEMP = 0.3;



コードをエディタに貼り付け。(myFunctionsは上書いてください。)


プロジェクトを保存をクリック


実行をクリック


初回は以下の画面が出ると思うので、手順に従ってください。

権限を承認


詳細をクリック


無題のプロジェクトに移動をクリック


許可をクリック


実行をクリック


上記のログが出ればOK


3.スプレッドシートに関数をセット


いよいよ最後です。スプレッドシートに戻ります。
感情分析(ネガポジ分析)したい文章なりコメントをA列に記入してください。今回の分析対象となります。

A列に映画の感想を記入


次に以下の関数をB列に記入します。GPT()というのが先ほど作ってコードに対応します。GPT()に中に実行したい指示を書いていきます。"&A1&"となっている箇所が参照したいセルです。映画の感想を参照します。ちなみに、ISBLANK(A1),,はA1に何もなかったら、出力なしということです。

=IF(ISBLANK(A1),,GPT("次の文書をポジティブかネガティブまたは建設的と判別してください。"&A1&""))
B1に関数を記入


セルを下コピーしていきます。

「ポシティブ」「ネガティブ」「建設的」と出たら成功です!


キーワード抽出も同じようにします。

=IF(ISBLANK(A1),,GPT("次の文書キーワードを抽出してください。:"&A1&""))
セルC1にキーワードを抽出関数を代入


下にコピーして、キーワードが出ればOK!


コメントに対する返信も同じようにしてください。

=IF(ISBLANK(A1),,GPT("次の文書に対する返信を書いてください。:"&A1&"",150))
セルD1に関数を代入


下にコピー


完成です!おめでとうございます!

ヘッダーをつけた最終形


※本コードによって発生した料金・損害につきましては、いかなる責任も負いかねます。自己責任で実行してください。


生成AIの可能性を予言した名著です。プログラマーでなくても理解できるので、ぜひ読んでみてください。

GPT-3のアルゴリズムTransformerも解説。自然言語処理を理解するならマストの名著。


こちらの記事も併せてどうぞ!


この記事が気に入ったらサポートをしてみませんか?