カテゴリー
ジェネレーター

OpenAIとStreamlitを使ったAIツイート自動生成サイト with ソースコード

OpenAI GPT-3 APIを呼び出して、お題に沿った適当なツイートを生成するwebサイトが、ソースと共に公開されています。

指定するのは3つ。

Topic: 語らせたい話題
Mood: どんなムードで語らせるか (使える形容詞の一覧)
Twitterアカウント名: 既存のtwitterユーザーの最近のツイートを真似させる

Mood と twitterユーザーはオプションなので、topic だけでも何かしら作ってくれます。

例えばで以下のように入力してみました

Topic: Dropkick on my devil
Mood: dreamy, happy, relaxed, tender
Twitter: イーロン・マスク(elonmusk)

で、生成されたのがこれ

Just watched an episode of #DropkickOnMyDevil and it made me feel so relaxed and happy – it’s the perfect way to end the day 🌃✨ (邪神ちゃんドロップキックを観たとこ。とてもリラックスしてハッピーな気分になった。パーフェクトな一日の締めくくりだ)

模倣対象とムードを変えると、まったく違うツイートが出来上がってきます。

Topic: Dropkick on my devil
Mood: inspirational, thoughtful, dignified
Twitter: アメリカ大統領(potus)

Dropkick on My Devil is a reminder to never give up on our dreams and strive to make them reality – be courageous and never surrender despite all odds. (邪神ちゃんドロップキックは、我々が決して夢を諦めず、実現するために努力するよう伝えています。どんな困難があっても、勇気を持って負けてはいけません) #DropkickOnMyDevil #DreamsIntoReality #BeCourage

短文とはいえ自然な文章ですごいですね。

Python製のデータを表現するwebアプリフレームワーク Streamlitを使ったソースコードが公開されていて、各APIを呼び出しているだけとはいえコードが簡単で短いのも驚きます。

これが簡単にできてしまうとなると、日常的にいろいろなことをつぶやいているアカウントだからといって中が普通の人なのかどうか、まったくわからなくなっていくでしょうね。

via Twitter

カテゴリー
技術

リクルートメールにGPT-3を使って自動返信する

転職エージェントや企業が送ってくる(スパムに近い)スカウトメールに対してOpenAI の GPT-3 API を使って自動応答をさせる方法を教えてくれるマット・ビリューさんのブログ記事がありました。

転職に興味が無いなら無視してもよいでしょうが、ビリューさんは3つの理由から返事はしたいと考えたそうです。

  1. それが礼儀正しいから
  2. 無視しても相手は何度もフォローアップのメールを送ってくるから
  3. いつか求職する時のために関係を維持することには興味があるから

2番はあるあるですね。リクルーター側も自動化されていると思いますが、〇日後、△日後に「先日メールを送りましたが、その後…」みたいなメールを送ってこられることはよくあります。

それで短文の「今は職を探してないけどあなたのことは覚えておくよ」的な返事をするのですが、これも手動は面倒なので、自動化したいと考えたそう。そして、一律の固定文面ではなく相手に応じたパーソナライズをしようとした時に、ルールベースでリクルーターの所属と名前を取り出すよりも、機械学習による処理を考えたと。

Python のソースコードが公開されているのですが、OpenAI の GPT-3 API を使って、相手の文面から企業名と相手の名前を抽出させ、返信のテンプレートにその社名と名前を埋め込んで返答を作っています。

メールがリクルートメールなのかその他の一般のメールなのかの分類はこのスクリプトでは行わず、メールサービスの方の機能で分類しフォルダに分けているようです。サンプルの環境変数ではFastmailの名前がありますね。これを IMAP でアクセスしフォルダ内のメールに自動応答をかけています。

スクリプト中ではサンプルのメール文面から”Apple”社の”Steve”さんを抜き出しています。OpenAI で実際にsummarize させてみると、ちゃんと取れてます。

英語のリクルートメールから送信者の名前と社名を抽出する on OpenAI の Playground

これは楽ですね。日本語だとどうなのかなと、適当な文面を作って(元ネタはいっぱいありますし)食わせると、これも取れるようです。

GPT-3 の話でよく見るのはテキストの自動生成だったので、こういう要素の抽出にも簡単に使えると知れたのは良かったです。

リクルートメールの方もどうせ自動化されまくっているので、この先はお互いが自動生成のメールを送りあって関係性を保つみたいなことになるのでしょうか。

[追記] Hacker Newsのトップにも出ました。

カテゴリー
ネットのサービス

Autoregex.xyz – 英語で書いた文章から正規表現を作る変換サービス

AutoRegexは、英語から正規表現への変換をしてくれるというwebサービスです。

トップには「平易な英文からGPT-3を使って正規表現を生成します」とあります。

autoregex.xyz のトップ

メールアドレスで登録して試してみました。

“phone number”と入れて出てきたのはこんな正規表現。

\d{3}-\d{3}-\d{4}

北米の番号としてはありうる正規表現かな。文字と桁だけチェックできて、形式も限定されていますが。(参考: まじめな正規表現の例)

“Japanese phone number” だとこれが帰りました。

^\d{2}-\d{4}-\d{4}$

うん。だめですねこれ。携帯電話の番号とか地方の局番とかはマッチしなさそう。あと先ほどはなかった行頭行末の条件が増えています。

中身がどう動いているかわかりませんが、正規表現とその解説文(英文)をたくさん食わせて学習させてるということだと、その中の日本の電話番号に関する情報が間違ってるのかもしれません。

正規表現でよく揉める難しいやつ、”email address”を入れると、

[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+

はい。これはもともと簡単そうに見えて非常に難しい問題なのですが、かなり緩い正規表現になっています。簡易なチェックに使うのも問題ありそう。

トップページの例は英文で説明的に書いたものを正規表現化するものが多いので、こういうのも試しました。”word starts either a or b, then any alphabet follows, and ends with three digits”

^(a|b)[a-zA-Z]{3}[0-9]{3}$

言ってない条件が入ってますが、大きくは違ってないかと。

変換ボタンをもう一度押すと、出てくる正規表現は変わっていくようです。何回も試す事でより正解に近い正規表現が得られることもあるかもしれませんが、現時点では出てきた正規表現を理解して意図通りになってることを確認・必要に応じて修正するとか、大量にテストケースを書いてテストするとか(まあ、これは自分で作った正規表現でもすることですが)しないといけなさそうに思います。

現時点では利用には十分注意した方がいいと思いますが、いつか賢くなっていくなら助かる人もいそうなサービスです。

via reddit