見出し画像

ChatGPTによる姓名の自動分割処理、驚きの精度

ChatGPTはアビスの縦穴ほど広大ですから

アビスの縦穴というのは、もちろん「メイドインアビス」のことですが、引きで使っただけソス(笑)

2022年末に公開されて、すでに4~5か月となったChatGPTですが、現在、世界中でアマ・プロ問わず、研究されていることは言うまでもありません。そして、この波に乗りそこなってしまったため「もうかなり研究されてしまっているのだろうな。今から参加してもな」などと、思っている方もいるかもしれません。

しかし、今回の生成型AIの全体像はそんな浅いものではありません。おそらく全体が10000だとして、いまだ1%も研究されていないのではないかと、勝手ながら私は思います。逆にAIの進化のほうが早すぎるぐらいです。もっともっと、人類の知恵を寄せ集めて取り組まないといけない分野だと思います。

そんな話はおいといて、今回は、ChatGPTをテキスト処理に使えそうなことについて考えてみました。
テキスト処理というのは、私も、編集作業やデータ処理を割とやっていまして、いろいろな困難にぶち当たり、手作業をなんとか効率化したいと思っているところです。とはいえ、プログラムを書くのも大変なので、せいぜい正規表現を使う程度です(正規表現にもChatGPTは使えます!)。

今回は「名前」に関係する、2つのテキストデータ処理を試したので、報告させていただきます。

Webからのコピペデータを一瞬でCSV化する

1つ目は名前に特化したものではないのですが(いきなり違うんかい!)、たまにWebからデータを拾ってCSV化したいことがあります。たとえば、表化されているデータをコピペして使いたいといった場合です。

表というのは、内部的にはTableタグが使われているので、少しHTMLがわかる人であれば、このようなときソースからひっぱってくるかと思います。そして、</td><td>という組み合わせを,(カンマ)に置換にする、という感じです。みなさんもやった経験あるのではないでしょうか?

しかし、ChatGPTを使うと、データをうまいこと分割してくれそうです。100%うまくいくかはわかりませんが、かなりうまくいくように思います。

※直接Excelにペーストする方法も、ある程度うまいきます。Excelが使えないときや、思い通りのデータ分割をしたいときとお考えください。

今回試したのは、「たまひよ」の「2022年赤ちゃんの名前ランキング」です。このサイトは、1年に一回ぐらい見ていて、人気の名前の推移がわかるのがおもいしろいです。これを普通にコピペして,(カンマ)付きのCSVデータ化してみます。実際には次のように変換してみます。

1碧あお前年度:7位 → 1,碧,あお,前年度:,7,位

テキストエディタなどを使って、次のようなプロンプトを作成します。「男の子の名前全体ランキング」以降が、実際にWebページをコピペした部分です。

次のデータはWebからコピペしたものです。
これらのデータをうまくわけて、間に,を入れて、使いやすいデータにしてみてください。

1	
碧
あお
前年度:7位

この場合は

1,碧,あお,前年度:,7,位

のようにしてください。

男の子の名前全体ランキング
順位	名前	
1	
碧
あお
前年度:7位
:
:
9	
樹
いつき
前年度:4位
女の子の名前全体ランキング
順位	名前	
1	
陽葵
ひまり
前年度:1位
:
:
10	
咲茉
えま
前年度:18位

生成された結果が次となります。

男の子の名前全体ランキング
順位,名前,,前年度:,位
1,碧,あお,前年度:,7,位
2,陽翔,はると,前年度:,2,位
:
9,樹,いつき,前年度:,4,位

女の子の名前全体ランキング
順位,名前,,前年度:,位
1,陽葵,ひまり,前年度:,1,位
2,凛,りん,前年度:,3,位
:
10,咲茉,えま,前年度:,18,位

コピペする際に使用しているWebブラウザによっては、異なる挙動をする可能性もありますし、結果についてはちゃんと確認したほうがいいわけですが、作業がはかどること間違いなしです。

永遠の課題だった姓と名の分割がいとも簡単に実現

次は、よりAIらしい処理になります。むしろAIの真骨頂といってもいいでしょう。

