ならば

音とかで遊んでいたログ

論文著者の日本人風の名前ランキング

romajiというRuby用のローマ字・カナの相互変換ライブラリを使って何かできないかと思ってやってみた。

学術文献の検索サイトには、収集した文献の著者一覧を公開しているところがある。
その一覧をもとに、日本人っぽく感じられる姓と名のランキングを作った。

使ったソースと結果

まとめ
ソース 分野 一覧取得日 著者名の総数 日本人っぽい名前の数 抽出比率
DBLP 計算機科学 2012/4/22 1106575 41552 3.8%
RePEc 経済学 2012/4/19 31967 530 1.7%
ランキング(Top50)

姓のランキング

順位 DBLP 抽出数 順位 RePEc 抽出数
1 スズキ 351 1 スズキ 9
2 タナカ 320 1 タナカ 9
3 タカハシ 314 3 タカハシ 8
4 ワタナベ 306 3 ナカジマ 8
5 サト 300 5 サト 7
6 ナカムラ 274 6 イト 6
7 コバヤシ 268 6 マツモト 6
8 ヤマモト 265 6 ワタナベ 6
9 ヤマダ 241 9 オノ 5
10 イト 236 9 ヤマダ 5
11 ヨシダ 221 11 アオキ 4
12 カト 218 11 イマイ 4
13 マツモト 195 11 ウエダ 4
14 キムラ 189 11 カト 4
15 ハヤシ 185 11 コバヤシ 4
16 ヤマグチ 169 11 タケウチ 4
17 イノウエ 164 11 タケダ 4
18 ササキ 158 11 ナカムラ 4
18 モリ 158 11 ホリ 4
20 シミズ 155 11 ヤマグチ 4
21 イケダ 148 21 アベ 3
22 アベ 143 21 イケダ 3
23 フジイ 140 21 イシダ 3
24 イシカワ 137 21 イノウエ 3
24 ハシモト 137 21 ウスイ 3
26 フジタ 136 21 カノ 3
27 セガ 135 21 キムラ 3
27 ヤマシタ 135 21 シライ 3
29 オガワ 134 21 タカヤマ 3
30 ウエダ 133 21 フジイ 3
31 イシイ 132 21 フジワラ 3
32 オカダ 129 21 マツダ 3
33 サイトウ 128 21 ヤマモト 3
33 ムラカミ 128 34 アライ 2
35 サカイ 127 34 イザワ 2
36 マエダ 123 34 イワタ 2
37 タケウチ 122 34 ウラカミ 2
38 サカモト 121 34 オオタキ 2
39 ナカガワ 120 34 オオツ 2
39 ナカジマ 120 34 オオノ 2
41 ハラ 115 34 カスガ 2
41 ミヤザキ 115 34 カタヤマ 2
43 アオキ 112 34 カネコ 2
43 ヤマザキ 112 34 カワイ 2
45 オノ 110 34 カワカミ 2
45 カネコ 110 34 カワムラ 2
47 オカモト 108 34 キタムラ 2
48 ワダ 107 34 クボ 2
49 タケダ 106 34 クボタ 2
49 ナカノ 106 34 クロズミ 2
34 サイトウ 2
34 サカタ 2
34 ツチヤ 2
34 ナイトウ 2
34 ナカバヤシ 2
34 ニシヤマ 2
34 ハヤカワ 2
34 ハヤシ 2
34 ヒラタ 2
34 ヒラノ 2
34 フクダ 2
34 フジタ 2
34 マツシマ 2
34 マルヤマ 2
34 ミズノ 2
34 ミヤザキ 2
34 ミヤザワ 2
34 モリ 2
34 ヤマウチ 2
34 ヤマガタ 2
34 ヤマシタ 2
34 ヤマノ 2
34 ヨシダ 2


名のランキング

順位 DBLP 抽出数 順位 RePEc 抽出数
1 タカシ 593 1 タカシ 8
2 ヒロシ 561 1 ヒロシ 8
3 タケシ 419 3 タケシ 7
4 ヒロユキ 399 4 アツシ 6
5 サトシ 396 4 ジュン 6
6 アキラ 366 4 マコト 6
7 ケンジ 335 4 マサヒロ 6
8 マサヒロ 328 8 ケイスケ 5
9 アツシ 325 8 ケンジ 5
10 マコト 317 8 コイチ 5
11 ジュン 300 8 コウジ 5
12 コウジ 289 8 タカヒロ 5
13 ダイスケ 286 8 ダイスケ 5
14 ヒロアキ 264 8 ナオキ 5
15 ユキ 257 8 マサユキ 5
16 マサユキ 253 8 ヤスシ 5
17 タカヒロ 249 17 アキヒコ 4
18 タカユキ 248 17 アキラ 4
19 ナオキ 247 17 カズオ 4
20 ヒロキ 238 17 カズヒロ 4
21 コイチ 219 17 サトシ 4
22 カズヒロ 215 17 テツヤ 4
22 テツヤ 215 17 ハジメ 4
24 マサキ 213 17 ヒロユキ 4
25 トオル 212 17 ユキ 4
26 ヤスヒロ 206 26 アヤコ 3
27 ユタカ 196 26 エイジ 3
28 タクヤ 190 26 カズユキ 3
29 マサシ 189 26 カツユキ 3
29 ヨシヒロ 189 26 ケイコ 3
31 ヒトシ 183 26 ケン 3
32 アキヒロ 181 26 ケンイチ 3
33 シンジ 179 26 ケンスケ 3
33 タツ 179 26 コウゾウ 3
35 ケイスケ 176 26 シンゴ 3
35 ケンイチ 176 26 タイスケ 3
37 カズオ 172 26 タカオ 3
37 トシユキ 172 26 タツ 3
37 マサト 172 26 テツジ 3
40 ユイチ 170 26 ヒデアキ 3
41 オサム 169 26 ヒロアキ 3
42 ケン 165 26 フミオ 3
43 ユウジ 164 26 マサキ 3
44 ツヨシ 163 26 マサル 3
44 トモヒロ 163 26 ミノル 3
46 ヒデキ 160 26 ユタカ 3
47 マサノリ 152 26 ヨイチ 3
48 トシオ 151 26 ヨスケ 3
49 カズヤ 149 26 リュウイチ 3
49 マサアキ 149 26 リョウ 3
補足:

