完全自動化!GPT-3+Googleスプレッドシートを使ってユーザーコメントを感情分析
GPT-3とGoogle Spread Sheetを使ってコメントに対するネガポジ分析を行います。ユーザーからの感想やアンケートを分類したい時ってありますよね。ネガティブ、ポジティブだけでなく、建設的なコメントには「建設的」と分類できるようにします。最後はコメントのキーワードを抽出して、ユーザーへの返信文も生成できるようにします。
最終的には↓このようになります。
1.OpenAI API keyを発行
既に手順を知っている人は飛ばしてもらっていいです。
今回は料金がかかるので注意してください。料金はUsageでモニターできます。
APIの使用料は以下からで確認できます。
2.Google Sheets(Google スプレッドシート)設定
次にGoogleSheetsの設定に入ります。
今回のコードです。先ほどの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;
初回は以下の画面が出ると思うので、手順に従ってください。
3.スプレッドシートに関数をセット
いよいよ最後です。スプレッドシートに戻ります。
感情分析(ネガポジ分析)したい文章なりコメントをA列に記入してください。今回の分析対象となります。
次に以下の関数をB列に記入します。GPT()というのが先ほど作ってコードに対応します。GPT()に中に実行したい指示を書いていきます。"&A1&"となっている箇所が参照したいセルです。映画の感想を参照します。ちなみに、ISBLANK(A1),,はA1に何もなかったら、出力なしということです。
=IF(ISBLANK(A1),,GPT("次の文書をポジティブかネガティブまたは建設的と判別してください。"&A1&""))
「ポシティブ」「ネガティブ」「建設的」と出たら成功です!
キーワード抽出も同じようにします。
=IF(ISBLANK(A1),,GPT("次の文書キーワードを抽出してください。:"&A1&""))
コメントに対する返信も同じようにしてください。
=IF(ISBLANK(A1),,GPT("次の文書に対する返信を書いてください。:"&A1&"",150))
完成です!おめでとうございます!
※本コードによって発生した料金・損害につきましては、いかなる責任も負いかねます。自己責任で実行してください。
生成AIの可能性を予言した名著です。プログラマーでなくても理解できるので、ぜひ読んでみてください。
GPT-3のアルゴリズムTransformerも解説。自然言語処理を理解するならマストの名著。
こちらの記事も併せてどうぞ!