読者です 読者をやめる 読者になる 読者になる

M-1グランプリ2015 出場全3472組コンビ名 頻出単語

M-1グランプリのWebサイトでなんとなく出場コンビ名を眺めてたら、「ブルー○○」ってコンビ名が妙に多いのが気になりました。

f:id:inaniwa_3:20151129172015p:plain

3,500組近くエントリーしてるので、まあこんなこともあるかなと思いましたが、にしてもやっぱり多い気がします。 どうしても気になったので、全コンビ名について、単語の出現回数のランキングを出そうと思ってやってみました。

方法

1. 全コンビ名を取得する

公式WebサイトにJSONで置いてあったので、それをダウンロードして使いました。 なぜか3,437組分しかありませんでしたが(公式発表は3,472組)、あまり気にしないことにしました。
http://www.m-1gp.com/json/combi_nagashi.json

2. 適当なスクリプトを書く

コンビ名をMeCabで分割し、なんとか「単語」と呼べそうなものだけにフィルタリングして (名詞に限定したり、一文字のひらがな・カタカナなどは省いたりして)、 あとはその数を数えました。
スクリプトこちら です。

結果

回数 単語
105 リー
92 イン, ラン
90 ット
74 マン
58 ライ, リン
56 アン
51 バー, ブル
46 ブラ
44 ボー
43 パン
42 パー
40 キー
39 クラ
38 キン, ファ, モン
37 ロン
36 トラ, トリ
35 ちゃ
33 サン, レン
32 カン
29 タン, テン
27 マイ
26 スター, メン
25 フラ, レイ
24 ダン, ハイ
23 ボーイ, ラス, 子
22 ティー, ピー
21 ちゃん, ステ, マー, 人
20 シン, ジョ, セン, 中, 日
19 イズ, クロ, トリー, トン, ワン
18 ジャン, ジン, ハン, ランド
17 さん, サイ, トロ, ブルー, プリン, 天
16 エン, キング, ゴン, ダブル, 風
15 ザ・, スカ, ドリ, フル, ボン
14 いち, もん, アル, マル, 三, 山
13 an, ドロ, ドン, ハー, パイ, 団, 月, 木
12 カラ, ガン, ジャー, スーパー, ニュー, マリ, ヤン, ロック
11 かん, しん, らん, タイム, チャン, ブラザー, ベイ, ボール, ミン, ライン, 弟
10 てん, アップ, クラブ, クール, スリー, セブ, ブラン, ホー, ラフ, リス, レス, ロップ, 上, 二, 京, 兄弟, 村, 東, 男, 町, 金
9 とり, アフ, イブ, カレ, ガール, ゲン, シャン, シュー, セブン, ツイン, ブラザーズ, ボーイズ, ポップ, ラック, ロス, ロマン, ロング, 年, 東京, 神, 笑
8 IN, たい, オレンジ, コーン, サイド, セイ, ドラゴン, ドロップ, バリ, フライ, ベン, ルマン, 会, 国, 太, 感, 爆, 空, 飛, 魚
7 くま, しょ, たち, たま, なか, みつ, ゆう, らい, わん, アリ, イチ, エル, カントリー, ガチ, グリーン, ゴリ, ジョン, ベイビー, メガ, ラッシュ, ラップ, ランチ, リップ, リング, レート, 一, 六, 力, 吉, 家, 平, 手, 族, 松, 流, 目, 石, 色
6 Mr, えん, たか, たん, だい, つる, どん, ゅう, アンド, イエロー, グラン, ジョー, セカンド, セル, チキン, トイ, トム, ナス, ハウス, バカ, バタ, パンダ, パンチ, パーティ, フリー, プー, ポイント, マイル, モンキー, ラボ, 丸, 九, 井, 介, 光, 心, 戦, 星, 白, 組, 花, 雷, 飯, 魔
5 BAN, nd, あま, あん, くん, ぐり, げん, さくら, すず, ちょ, なん, むら, アウト, アミ, アンダー, イダー, オブ, オールド, ギャル, ケン, ゴールド, サム, シロ, スクール, スパイ, チョップ, チリ, トップ, トビ, トーン, ナイン, ナンバー, ハッピー, バース, パラダイス, パンプキン, パーティー, ビット, ビーズ, ピンク, ファー, フィー, フラワー, ヘッド, ヘル, ベース, ペンギン, ボックス, ポテト, ミス, ミック, ヤング, リトル, リバー, ルース, レディ, ロビン, ロマンス, 九州, 五, 十, 南, 味, 夏, 大阪, 学, 崎, 愛, 日本, 時, 根, 猫, 者, 茶, 谷, 高, 黄昏, 黒
4 DA, NO, あい, いそ, いも, おじ, おと, がん, きた, きん, くり, ぐら, しこ, ちん, つき, つね, とき, はな, ぼう, ぼん, もの, らく, わら, アンコ, イヌ, インター, ウェイ, オーバー, カラン, カレー, ガーデン, ガールズ, キス, キック, キャンディ, キラー, クン, グリン, ケイ, ジェット, ジャンプ, ジュー, スタンド, ストロベリー, ストーン, スマイル, ゼロ, タワー, ターボ, ダイナマイト, チョコ, チーズ, ツインズ, ティブ, テッド, デイズ, トロイ, ドライ, ドール, ハイボール, ハニー, ハラ, バク, バック, バラ, バンク, パニック, パパ, パーマ, ピンポン, ブラウン, ブラック, ブルース, プラス, プリンセス, ベア, ベロ, ホーム, ボス, ポリ, マカロン, ムーン, メロ, モス, モダン, モンズ, ヤマ, ヨシ, ライス, ライダー, ラスト, ラーメン, リズム, リンス, リード, レッド, ロード, 代, 円, 原, 友, 園, 夜, 少年, 恋, 所, 桜, 牛, 王, 男子, 番, 節, 豆, 軍, 酸, 銀, 隊, 電, 頭, 馬, 鬼

