2023年に入り、巷でかなり話題になっているのがAI技術のChatGPT関連の情報ですね。
今回は、ChatGPTを活用して、日本語とインドネシア語の例文作成作業・翻訳作業を自動化したので、その方法について詳しく紹介していきます。
成果物はこちら
【インドネシア🇮🇩語学習者必見】
— 菊池哲平@jogja🇮🇩 | 海外×エンジニア (@tpi29) April 13, 2023
インドネシア語アプリ@BINTANGO88 では、素材のデータにChatGPTを活用
動きは動画で
1️⃣単語入力
2️⃣インドネシア語での例文を作成
3️⃣例文の日本語訳を生成
※生成後微調整
こちらのスプシの雛形が欲しい方は、RTとリプ📩に🙋♀️をいただければ後日🎁 pic.twitter.com/NfPZ4Ls51q
- 単語を入力
- STEP1で入力された単語を用いた5単語以上の例文を自動生成
- STEP2で生成されたインドネシア語の例文を日本語に翻訳
というような処理が裏側で実装されています。
準備するもの
こちらの方法は、スプレッドシートとOpenAI社のAPIを活用しているため、以下の2点が必要になります。
- Googleアカウント(スプレッドシートの利用のため)
- OpenAI社のアカウント
【画像付き】OpenAI(ChatGPT)のAPIキー取得手順
https://programming-zero.net/openai-api-key/
作成手順
STEP1: スプレッドシートを作成
スプレッドシートを新規作成します。
https://docs.google.com/spreadsheets/u/0/
STEP2: スプレッドシートとGAS(Google App Script)を連携
画面上部のメニューから、”拡張機能”>”Apps Script” を選択
するとGoogle App Scriptの新規プロジェクトが自動生成され、以下のような画面に遷移します。
STEP3: スクリプトをコピー&ペースト
下記のスクリプトをコピーして、STEP2の画面に貼り付けます。
/**
* GPT-3 and Google Sheets
*
* @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 = "XXXXX"; //こちらのXXXXXの箇所をご自身のOpenAIのアカウントのAPIKeyに変更してください。
//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 gptTranslateId2Jp(prompt,max_tokens=256) {
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());
Logger.log(res);
return res.choices[0].text.trim();
}
function gptCreateSampleIndonesiaSentence(prompt,max_tokens=256) {
const url = "https://api.openai.com/v1/completions";
const payload = {
model: MODEL_NAME,
prompt: "インドネシア語の「" + prompt + "」を使用してインドネシア語の例文を作成してください。(単語数: 5単語以上、表現方法: 教科書のような違和感のない優しい丁寧なインドネシア語表現)",
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());
Logger.log(res);
return res.choices[0].text.trim();
}
function testGptTranslateId2Jp() {
result = gptTranslateId2Jp('Pekejaan ini membutuhkan kita untuk mundur dan memulai dari awal', 252);
Logger.log(result);
return result;
}
function testGptCreateSampleIndonesiaSentence() {
result = gptCreateSampleIndonesiaSentence('mundur', 252);
Logger.log(result);
return result;
}
function testAll() {
const targetWord = 'mundur';
const max_tokens = 256;
const sampleSentence = gptCreateSampleIndonesiaSentence(targetWord, max_tokens);
const resultTranslateSampleSentence = gptTranslateId2Jp(sampleSentence, max_tokens);
Logger.log("例文結果: " + sampleSentence);
Logger.log("例文翻訳結果: " + resultTranslateSampleSentence);
}
STEP4: OpenAI社のAPI Keyに変更
STEP3で貼り付けたスクリプトの11行目をご自身で取得されたOpenAI社のAPI Keyに変更してください。
const SECRET_KEY = "XXXXX"; //こちらのXXXXXの箇所をご自身のOpenAIのアカウントのAPIKeyに変更してください。
上記を変更後、スクリプトを保存します。
OpenAI社のAPIキーの発行手順は以下のサイトを参考にしてください。
【画像付き】OpenAI(ChatGPT)のAPIキー取得手順
https://programming-zero.net/openai-api-key/
STEP5: 作成した関数を使用してインドネシア語の例文を生成
以下の関数をスプレッドシートに入力して、インドネシア語の例文を自動生成します。
=IF(B3232<>"",gptCreateSampleIndonesiaSentence(B3232),"")
STEP6: 自動生成された例文を日本語に翻訳する関数を使用
以下の関数をスプレッドシートに入力して、STEP5で自動生成された例文を日本語に翻訳します。
=IF(F3232<>"", gptTranslateId2Jp(F3232), "")
上記までで、指定したセルにインドネシア語の単語を入力することで例文と日本語訳を自動生成してくれるようになっていることが確認できるかと思います。
まとめ
いかがでしたでしょうか?
すこしでも皆さんがChatGPTを身近に感じていただければとても幸いです。