ローマ字表記は一意ではなく揺れがあるので、他に情報がなければ正確なカナ変換は不可能だ。例えば、姓のランキングにある「サト」や「イト」は、元々のローマ字表記だとSatoやItoになっている。実際にはほとんどは、またはもしかしたら全てが、サトウさんイトウさんだと思うけど、それでもサト(例:佐登)さんやイト(例:伊都)さんである可能性は排除できない。

表記の揺れのために、カナ変換した結果が分散してランキングが下がったと思われる名前もある。例えば、Sato, Satoh, Satouの場合、カナ変換の結果は「サト」と「サトウ」に分かれるが、これが全てサトウさんだと仮定すると、DBLPのランキングでは数が352となってスズキさんを抜いて一位になる。

どうやってランキングを作ったか

まず準備として、形態素解析用辞書であるNAIST-jdicnaist-jdic.csvから、人名のエントリのカナ表記の列だけを抜き出して、姓と名の辞書を作っておく。
あとはランキングを出力する以下のようなプログラムを実行する。

  1. 著者一覧から著者名をひとつ取って、姓と名を分離する
    姓と名の並びは前もって一覧を眺めて決めておいて、実行時にスイッチさせた
    DBLPは名・姓、RePEcは姓・名の順
  2. 姓と名について、ありそうな表記の揺れを出す
  3. 処理2の結果をromajiを使ってカナ変換して、姓と名がそれぞれ辞書にあるかチェックする
  4. 処理3の結果、両方が辞書にあれば、それぞれランキングに追加して処理1へ、なければ処理2へ
  5. 全ての著者名について処理が終わったら、ランキングをソートして出力する

処理2でやっているのは、例えば o は oo とか ou に置き換えるなどというルールの組み合わせを、実行する度に順次適用すること。ルールセットは適当に考えて以下にした。

  • a -> aa
  • o -> oo
  • o -> ou
  • oh -> oo
  • oh -> ou
  • u -> uu
  • n -> nn
  • n' -> nn
  • dzu -> zu
  • kio -> kyou
  • tch -> cch
  • wi -> i
  • we -> e
  • ye -> e

なぜこのルールがあるのにSatoが「サトウ」でカウントされないかというと、当たり前だが処理4で最初に辞書にあった名前だけをランキングに追加するようにしているから。揺れの中で複数の候補が辞書にあった場合にはどれが正しいかなんてわからないので、今回は処理が軽くなることを優先した。

他にも高速化のために、処理2の前で姓や名に l, q, v, x が含まれているか、末尾が a, i, u, e, o, n 以外の文字であるかをチェックして、後続処理の実行を省略した。

何も調べてない感想

真面目に取り組もうとすると固有名詞の表記の揺れは厄介そう。漢字だと異体字が大変だろうな。

Unicode+ライフゲーム

ライフゲームで更新されるビットパターンをUnicodeのコードポイントとして文字列に変換した。
wonderflで実行できる。環境によってはフォントの問題で表示できない文字があるかも。

ビットパターンは横に並ぶ16ビットごとに切り出して、それを一文字として見る。文字セットはUnicodeの文字が連続する領域を、開始位置と終了位置のコードポイントで指定する。例えば、16ビット全部ゼロの部分は、開始位置の文字に変換される。文字セットに含まれる文字の数が256未満の場合はビットパターンが表す数に対して単純に文字数で剰余を取っている。

32ビットごとに切り出すようにして、文字セットの範囲を狭めなければ基本多言語面の文字がすべて収まるためカオス極まる気がするけど、表示できない文字も多そうなので試していない。


このエントリを書いた人はこんなエントリも書いています: QRコード+ライフゲーム - ならば

boidsで作る音符の群れ

boidsアルゴリズムに従って、音符を泳がした。

   