数が多いので、出現回数が3以下の単語は省略しています。

考察

「ブルー」は出現回数17回で、それ単体で意味がわかりそうな単語としては、けっこう上位に来たかなと思います。 ちなみにコンビ名をすべて挙げると、

サブルーチン、サラリーマンブルース、シースルーブルー、ピンクブルー、ブルーインパクト、ブルーギル、ブルージーン、ブルーストーン、ブルースマイル、ブルーセレブ、ブルーハニーズ、ブルー・ブルー、ブルーリバー、ブルーレディ、マローブルーピィ、ロンリーブルース

の計16組となりました(ブルー・ブルーは2回で数えています)。 ただ、「ブルース」も数えていたりするので、青の意味でのブルーはもう少し減ると思います。

その他考察

色ではブルーが多い

「ブルー」17回、「グリーン」7回、「イエロー」6回、「ピンク」5回、「ブラック」4回、「レッド」4回

地域では東京が多い

「東京」9回、「九州」5回、「大阪」5回、「日本」5回

男性コンビが多い?

「ボーイ」23回、「ガール」9回

「黄昏」が多い

「黄昏」ってそんなに頻出単語ではないと思うし、私は虹の黄昏くらいしか知らないのですが、5組いました。

まとめ

「ブルー」が多いなという直感は、まあまああってたかなと思います。

コンビ名といえば、昔から「ン」がつくコンビ名は売れるというのが有名だと思います (ダウンタウンウッチャンナンチャンとんねるずなど)。 M-1のWebサイトからはコンビごとのM-1の戦績も取れそうなので、 コンビ名と戦績に何か関連性を見出せたらおもしろいかなと思いました。

うんこを太くする

この前、雑誌を読んでいたら、おもしろい本が紹介されていました。

「悪趣味百科」という本です。

悪趣味百科

悪趣味百科

これは20年くらい前に出た翻訳本なんですが、アメリカ文化の悪趣味な面を解説するといった感じの内容です。

表紙からして悪趣味ですが、趣味が悪いのは表紙だけでなく、本文にもおよびます。

f:id:inaniwa_3:20131217110303j:plain 画像は http://snappylife.sblo.jp/article/82683938.html から引用