それは何かというと、姓名を自動で分けるという処理です。たとえば「田中太郎」を「田中」「太郎」と分けるという処理です。これは、一般的なテキスト処理ではどうしようもありません。「名前ランキング」のようなサイトと提携して、常に最新の名前データベースを更新していくような、面倒極まりないことになってしまうでしょう。

実際に、これを行なう前にテストデータを作成します。Webなどからもってきてもいいわけですが、テストデータも作成してもらいます。

テストデータを作成してください。
データの種類は、日本人の名前です。姓と名をそれぞれランダムに作ってください。
長い名前、短い名前をバランスよく入れてください。
昔流行っていた名前、最近流行っている名前もいれてください。
フォーマットは次のようにしてください。

田中太郎
森真理恵

生成されたのが次のような名前です。

坂口太一
長谷川香織
村山晃司
藤原美和
井上雅之
竹内裕子
島田啓介
伊東美智子
佐野雄一
小川美里
梅田翔太
川口幸子
竹田健太
中山裕美子
森下隆之介
岡部麻美
田辺健太郎
橋本陽子
福島佳代子
山本直樹
大島由香
伊藤健二
田村かおり
高木徹

以上について、姓と名に分ける指示をしてみます。

次について、姓と名で分けてください。
坂口太一
長谷川香織
村山晃司
:
高木徹

結果は次のようになります。あっという間に、完璧にできました。

坂口, 太一
長谷川, 香織
村山, 晃司
藤原, 美和
井上, 雅之
竹内, 裕子
島田, 啓介
伊東, 美智子
佐野, 雄一
小川, 美里
梅田, 翔太
川口, 幸子
竹田, 健太
中山, 裕美子
森下, 隆之介
岡部, 麻美
田辺, 健太郎
橋本, 陽子
福島, 佳代子
山本, 直樹
大島, 由香
伊藤, 健二
田村, かおり
高木, 徹

姓と名を分けるだけでなく、さらに読み方も追加してみましょう。

次について、姓と名で分けてください。間に,(カンマ)を入れてください。
さらに、読み方も追加してください。
次は例です。

坂口,太一,さかぐち,たいち

坂口太一
長谷川香織
:
高木徹

結果はこのようになります。

姓と名、読み方を含めて以下になります。

坂口,太一,さかぐち,たいち
長谷川,香織,はせがわ,かおり
村山,晃司,むらやま,こうじ
藤原,美和,ふじわら,みわ
井上,雅之,いのうえ,まさゆき
竹内,裕子,たけうち,ゆうこ
島田,啓介,しまだ,けいすけ
伊東,美智子,いとう,みちこ
佐野,雄一,さの,ゆういち
小川,美里,おがわ,みさと
梅田,翔太,うめだ,しょうた
川口,幸子,かわぐち,さちこ
竹田,健太,たけだ,けんた
中山,裕美子,なかやま,ひろみこ
森下,隆之介,もりした,りゅうのすけ
岡部,麻美,おかべ,あさみ
田辺,健太郎,たなべ,けんたろう
橋本,陽子,はしもと,ようこ
福島,佳代子,ふくしま,かよこ
山本,直樹,やまもと,なおき
大島,由香,おおしま,ゆか
伊藤,健二,いとう,けんじ
田村,かおり,たむら,かおり
高木,徹,たかぎ,とおる

データとして弱い部分があるので、オマケでこういうのも試してみました。あとで、もう少し追加するかもしれません。

森,正太郎,もり,しょうたろう
長渕,剛,ながぶち,つよし
江戸川,コナン,えどがわ,コナン

もちろん、人間でも迷うような、姓と名がどこまでなのか判別し辛い名前はありますし、それは人間同様に間違いも犯すと思います。

読み方も同様ですから、最終的には確認が必要ですし、それでも難しい名前が続出する場合には最初から姓と名を分けてもらうような書式にしたほうがいいわけです。

しかしながら、すでに存在するデータについて、とりあえず素早く処理させたいときにはAIは非常に有効だと思います。名簿管理が必要なときには試してみるといいように思います。

すごいぞChatGPT!

この記事が気に入ったらサポートをしてみませんか?