2024.10.10
将来は卵1パックの価格が2倍に? 多くの日本人が知らない世界の新潮流、「動物福祉」とは
ChatGPTと文字コード #2(全1記事)
リンクをコピー
記事をブックマーク
Shun氏(以下、Shun):それでは、PR TIMES社の土屋が発表します。私の名前はShunといいます。PR TIMESに勤めていて、ソフトウェアエンジニアをやっています。
本日のアジェンダです。私の発表はどちらかというと、個人開発でChatGPTを使ったものを作って、それで実験をしてみたという内容になっております。
表題にもあるとおり、ChatGPTに文字コードのことを聞いてどんな反応をするかとか、どういうふうに認識をしているのか、これからどう活用できるかを調べてみたという内容になっています。
Shun:それではまず、背景から説明します。(スライドを示して)まず文字コードとは何かという話ですが、文字コードを定義どおりに言えば、スライドに書いてあるものになるんですが、ちょっと難しいので噛み砕いて説明をします。
コンピューターっていうものは、みなさん知っているとおり、0、1でしか判断ができない。0、1を使って判断をしているので、文字をそのまま解釈させることはできないんです。私たちのコンピューターはどのように扱っているかというと、文字に一意な数字を割り当てて、それを使って処理をしています。
司会者:すみません。画面が切り替わっていないみたいなので切り替えられますか? 切り替わりました。大丈夫です。
Shun:文字に対して一意な数字を当てることによって、コンピューターが認識できるようにしています。例えば大文字のAだったら16進数の41が当てられていたり、Bだったら42が当てられていたりということがされています。
「絵文字とかだったら違うのか」と思う方もいるかもしれないんですが、絵文字もやはり1つの文字で、それにも数字が割り当てられています。
Shun:我々開発者が文字コードを使う場面は、けっこう日常茶飯事なのではないでしょうか。例えばテキスト入力のバリデーションなんかはよくやることです。Eメールだったり電話番号だったり住所だったり、そういったテキスト入力のバリデーションをするタスクもあるし、検索エンジンなんかは、ユーザーが検索をしたクエリそのものだったり、あるいは検索される対象に対して文字コードを使って整理していくことはよくあることだと思います。
また、テキスト解析では同じ意味の言葉は同じ単語になっているほうがいいので、そのためにあらかじめ前処理というかたちで、データを正規化することがあります。
しかし、文字コードの理解と記述は非常に時間と労力が必要です。それは、ASCIIから始まり、近年デファクトスタンダードになりつつあるUnicodeになるまで、多くの過程を踏んでいくに従って、いろいろな文字コードが統廃合されたりなどの歴史があるからです。
しかし、我々は文字コードを使わないといけません。文字コードを使う頻度は非常に多いです。そんな文字コードの理解と記述の負担を減らすということは、今後我々の開発を促進させるために非常に重要なタスクだと考えています。
Shun:そこで私は、ChatGPTを使って文字コードを扱う負担を軽減できないかと考えました。
その仮説を基に、いくつか項目を調査してみることにしました。(スライドを示して)1つ目が、こちらのChatGPTが日本語として認識しているもので、次が括弧の検出。最後に、日本語特有の旧字体から新字体への変換を挙げています。
それぞれについて詳しく話していきます。ChatGPTが日本語として認識しているUnicodeの範囲ですが、文字種を日本語でよく使われている文字のみに制限したいというタスクがあります。それはどんなタスクというかというと、例えばユーザーの投稿から日本語で投稿されているもののみを抽出したいとか、そういったものがあったりします。
また、半角片仮名を取り出したいというタスクがあったりします。PR TIMESでもよくあるんですが、半角片仮名って意外とよく使われていて。ただし、その半角片仮名の意味は、全角片仮名とまったく変わらないんですよね。しかし、文字コードが違うせいで、コンピューターには別の言葉として認識されてしまいます。これはあまり良くないので、解析の時などには半角片仮名を全角片仮名に直すことをやったりします。
また括弧の検出ですが、こちらも同じように、記事タイトルから括弧を削除するようなタスクが存在します。実際にPR TIMESの記事を見てもらうとわかると思いますが、いろいろな括弧が使われています。角括弧に丸括弧に角括弧、普通の日本語の会話文で使われているかぎ括弧など、本当にいろいろな括弧が使われています。これら括弧を削除するタスクをやるのはけっこう大変で、Unicodeの表を自作したりする必要があります。
また、括弧の中身だけを取り出したいこともあります。PR TIMESでもよくあるのですが、会話文ではなくて、中の文字を強調したい時に括弧が使われることがあります。その括弧を取り出す時に、やはり括弧の正規表現を書かないといけないわけです。
最後に、旧字体から新字体への変換について話します。日本語の文字には旧字体と新字体という字形があって、私たちがよく使っている文字は、新字体と呼ばれるものです。旧字体でよく使われているものでいうと、木偏の「櫻」とか、髙(はしご高)と言われる字形がよく使われています。ですが、これらを変換するにはUnicodeの表を自作する必要があって、けっこう大変です。
実際どんな問題に当たるのかというと、貝偏の「櫻」と木偏の「桜」の検索結果を統一したいというタスクがあったとします。例えばお花見の場所を検索する時に、貝偏の「櫻」と木偏の「桜」で検索結果が違ったら、ちょっと嫌ですよね。
また、旧字体や新字体を統一して解析したいというタスクがあって、同じ意味を持つ文字なのに、文字コードが違うせいで違う文字として認識されてしまうのは解析に影響を及ぼしてしまうので、これらをChatGPTで直せたらいいなというのがあります。
Shun:次に検証手法について話します。ここからが私が作ったものになります。ChatGPTのGPT-3.5については、2023年3月に調査しました。個人開発でCLIアプリを作っています。GPT-4に関しては2023年5月に調査しました。こちらに関してはWeb UIを使っています。
GPT-3.5について話します。「そもそもどうして自作のCLIアプリなんて作ろうと思ったんだ」という話があると思います。こちらについて説明します。
当時の状況としては、ChatGPTにプラグインとかがなく、1ユーザーとして個人定期購入することが、ちょっと微妙だった時期があったんですね。
一方で、無料枠だとつながらない時があって、それはそれでちょっと嫌だったので、なにかしらの方法で、定期購入より安くChatGPTを安定して使える環境が欲しいなと思っていました。
そこでいろいろ探してみたら、ChatGPTの従量課金制のAPIがOpenAIから公式で公開されていたので、こちらを使用することにしました。
自作アプリの使用ソフトウェアとしてはごくごく一般的な構成になっていて、コンテナを作成するためにDockerを動かして、その上でUbuntuを立て、Ubuntuの上でPythonスクリプトを動かす構成でやっています。
こちらに関しては、時間があったら話そうと思っていたんですが、今日はなさそうなので飛ばします。
(スライドを示して)こちらが完成した自作アプリです。コマンドラインからChatGPTと会話することができていると思います。緑の部分が質問で、回答の部分が赤色です。ここでは、回答と質問が1つしかないんですが、連続して質問したり会話を続けていくことが可能です。
Shun:次に、調査した内容について話していこうと思います。まず、日本語に関係するUnicodeの範囲を聞いてみました。GPT-3.5では平仮名と片仮名、漢字、全角アルファベットを提示しました。この全角アルファベットはけっこうおもしろくて、日本語に関係すると言われているんですよ。
なぜこれがおもしろいかというと、全角アルファベットは、欧米圏の人たちは使いません。なぜかというと、ASCIIだからです。ですが、日本語としては全角アルファベットがよく使われているので、スライドのように提示されたのだと思います。
また、当初は日本の携帯キャリアが絵文字を開発していたんですが、これが入っていないことから「Emoji」の国際化を感じて、感動した気分になりました。
ただし、これらの出力は完全ではないです。実際に調べてみると、アイヌ語などの拡張片仮名などが含まれていないことがわかります。
次に、GPT-4でも同じことを聞いてみました。すると、かなり正確な出力をするようになりました。(スライドを示して)赤線で囲っているように、拡張片仮名などもちゃんと含まれています。「Emoji」は同様に含まれませんでした。
次に、括弧の文字コードについて聞いてみました。私はPR TIMESで解析をやっている関係でUnicodeを調べていたことがあるんですが、全部調べると100個以上あってけっこう大変なんです。
括弧の文字コードを聞いた結果、かなり少ない感じになって、正確に出力できていないことがわかります。
括弧の判定に関して、GPT-4はたくさん表示するようになりました。一方で、括弧で囲われている文字、例えば(b)とか(a)とかの(環境依存)文字も表示するようになってしまっています。
出力は長いので全部書いてはいませんが、「Emoji」で麻雀牌の「中」のようなものも囲われている判定をしていて、なかなかおもしろいなと感じました。
次に、旧字体から新字体への変換です。よく使われているものであればGPT-3.5の時点でも十分精度が出ることがわかっています。
しかし、これに関して「正規表現を書け」と言うと、書けないんですよね。
GPT-4に聞いてみたところ、「そもそも旧字体から新字体に正確に変換することは非常に難しいタスクだ」と言われてしまいました。Unicodeのコンソーシアムの表とかを使ってもいいんだけれど、正確に当てるのはやはり難しいことのようで、残念ながらGPT-4の力を借りても難しいのかなと考えています。
Shun:結果のまとめです。GPT-3.5からGPT-4になるにつれて、どのタスクでも精度が上がっていることがわかりました。
次に、結論と次の目標を話していきたいと思います。結論としては、ChatGPTを用いて文字コードを扱う負担を一部軽減できると考えています。
例えば、Unicode検索での活用はできそうだなと思っています。
(スライドを示して)実際、スライドのようにUnicodeの範囲を半角括弧で出力してくれているので、ここを正規表現で抜き取ればうまく出力できる可能性があります。
また、解析の前処理での利用も考えられます。これはどちらかというと自然言語で自然言語処理をよく扱っている人ではなくて、あまりデータ解析に慣れ親しんでいない人でも前処理をできるようなシステムが作れるのではと考えています。さらに、検索や推薦システムでも利用できるかなと考えています。
Shun:まとめと今後です。一部のタスクにおいて、ChatGPTの力を借りて、プログラマーの文字コードを扱う負担を軽減できることがわかりました。今後の展望としては、文字コードの範囲を自然言語で検索できるようなアプリケーションの作成に取り組みたいと考えています。
最後に、当発表は2023年3月20日に行われたものを再編集、加筆したものです。再発表の機会をいただいたログミーTechのみなさま、本当にありがとうございました。また、この発表にいたるまで、本当にたくさんの人にお世話になりました。当発表に関わるすべてのみなさまに感謝申し上げます。ご清聴ありがとうございました。
関連タグ:
2024.11.13
週3日働いて年収2,000万稼ぐ元印刷屋のおじさん 好きなことだけして楽に稼ぐ3つのパターン
2024.11.11
自分の「本質的な才能」が見つかる一番簡単な質問 他者から「すごい」と思われても意外と気づかないのが才能
2024.11.13
“退職者が出た時の会社の対応”を従業員は見ている 離職防止策の前に見つめ直したい、部下との向き合い方
2024.11.12
自分の人生にプラスに働く「イライラ」は才能 自分の強みや才能につながる“良いイライラ”を見分けるポイント
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.11.11
気づいたら借金、倒産して身ぐるみを剥がされる経営者 起業に「立派な動機」を求められる恐ろしさ
2024.11.11
「退職代行」を使われた管理職の本音と葛藤 メディアで話題、利用者が右肩上がり…企業が置かれている現状とは
2024.11.18
20名の会社でGoogleの採用を真似するのはもったいない 人手不足の時代における「脱能力主義」のヒント
2024.11.12
先週まで元気だったのに、突然辞める「びっくり退職」 退職代行サービスの影響も?上司と部下の“すれ違い”が起きる原因
2024.11.14
よってたかってハイリスクのビジネスモデルに仕立て上げるステークホルダー 「社会的理由」が求められる時代の起業戦略