画像を見ていただければわかりますが、特定の3文字が太く印刷されています。

この本の装丁は祖父江慎さん(伝染るんです。を手がけた方です)だそうなんですが、曰く、ページが文字だけだと上品になってしまうので、下品にするためにやむなくこうしたとのこと。

また、当時は文字を太くするのにもお金がかかるので、苦労があった、とのことです。

ブックマークレット

現代は、コストゼロで文字を太くできる時代になりました(たぶん)。そこで、本ではないですが、代わりにWebサイトでそういうことができるものを作ってみました。

まず、以下のリンクをブックマークバーにドラッグ&ドロップして、ブックマークに登録します。

うんこ

ブックマークに登録できたら、あとは、うんこを太くしたいWebサイトを開いた状態で、ブックマークをクリックしたらOKです。

ちなみに、コードはこちらのようになっています。

javascript:(function(){document.body.innerHTML=document.body.innerHTML.replace(/([うんこ])/g,"<font size=+1><b>$1</b></font>")})()

使用例

例として、不名誉な通称で有名なスーパードライホール、の記事に、このブックマークレットを適用してみます。

f:id:inaniwa_3:20151107223028p:plain http://news.mynavi.jp/articles/2013/03/21/ab/ から引用

Webサイトを開いた状態で、画像左上のブックマークをクリックするとこのようになります。

f:id:inaniwa_3:20151107230943p:plain

感想

今回、いろんなWebサイトで試してみたんですが、「このWebサイトは、この3文字の出現頻度が高い傾向があるな」などといった知見が得られました。

もちろん、別の文字でもできるので、応用はいろいろあるんじゃないかと思います。

第8回ニコニコ学会β 参加記

ニコニコ学会βという学会で、前記事の偶然短歌botについて発表しました。それの記録です。


応募まで

2ヶ月ほど前、ツイッターで、ニコニコ学会での発表を推薦される。推薦者は前回の座長さん。推薦といっても応募が必要で、しかも審査で落ちる場合もあるとのこと。

転職活動で、オファーが来て受けたら落ちたみたいな話がよくあるが、それっぽいなと思った。が、いい経験と思って応募することにした。

発表準備

審査は無事に通り、3分間の発表の準備をすることになった。プレゼンの参考にしようと、TEDの動画を見たが、発表者の意識の高さに具合が悪くなってしまった。結局、気づいたらケーシー高峰の動画ばかり見ていた。

資料はGoogleスライドで作った。

前日まで

ニコニコ学会はニコニコ超会議のブースのひとつである。当日は他のブースも行ってみようと思って、超会議のウェブサイトを確認したところ、あまりのブースの多さに、見ていて具合が悪くなってしまった。これは回りきれない。

結局、見に行くブースを絞りきれず、当日を迎えた。

当日・会場到着まで

朝のリハーサルに参加するため、早くに家を出た。京葉線で、東京から海浜幕張に向かう。

そういえば、私用で幕張メッセに来るのは、10年位前にクラフトワークのライブを見に来たとき以来かもしれない。そう思いながら、舞浜で降りる客を見ていた。

当日・発表まで

リハーサルも終え、あとは夕方の発表まで自由時間である。とりあえずいろいろ見ようと、ホール内をぐるっと一回りした。

視覚・聴覚と情報の多い空間で、脳が情報を処理しきれなくなったんだと思う。私は具合が悪くなってしまった。

昼くらいには会場の外に出て(かっこよく言えばパーティーを抜け出し)、木陰のベンチでひとり休んでいた。仰ぎ見ると木漏れ日がとても綺麗で、それは、会場にいたどのコスプレイヤーよりも綺麗だな、と思ってしまった。

当日・発表

そして、発表を迎えた。

登壇してすぐに思ったのは、マイクが臭いな、ということだった。これはある程度仕方の無いことで、よく言えば今までの登壇者の重みとも言える。

私も3分間、マイクを臭くする行為をしていた。

当日・帰宅

相変わらず具合が悪かったので、お金で特急券を買って帰った。

車内から外を見たら、川で船の衝突事故があったみたいで、船の残骸が散らばっていた。これのインパクトが強くて、発表したことが、いきなり遠い昔になってしまった。


