見出し画像

日本人以外にも日本語のメールが届いてしまう問題を解決したChatGPTの話

リバネスには15万人のリバネスIDユーザーがおり、Account Engagement(Pardot)を活用して企画の紹介なんかを行っています。
メールを配信する際にリストを作成するのですが、日本語メールは日本語圏のみに送る必要があります。
別途サービス提供用のWebリバネスID( https://id.lne.st )があり、ログイン済みユーザーの場合は、居住国が入っているので判定が効いたりするのですが、そういったアクセスがない場合やメアドがgmailだったり、国名が所属に入っていなかったりするとなかなか上手く判定ができませんでした。
これを上手く処理する方法を考えていた時にふと思いつく訳です

もしかしてChatGPTなら名前の文字列から日本人判定が効くのでは??

Salesforceに登録されている弊社メンバーの名前を抜き出してきて、日本人だけのリストにしてって言ってみました。名前は全てローマ字入力になっているのですが、それであっても日本人判定が100%だったんですよね。
おお、意外といけるかもしれない。その方向でやってみようといろいろ考えてみます

コードインタープリター(Advanced Data Analysys)を使ってみる

20万レコードくらいあるのでCSVにしてファイルを食わせてみるというのはどうだろうと思って、まずは社員名簿をDataLoaderで抜き出して食わせてみます。するとどうでしょう。うまくいきませんでした
コードインタープリターでは、pythonを使った判定をするんですけど、我々がやりたいのはChatGPTを使った判定であってpythonによる判定じゃないんですよね。
そんなわけでうまくいきませんでした。
データをファイルにせずベタ貼りにしても駄目でした。
将来的にはpythonで使える関数としてのchatGPTみたいなものが開発されてそいつを実行できると良いんですけどね。

ChatGPT APIを使って処理する方法を考えてみる

これはシンプルですね。APIに判定用プロンプトを書いて渡すだけです。

String requestBody = '{"model": "gpt-3.5-turbo","messages": [{"role": "user", "content": "以下の名前が日本人の場合は1を。日本人以外の場合は2を。判定不能な場合は0を返してください。Name=' + l.NATIVE_LANGUAGE_NAME__C + '"}]}';

こんな感じにしました。
Salesforce上にあるデータなので、Apexでバッチ処理を書いて定期実行すれば自動的にクリーニングができます。
すばらしー。
ということで実行してみます。

漢字名でいうと、日本人と中国人と韓国人あたりがいます。日本人か否かを判定すれば良いという条件なので、かなり精度高く処理できるようです。
逆に、ローマ字入力であっても日本人判定できるというのも良いです。
外国人だけど何人だかわからないという人がたまにでるという感じになりました。
カタカナ表記で入っている外国人には日本語メールを送って良いのかどうかというのはちょっと悩みどころかもしれない。

実行時間はあまり早いとOpenAI APIのレートリミットに達してしまうのでバッチサイズを1にして実行する形としています。
全部処理するのに50hくらいかかりそうですね。

まとめ

名前から日本人判定は意外と出来るぞ
これでPardotの配信で無駄な事故発生を避けられる気がする
やはり学習量ってすごいんだな、使えるなこれ

ってなりましたとさ。

宣伝

ChatGPTをSlackで使えるアプリを出してます!是非使ってみてください。
サポートも開始しました!お問い合わせお待ちしてます

noteにはこれまでの経験を綴っていこうかと思います。サポートによって思い出すモチベーションが上がるかもしれない。いや、上がるはずです。