音符が線を通り過ぎたとき、その線に対応する高さの音が鳴る。
音符は全音符、二分音符、四分音符、八分音符の四種類。


wonderflで実行できる。クリックで音符を追加。

単純な五線以外の形で音の線を作っても面白いかも。

顔文字の編集距離グラフ

顔文字の編集距離でグラフを作ってみた。
編集操作は挿入・削除・置換で、各コストは1とした。Microsoft IME 2007で入力できる顔文字をもとに、編集距離が1になる顔文字同士をつないでいる。孤立する顔文字はグラフから削除した。

最大次数17を持つ顔文字は (^_^) である。スタンダード。


顔文字の自動分類に応用できそうな気がする。

個人版2011年のハイプ・サイクル

いつもに輪をかけて仕様もないネタが浮かんだので急いで吐き出す。

ハイプ・サイクル([英]hype cycle)とは、コンサルティングファームのガートナーが考案した技術コンサルのツールのひとつ。新しく登場した技術が、

  1. 発表されて一部のメディアやアルファなんとかな人たちに認知されていって、
  2. 話題が広まり、多くの人から注目を集め、過度な期待が持たれるようになり、
  3. 実態や行き過ぎた適用による失敗が明らかになるにつれ、反動的な批判が巻き起こった後、
  4. 時間が経過するにつれて真の有効性や適用範囲が知られるようになって、
  5. 最終的に市場のなかで一定の立場を獲得する

過程を表す図。
グラフのように見えるが客観的な指標でプロットできるわけではなく、作者の見解を図示するものである。
 
 CC BY-SA 3.0


話題の新技術がいつハイプ(過度な期待、誇大広告)を超えて浸透していくかを表し、流行やバズワードに流されない適切な投資・導入のタイミングを顧客に知らせるために使われるようだ。

ハイプ・サイクルといいながらカーブであってサイクルではないだろうというツッコミに始まり、いろいろな批判があるらしいが、ガートナーのレポートではよく使われる。


まあそういう堅い話は置いておいて、これを個人的な熱意に強引に適用するとどうなったかという例を下に出す。強調しておきたいのは、縦軸はあくまで学習に対する熱意であって習熟度ではない。スキルとは全く関係ない。


これを作ると、

  • 今は何に対しても熱意がないんですね
  • 日頃プログラミングしてないんですね
  • 飽きっぽい性格なんですね

などという診断が下るのである。だからどうしたと言われるとどうもならない。
というか飽きっぽい性格でなければそもそもこういうカーブにならない気がする。

市場は熱しやすく冷めやすい。

まばたきで画面キャプチャを撮る

Webカメラに顔を映して、まばたきしたときに自動でアクティブウィンドウの画面キャプチャを撮って保存する。
左下のウィンドウに映っている目の周りの四角が青くなったときが目を瞑ったとき。

   


Camera Mouse Suiteというソフトと、自作のキャプチャプログラムを組み合わせている。

Camera Mouse Suite

Camera Mouseは、Webカメラに映した頭の動きでマウスを操作するソフト。頭を上下左右に振ることでマウスポインタを動かして、一定時間同じ場所にマウスポインタを置けばクリックできる。このソフトの機能追加バージョンがCamera Mouse Suiteで、マウスポインタの停留時間の代わりに、まばたきでクリックする機能がある。

  

Blink Timeに、目を瞑っている最少時間を設定する。この時間が、生理的な(一瞬の)まばたきと、クリックのための意図的な(ある程度長い)まばたきを区別するための閾値となる。目のチャタリングに対するソフトウェア的な対策といえる。

使い方は簡単。PCにWebカメラをつないで起動すると、自動的に顔が検出される。上の画面でいくつかの項目を設定した後、ソフトの指示に従って頭を動かしたり目を瞑ったりすれば、すぐにマウスを操作できるようになる。

自作のキャプチャプログラム

Camera Mouse Suiteはフリーソフトだけどオープンソースではないので、まばたきしたときにクリック以外の何かをさせるように改造できない。そこで、マウスイベントをグローバルフックして、クリックされた場合にアクティブウィンドウをキャプチャ・保存するプログラムを作った。作った部分はこれだけ。

感想

Camera Mouseの使用感について。
使いやすくて高精度だった。比較としては、手を使わずにマウスポインタを動かすという目的に絞れば、ITU Gaze Trackerに比べてセットアップは遥かに楽だしマウスポインタも操作しやすい。

まばたきの検出は他のソフトを使ったことがないので比較できないけれど、充分実用的な精度だと思う。ただ、今回のどうでもいいケースでは連写と呼べるほど高速なまばたきは検出できなかった。まばたきでモールス信号を高速に発信するソフトも作りたいと思っていたのに。

二重振り子を聴く

二重振り子が弦をかき鳴らすという思い付き。

音階はマイナーペンタトニックスケールで、下の弦からC, E♭, F, G, B♭。
一段目の振り子の錘では、二段目の振り子の錘よりも1オクターブ下の音が鳴る。
少しふわふわさせたかったので重力加速度は弱めてある。

一段目の振り子の錘を掴んだまま振り回すと楽しくなるかも。