発表を終えて

この話があったとき、何をしゃべろうかなと思ったんですが、穂村弘さんに文學界のコラムで「inaniwa3氏の作品と見なすこともできるんじゃないか」と書いていただいたことを思い出し、それを念頭に置いた発表にしました。

発表資料はこちらです。

学会の方、ご覧になった方、 ありがとうございました。

形態素解析エンジンMeCabにて文章中から短歌を抽出

概要

偶然57577になっている文章を短歌としてつぶやく Twitterbot を作りました。

文章はウィキペディア日本語版を対象としました。

作り方

  1. jawiki-latest-pages-articles.xml.bz2 をダウンロード。
  2. WP2TXT で上記を扱いやすい形式に変換。
  3. このスクリプト で57577になっている文を抽出。数時間かけて(遅い)、1万くらい見つかる。ここまでローカルの作業。
  4. 上記で抽出したもの中から適当につぶやく。Heroku を使っている。

制作記

以前、誰か(たぶん nai さん)がツイートで偶然57577になっている文章を短歌として紹介していて、面白いなと思ったのがきっかけで作りました。

MeCab を使って文字数数えれば簡単にできるだろうと思っていたんですが、単純に57577で抽出しても短歌になっていないと思われるものが多くて、そこからが苦労しました。なので、抽出しては抽出ルールを見直して、抽出してはまた抽出ルールを見直して…、というのを繰り返す作業が主でした。この作業である程度ましなものが残るようになりましたが、まだイマイチなのも残ってしまっています。

地味に困ったのが、ウィキペディアには本当の短歌そのものも載っているので、それも引っかかってしまうことです。本物の短歌は除いたほうがよいと思うんですが、自動で弾くいい方法を思いつかず、残念ながら抽出済みのものから自分が気づいたものを手作業で除いています。

あと、Twitter でつぶやく頻度は、5・7・5・7・7時間おきにしました。

感想

抽出されたものを眺めると、たまに「おっ」となるのがあるので、まあまあ面白いのができたかなと思います。 現状 7,000 くらいあるので全部は見てないですが、以下のが気に入ってます。

ある道を右に曲がれば東大で、まっすぐ行けば公園なのね

これは マッスル北村 さんのウィキペディアからです。

今回これを作っていて思ったのが、抽出の仕方は個人の意向が入るところなので、別の方がやればまた違ったものが出てくると思います。対象となる文章も、ウィキペディア以外にもあります。なので、いろんな人が各々探し出した偶然の短歌を披露しあう歌会みたいなのがあれば面白いかな…と思いました。

おまけ

私が以前、百首歌の募集に投稿した短歌が載っています。
百首歌~IKKO編
百首歌~歌丸編

Haxe + OpenFL + mgl でゲームを作る

概要

Game Jam みたいなイベントに参加してみたいと思って、自分が一日くらいの短期間でゲームを作るのにちょうどいいライブラリみたいなものを探していました。

ブラウザで動くものがよかったので、Unity とか enchant.js とか Cocos2d-JS とか見てたんですが、最終的に mgl というライブラリにたどり着きました。理由はいろいろあるんですが(JavaScript が苦手とか)、サンプルが一番かっこよかったからです。

作ったもの

試しに作ってみたものです。作ってるうちになぜかゲームでも何でもなくなってしまったのですが、西暦と和暦の対応を表示するという優れものです。画像クリックで Web サイトに飛びます。要 Flash です。

ライブラリはそのまま使ってますが、一点だけ、Sound.hx で lastPlayTicks = 10; としてたところを 0 にしてます。

mgl よいところ

関数名の短縮形が用意されてて、それで書くと可読性最悪になるところです。 ABA Games さんは短縮形で書いてて、最初はさっぱり読めないんですが、慣れるとかっこよく見えてきます。

あと、画像と音のファイルを用意しなくていいところです。私はデザイナーでもコンポーザーでもありません。 なので、普通はリソースフォルダのようなところに、Web から拾ってきた無料素材を突っ込むことになると思うんですが、 だいたいその時点でクソゲーの予感がするので、ライブラリ側でかっこよくしてくれるのはとても助かります。

