やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

日本人の名前TSVファイルを作る1

 めちゃくちゃ大変だった。

成果物

ファイル 行数 「読み」 「表記」
m.tsv 82732 男のみ 男のみ
f.tsv 76890 女のみ 女のみ
c.tsv 4518 男女共通 男女共通
mc.tsv 2072 男のみ 男女共通
fc.tsv 2437 女のみ 男女共通
cm.tsv 14151 男女共通 男のみ
cf.tsv 16504 男女共通 女のみ

 合計3618361バイト。約3.5MB。

概要

 日本人の名前TSVファイルを作る。(名字を除いたファーストネームのみ)

作業概要

  1. ネットで名前を検索する
  2. ブラウザから名前の「読み」と「表記」をコピペする
  3. TSV形式に整形する

要件

  • 性別で絞込したい。たとえば男なら「太郎、大蔵、...」、女なら「花子、陽子、...」など
  • 世代で絞込したい。古(太郎たろう, 花子はなこ)、新(ライト, 亞里亞アリア, )、間(その他)の3世代
    • 古: 太郎など昔からあったもの。名前から性別が判明するもの。
    • 新: 特殊な読み。英語の読み。当て字。
    • 間: 上記以外のすべて
  • Shellで実装したい

 Shellは動作が遅い。よって高速化の工夫として、予め集計済みTSVファイルを作成することにした。

課題

  • TSVの集計を1対多にする(高速化のため。行数を減らしてループ数を減らす)
  • 世代による絞込が未実装。(今回のTSVファイルを世代ごとに細分化すべき)

所感

 TSVファイルを作成するのが超大変で苦痛だった。名字のときよりも。手作業が最悪にキツかった。数日がかりの苦行でしたわ。

 Webスクレイピングすべきなのはわかっていたけど、そのコードを書くのも面倒だった。なので小さいスクリプトを書いて一部自動化しただけ。

 その後、TSVをスクリプトにより分類するのも大変だった。

 完成したスクリプトは、実行完了までに4時間くらいかかるという悪夢。

 しかも、まだやりたいことは終わっていない。

 まさかこんな大変だとは思わなかった。

対象環境

$ uname -a
Linux raspberrypi 4.19.97-v7l+ #1294 SMP Thu Jan 30 13:21:14 GMT 2020 armv7l GNU/Linux