感想

これを書いている日に mgl の CoffeeScript 版が公開されました。 今回の Haxe 版は HTML5 としても出力できるんですが、たぶん音が対応していなそうだったので、今回は Flash にしました。CoffeeScript 版は HTML5 で音も出ているようなので、次は CoffeeScript 版を試してみたいです。

MySQLにサザエさんじゃんけん研究所のデータを突っ込む

概要

ネットサーフィンしていたらサザエさんじゃんけん研究所というのを知って、おもしろそうだったので、個人的な解析用に過去のじゃんけん結果を拝借して、とりあえずローカルのDBに入れました。

コード

# coding: UTF-8

import MySQLdb
import requests
import re
import datetime

d = MySQLdb.connect(host='localhost', user='foo', passwd='bar')
c = d.cursor()
c.execute('SET AUTOCOMMIT = 1')
c.execute('CREATE DATABASE IF NOT EXISTS sazae')
c.execute('USE sazae')
c.execute('CREATE TABLE IF NOT EXISTS rps ( '
              'id INT NOT NULL, '
              'on_air DATE NOT NULL, '
              'result TINYINT NOT NULL, '
              'PRIMARY KEY (id) '
          ') ENGINE = InnoDB')

for y in xrange(1991, 2015):
    s = requests.get('http://park11.wakwak.com/~hkn/data%s.htm' % y).content
    s = s.decode('shift_jis').encode('utf-8')
    for r in re.findall(r'第(\d+)回 (\d+)年(\d+)月(\d+)日.*? (.*)?\n', s):
        id = int(r[0])
        # 第253回が第233回になってるので直す
        if (233, 1996, 10, 13) == (id, int(r[1]), int(r[2]), int(r[3])):
            id = 253
        # 第416回が「チョキ(カツオ)」になってるので先頭2文字で判断する
        c.execute('INSERT INTO rps (id, on_air, result) VALUE (%s, %s, %s) '
                  'ON DUPLICATE KEY UPDATE on_air = VALUES(on_air), result = VALUES(result)',
                  (id, datetime.date(int(r[1]), int(r[2]), int(r[3])),
                   (u'グー', u'チョ', u'パー').index(r[4].decode('utf-8')[:2])))

まとめ

こんなテーブルができます。

mysql> SELECT * FROM rps LIMIT 5;
+----+------------+--------+
| id | on_air     | result |
+----+------------+--------+
|  1 | 1991-11-10 |      1 |
|  2 | 1991-11-17 |      0 |
|  3 | 1991-11-24 |      0 |
|  4 | 1991-12-01 |      2 |
|  5 | 1991-12-08 |      1 |
+----+------------+--------+
5 rows in set (0.00 sec)

グー(0)、チョキ(1)、パー(2)の回数は出せました。

mysql> SELECT result, COUNT(result) FROM rps GROUP BY result;
+--------+---------------+
| result | COUNT(result) |
+--------+---------------+
|      0 |           370 |
|      1 |           398 |
|      2 |           381 |
+--------+---------------+
3 rows in set (0.00 sec)

あとは何かおもしろそうな傾向がないか見てみたいです。

追記 (2014-08-17)

第1113回と第1114回のデータが取れていませんでしたので、取れるようにコードを修正しました。それに伴い、グーチョキパーの回数の結果の表も修正しました。

ネットワークエンジニアが特に読まなくてもよい本

はじめに

私は仕事柄、コンピュータネットワークについて知っておく必要があるので、 本を買って勉強することがあります。

そんな立場から、特に読まなくてもよいと思った本を紹介します。

ソーシャルでどうやって利益を上げるだとかそんな雑誌かと思ったら全然違って、 アムウェイがどうとかそんな内容です。

テクノロジー犯罪で遠隔技術ということで、トロイの木馬の被害報告みたいな本かと思ったら全然違って、 「私は電磁波で操作されている…」とか「集団ストーカーが…」といった報告集です。

このシリーズ好きなんですが(特に霊をおろすところ)、特に読まなくてよいと思います。