たまりば

  パソコン・インターネット パソコン・インターネット  三鷹市 三鷹市

日本語文中の文字出現頻度分析
2009年06月20日 23:38

ふと思い立ってやってみた。
まずは文字数をカウントするプログラムを作る。
適当に作ってたら「入力はUnicodeのリトルエンディアンのみ」「出力はUTF-8」というけったいなプログラムになったが別に問題はない。
 ※理由:
 ・入力がバイト数可変なコードだと扱いにくい。
 ・じゃあUnicodeだ。
 ・出力は文字コードと出現数だけにすればASCIIで十分。
 ・と思ったけどやっぱり文字の実体も欲しい。
 ・じゃあUnicodeだ。
 ・と思ったけどワイド文字の使い方が分からない。
 ・一文字置きに'\0'を書けばいいか。
 ・と思ったけど文字出力にfprintf("%d",~)使ってるから一文字置きとか無理だ。
 ・仕方ない、自力でUTF-8変換プログラム書くか。

こういうことやってると自分で書いた変換プログラムのところにバグが出るんだけどね。

さて次は文書データだ。これに何を使うかで分析の質が変わるから一番重要なところだ。
が、一般人がふと思い立って手に入れられるデータなんて限られてるのでそんなに気にしてもしょうがない。
Wikipediaとか適当にググったページとかも考えたが、ランダム抽出の方法が思いつかなかったのでボツ。結局青空文庫を使うことにした。
青空文庫は著作権切れなどの文学作品を集めているサイトである。よってここにあるのは少なくとも50年以上前に書かれた文書のみということになる。現代の文書とは頻度が違う可能性があるが気にしない。
作品データベースをExcelで処理し、新字新かな遣いのものから100作品をランダム抽出。ルビや文書入力者注などの作品本体でないものを削除したデータを調べた。
調査文字数は162万7170文字。統計とかはよく分からないが、まあ雰囲気的にわりと十分そう。これ以上増やすならその前に元データをもっと選ぶべきだと思う。

結果。

まずはひらがなから。
・10000回~
のいたてにとしなはるかをっでがうもられこまありそんすくだよ
・1000回~
きさおえけつどわちろやめせばへじずみねほごゃざげょひべむびぬふぎぐぶ
・100回~
ゆぞぼづぜぱゐぽゝゅぴ
・10回~
ぺゞぷぢぇ
・1回~
ぁぅゎゑ
・0回
ぃぉ
助詞やひらがなで書かれやすい形式動詞で使われそうな文字が上位に入っている。上位7文字で「としていたのに」と繋がったり。
濁点の付く字は基本的に少ないが「で」「が」「だ」と助詞系は上位。
下位はわりと納得だが、新字新かな遣いを選んだはずなのに「ゐ」が325回も出てくる。調べてみたら普通に旧かな遣いの文書が混じっていた。いい加減な。

つづいてカタカナ。
・1000回~
ンーッアリルトイス
・100回~
ラクカロキドチウシフマナタムオィジコブレャツパテハエヤヴバモデニプベサェダグソポガョボケペメミワセノヒピズネギュビゴホヶザァ
・10回~
ヨゲヌユォヘヵゼゾヲヽヂ
・1回~
ヅヰゥ
・0回
ヮヱヾ
上位の「ンーッ」は外来語表記に頻出だから当然。続きも外来語っぽい雰囲気。アリルトイスとか人名でいそう。
下位がなかなか面白い。考えてみると確かに外来語表記に使わないなという文字が集まっている。
「ヮ」「ヱ」「ヰ」や「ヂ」「ヅ」は最近の外来語表記には使わない。「ゥ」を使うのは普通は「トゥ」「ドゥ」だけ。「ゲ」「ヘ」「ネ」あたりは、英語にはエ段の音が少ない気がするからそのせいか。

漢字は第1第2水準を分けた。まず第1。々仝〃〇〆もここに混ぜた。
・1000回~ : 77文字
人一見出来三思時事言私日自女分上生中大子行気手二間方何郎者四前彼本立下々知心物学十小家今国目年無先聞云当的論口合同屋実所持顔入田不話意明地通様後度会向主男

・100回~ : 805文字
少山身外五然感君代取文場野御道名世面考門派書新声美白動理政足風相夜内体笑高次近切歩帰金民力長味月信色右眼頭死僕引着水用作部返親全七与多別真我戸平達食現好込落発木情天八神対衛違助悪得父六置以起説活最葉変教久義仕東音居町馬第正戦若由問古覚原半命急空直有西流母九師社石法士想車左飛語性遠要数早太姿待連安常広過娘苦造火進朝氏海雪台吉張光結黒形強読化突関宮川千校京細花頃友殺等残伝土那公角他末利打深村売供議紙重界誰青病夫婦草乗初定記如百寝寄申表権周愛解種支工調受機室開存弁必買岡業洋官元附玉決首反呼番酒成横楽掛暗赤点万恐軍運背老共晩在松禰江失始島振争例念井答際宿治題満座件守可影帝北両果経敷兵葵異去望働役銀驚根余離窓店使終続程渡労絶特住抜服黙位芸之胸庭筆難品画怪飲側非勢字寺和廻交片階都路縁加談忘妙焼消折付指処静奴歌集房鳴判悲茶能源船息押降往科夢幸配期至逃薄保奥計僧武識放追極状熱走越血段腰類電遊煙絵係止吹精格観送態鼻浮己谷又円警犯句耳其留陵疑端夏確似制里隠困快究済為夕春単予頼裏員貴産燈南鉄並毎軽察参質或断求骨史肉限差米故組旅冷泣城注辺商微客興途礼博坊昔破腹容良従幾熊視敵研刻囲改罪秋線暮散勝怖講雑図底院乾告津独認巻素建術池倒投府肩清舞丁街許叫願節李応鳥髪席市抱毛伊雲退団衆像報景隣医坂腕福蔵乱案雨仰州帯卓任藤富羽奇枝跡探湯負露諸林回吾構習迷床皆休比描眺料衣橋具緒選転王借象騒低壁漢未器穴志職枚曲毒板族寒給徳鹿値痛丸此約嫌証写党逢響遣竹育於束式将移革級侍殿候尋戻喜験個弱密害屈更駄波介蛇寸農評昨昼皮払圧額魚歳筋刑激護崎捨亡貰述条眠矢傍〇狂午称恋技布庵荒妻仏翌惑兄査承装套柄闇撃再徒陸局尽貸竜傾軒試捕貧温挙勤舎宗訳歴因危及荘務拠固盾酔善弟境趣威割儀鏡仙帳盟岸劇互砂捜珍這尾易各専致堂慮価貝匠沈飯秘包亮依永懐資接泉豆普暴廊皇織仲冬遺河吸示踏忍魔霊唄積輩扉備油演群敬甲佐訴只伏便芝短提妹慢虚坐沢刀箱殆郷駆斎詩森帽勿宇邪銭速優

・10回~ : 1316文字
黄汽功推舌納奉幕裂館魂丈触陰完旧迫蘭英看紅香巡障設虫添怒筈陽繰歯責泥灯敗畑爺養領列執充照臣訊婆畳勇涙哀偉印憶虎暫刺脱届封忠登俳欲晴浅尊著愚険梅薬鋭駕襲甚愉練椅狭婚才順盛洗袖隊恥膝頬弥園詰迎蘇層疲鬼玄溝就浜棒慣胡召須膳憎邸勉挨欠拶唱植総増滅唯雄揚懸児瞬飾到被復辞獣俗頂努鉢希逆糸袋覗堪剣札釈鶴墓浴干号殊修舟否訪械亀乞章祖噂換遇隅犬惨寂哲匹幽映射尺惜染旦締濃泊癖延甘救柱聴展輪荷拡窮厳悟授除据統握駒憲祭鮮乏覧烈営欧暇輝型斬姉拝略栄琴暑製釣闘杯般卑了麗謂恵費揺咲純傷鼠叩抵嘘菊球牛拾縮準亭模茂令浪駅騎蝶停適砲鎌岩財樹拭星創即潮標閉宝率堅抗算衝揃避埋抑裸偶検幻厚策屍斯誌臭叔伸益較嬉靴絹司旨宅遅縄符豊蔭減枯詞渉奪網机誤唇辛震蒼導馴霧柳踊維課瓦喰巧遂遷智燃伯奮涼漁襟紫省占卒築厭涯紀区随賃討批呆華棄偽掌則姫躍幼緑慰悔含湖裁珠冗嬢針凄倉馳喋吐眉枕蒙量呂俺骸垣滑恨沙請透寧漠麦忙恩仮蚊壊隔祈顧鼓獄混阪寿是宣庁繁凡嘉賀蒲勘歓基駈鶏効菜呪収姓盗排縛防免湧曜狼逸既脚競控熟泰胆尼乳没磨綿憂律却巨掘桜属丹辻拍誘淋岳恰勧幹規距賢尻刃垂瀬槍担藩齢炉汚弓凝隙澄整伴撫崩縫盲慾桐稽喉彩載材賛叱硝陣疎掻棚暖匂肌溜蓋簡焦粋脳倍堀椋嫁招賞審裾損騨偵悩粒劣録管丘潔克序侵醒壮孫嘆歎弾檀爪髭穏灰笠監犠協僅牲扇詮漸双替徴肥憤預扱宜誇呉忽冊洲週聖掃淡唐桃某翻盆裡喧斜狩妾潜臓纏麻猛攻豪柔杖譲衰雀測呑沿虐兼狐鎖謝署沼辱汰痴筒漂噴陛裕憐弄亜阿旗皿施尚掴覇菩稲貫窟催薩促濁彫徹粉臨牢咽閑緊健刷葬紋吏蓮脅禁孝拘煮睡痩椎塗頓剥爆氷腐幅紛羊怨箇戒閣潟汗戯孤秀醜裳謎塀妨貌噛況侯塞伺渋戴壇梯典盤敏謀隷脇患忌巾掲捲災銃殖塵誠尖霜鷹猫瓶墨委浦洩炎塩臆稼蟹且敢雁怯継遮紹蒸穿鍋帆魅悠猟蝋渦猿獲緩肝栗薫酷飼祝杉粗巣遭鈍濡版煩紐蔑補虜釜季索仔縞徐燭績拙畜胴峠蔽篇慕剖尤猶誉嵐嘩刊陥顕康港肯嫉疾縦征斥賊賑編遍冒悶絡宛溢塊欺蕎渓錯傘宵戚堤萄銅罵鳩葡偏捧欄梁瞭藁湾窺貨茅還暁壕詳奏辿塚吊諦滴兎董廃飽妖励慨概柿顎企揮訓系袴碁惚紺肴儒潤蕉紳斉籍怠稚逐芭覆淵穂蜜羅履掠累麓尉域乙俄崖環献耕搾悉朱昭肖棲蹟操堕跳摘童曇萩複弊牧摩孟謡雷僚鈴漏悦蝦雅鎧殻隈郡庫孔采浄仁爽帖笛撞狽泡漫援艶央翁沖牡株寛稀喫吟詣戟券昂慈而蹴頗摺狙槽耐炭耽塔棟罰矛銘儲窯唖烏桶菓咳慶繋股慌項懇砕酌汁迅曾猪挑超凍鐙遁汝侮鞭褒撲奔愈鱗暦朗泳苛嚇喝冠艦傑拳鍵稿痕採讃脂湿惹讐昇贈潰箸膚昧迄曳卸臥鑑頑仇喬瑚綱珊粧診礎辰秩呈廷巴糞併脈餅凌櫓夷畏磯蛙喚飢恭径鯉撒爾症浸誓旋羨挿抽顛盃伐閥範頻焚翼璃淫架霞棺玩伎均錦鯨垢挫宰擦肢升炊唾択狸註貞洞督篤溌斐肘雰胞輿溶歪迂宴殴郭渇鞄韓享兇沓郊崇閃繕滞苔但樽宙鎮妬瞳奈弐倣萌邦貿厄遥濫魯鮎鉛甥禍牙芥挟肱些匙鐘慎托託鍛駐貯漬釘貼糖披廟秒赴吻圃吠倫煉禄萎億寡叶兜鴨汲拒卿啓慧弘絞鉱濠叉撮酸繍叙髄諾蓄綴庖釦緬癒硫瑠碗餌閲芽恢劃赫擬狗躯櫛携県巷鋼鮫爵俊昌晶煎煽喪聡捉湛槌坪賭豚緋副鮒蜂朴妄耶淀卵糧楼杏芋餓樺憾岐謹窪粂鍬雇貢剛冴削柵蒔紗愁粛梢祥詔剰錠措拓鱈弛酎腸陳斗祷匿莫庇彦扶沸幣峯郵庸藍龍簾焔襖伽晦刈渠桑桟獅賜嘗奨噌妥濯捻嚢把畔磐頁瞥亦婿冥輸融擁郁苑該廓括葛峡袈謙洪航裟朔餐漆赦腫酬塾哨薪税析蝉繊漕綜藻衷屠酉媒柏駁班蛮碧朋零

・1回~ : 580文字
姐詠凹缶巌贋掬灸虞茎娯昏砦捌駿旬償庄醤丞諏錐摂叢惰滝蜘鋳弔勅椿溺陶騰寅乃曝罷瀕賦鋒勃療塁廉聯枠飴鴎核穫鰹竿欣屑訣姑檎硬轟穀詐鷺屡灼曙鋤娼脊鯛箪寵懲蕩播斑畢錨峰芳鳳膜蔓姪梨隆燐鷲詫按鞍胤榎姦吃凶匡菌倶跨鴻拷麹笹纂蚕雫柴峻捷雛畝曽兆暢剃挺汀撤禿鳶楠軟虹隼叛汎逼謬瓢葺扮甫募箕蓑楊琉侶葦綾粟壱鰻叡液燕佳蛾梶苅棋橘糾侠契桁倦圏絃糊梧勾梗衡剤鮭燦嗣需囚蒐渚鞘腎菅践禅逮訂鄭乍灘葱肺煤幡蛤挽樋疋豹譜膨鉾睦抹鵡傭沃遼椀茜胃韻卯鵜掩旺粥柑徽妓饗寓轡牽鹸舷乎伍酵哉雌軸杓樵醸秦隻窃楚阻惣遜陀堆茸凧誕蹄轍憧琶牌畠搬琵菱斧鋪紡哩諒漣鰐斡袷緯厩瓜嬰峨魁樫莞蟻朽憩諺菰倖后晃杭膏劫債犀戎循庶彰訟鉦嘱逗栖逝脆薦宋胎腿綻窒脹佃艇堵宕屯沌妊舶醗噺蕃泌碑苗鋲賓肪麿巳耗也冶宥螺洛厘嶺玲肋欝茄凱碍鈎翫軌祇桔斤欽禽桂蛍弦糠購昆唆窄錆晒磁偲蕊殉錘栓租竪筑銚蔦紬鼎填澱杜砥淘涜凸敦楢尿粘蚤杷粕函氾販頒枇俵票鰭墳丙舗戊俸槙俣沫麺諭揖涌祐邑莱〆茨姥堰褐轄癌毅彊矯玖畦荊宏嵯堺孜滋痔篠勺淑舜薯菖蝕娠榛芯笥帥翠瑞趨曹燥舵蛸捗墜鍔逓迭鍍苫培賠陪塙稗蒜蕪楓弗箆輔烹蓬幌鮪桝岬湊牝摸酪痢麟怜錬亙亘〃渥旭鯵梓虻絢惟亥鰯丑碓臼閏奄荻迦劾栢澗翰誼鞠砧杵黍禦芹串勲頚硯弧鈷佼庚紘腔鵠栽咋鯖祉諮汐錫什夙楯淳遵醇藷恕礁蒋鍾擾穣晋疹酢嵩枢碩撰箭腺遡鎗啄巽坦諜栂柘嬬塘悼謄栃凪捺廿韮撚蝿秤箔肇筏誹簸弼埠僻簿鵬卜繭稔杢籾薮柚耀寮稜聾賄

・0回 : 192文字
仝娃姶穐芦允姻吋蔚荏瑛盈穎頴疫謁薗鴛鴬珂禾拐浬馨蛎撹橿鰍椛竃萱侃桓款潅諌舘畿笈鋸亨僑尭粁衿矩釧卦祁圭珪罫倹醐坑恒浩砿閤漉甑狛坤墾梱艮瑳榊埼碕皐璽鴫竺宍蔀綬輯酋竣准廠抄樟湘壌埴壬靭厨椙栴舛賎銑糎塑岨疏匝糟詑柁楕岱黛醍瀧琢鐸蛋嫡樗瀦苧凋牒朕鎚槻壷悌碇禎擢鏑甜菟砺嶋搭梼涛痘鴇橡椴瀞噸惇薙畷迩祢廼埜膿楳矧硲櫨釆匪妃毘柊桧媛彪蛭彬斌冨芙阜蕗娩穆柾鱒侭粍牟棉匁靖鑓佑猷熔蓉葎劉琳伶苓賂婁榔篭倭蕨

んー…、特に言うこともなし。

続いて第2水準漢字。
・100回~ : 1文字


・10回~ : 149文字
趙于絲綺匈睨鬱嘲壺蟇躇躊藪烟椽樅呟屏慄磔咎媼拵濤訛拗鴉俯髯頸洒羆瞼翳茫袂凭嗅顫饅饒抛炬頷佇唸夥愕燵絆囁埃塹徊憚毫皺腑儘伜攫癪臍豈遙做呻曠爛箒蝠蝙貪賽逞闊啼擡檻聳肚譬轢鞋騙刎刹啖埒濛煖癇眩薔薇鋺靄竟呵咄嗟囃嵌攀敲斃暈曰浚煥痺肭膃襦諧跪鋏陋霍鯔倚匕啜嗄囀奸寐屹已徘悄憑憫懼揉揶揄攘狡猥眸碌祟縋訝贅赧軋鬢

・1回~ : 1055文字
傲几埓壻奢幟彷掉柩盥祓笊籃糺絨緻脣腋藉蛆誂賤銜頤颯鬚黴俎倅婢嬌帷彙慷慥懊懣抒朧朶橇稍窶粽罠羞蛛袢襷覘誦辟遑濶雉雹顰靡倆吝哭圓毀寞屓徨恃慳挾搏杳曖柢檜梃沁灌燻猾琅盞窖飜蘆贔踵躾鉈闥飄馭髷魑偃偸剌噤噪囮弩彳忿怙恣憺戌截捏掖攣栲橙浙渾漾澹疵痙睫瞑穢絣縺繞羹翔芒茲莟蠣蟋蟀褪誣諷谿赭踞辣辷魄魏鯱鸚佗剽吼喘嬶孕峙嶮惧悸慇慟憔憊懃戈戮扁扼抓拉搦撼擅擘擠枉榴樒歇衍涎淪滔滲漱猜獰瓏盧睥磊篁篝籐綽縊縹罕聊脛腥蔗薨蚓蚯蠢褄襞詛貂蹲輜迸鉤靠鞏駭亢仄仆俤兮刳呶咤嗚嘔嘯嚥囂嗇壜佞媾寥尨嶽廂怺悴憮搗摯撓擂敖枳梳梟棕榜櫚欅毯漿漲濘瀾烱燗玻瑙瑣瑪疣疳疼瘠眄瞞礫窘竭箋簀簇綸繻纔肆臂舁舐葭蜚蝮蠅蟠蟒褸襤詭誡譚跋逍邁鍮鑵闖餞饉驕鵞鶉麩龕凜佩俟俥偕僥刪咬哄嗜嚆嚀嚔址墻妁婉娶媚嫖寇尠屁巫帚并廬彎恍恬愍罹扨抉掟插摧撥擒擲晤晰杆杞桀椰槓麾氈沐洟滄滸熨牀犇狎甕痒瘤皙皰瞠瞰矜礦磧礙穹竦笞筍筵籬鬻辮纒罎羚耄耻聘臀臙艘艱蓙薑薊雖蠡蠱訥諛讒賺贏跫跣蹂蹙踪躅躑躙逅邂遽醋鏖鑷鑿閨閼閾隧隴飩饂駘騅魎鱚黎鼬鼾丐佯冀凛凰剪匍厖厠叮叭呀吭哥喀喊喩喇嘴圜堊塒墟夭奕奚奩宦峭崋崗巒帛幇彝弋彗彿怡恠恟悍悚悧忰惻慊愬愴慙慚懈懺戞拇掣掏捫攪擱擯斫旃旁旄朦枷框桎梏棹楫槐榻橄櫃欖欹殷殼汪沽泛涕涸湮湃溯澎瀝炙焉煌燧燿爰猩珀琥瑕甍畸疚痰癲眇眦眷瞋矣矮磽祀祠稈窩竈笏篩簷緘緞繃縷繙繹罩羈羯翹耆聚聰胚隋腮膂膠膺艫芍苜莢茣莨菫蒟蒻蓆蓿虱蛟衒袿袱裘裙褓襁襴訃詬誅誨諄謳譫貉貶賁踰蹈蹠軈輻輾迹遯鄙酊酩醵閂閭閻閹闢霄霹靂靨勒鞅鞆韜顆颱颶饑饌駝驀髏髑鬘鬨魍魴鮟鮹鯒鰥鰤鱇鴿麭丼仭侈侘佻侑俘倨倥偬傚儂儕儚儼儻兀兢冤冰凉凾剋剱劈勁匣卉簒叟曼呷咒哇咫啣喙啾喞嘶噫囑國坎坡墺奘奧姜娑婪嫋媽嬲孀尹岑崕崑崔崙嶼巍巓幄幀幔弑徙忝悳怛怕怏恚恪恫恙悖悒悽悵惘愆惶惱愾愧慂慫慓憖懦懶戍戛抃拈拊拮拱捐捩揆揣摶撈撻擣擽斟旌晏晁暉曚曩枡梔條梵楔楡槃榧槲樊樸檐檠檄蘗欒欸欷歉歔歿殞殪毟毬沛汨泄沮沾泪洳洌浣涅淆淤渭渺湎渝游溂溷滓漑濺瀑濾灑炯炸烙煬熄熾燬燼爼犁犒狒猖猴獗獪珈琲瑟璞璧甃疝痍痣痾瘧瘢癸皎皓盂盪睚睾瞶瞿瞻砌砒礑竊站笳笨笄篆篷簪籟粲粱糒糶紊絽緇綯緲緡縅縡縟縢繿罌罐羇羶羸翅翕翡聟胥胯脾膩臈與舳艸艾芬苟范荼菽萃萇萠葷蔡蕈蕭蕾薹藺蚣蛉蜈蜀蜑蜊蜿蜻蝟蝸蝗螻衾袞袍袤裃裄裨褌襄襯覊覡覩覦覬訌詈誥諂諚諫諳謔諢謗謨譴讚豁豌豎豺贄齎賍趁趾趺跏跌跛跼踝蹉蹕躁躄躬軻輛輌輦逡邀邯邱郤扈鄲酣酥釐鉞銹銷錚鍼鏃鏝鏤鐶闌闡陟隘隕霑霏霙霰靆靉鞜韋頌顱顳餉餡饐馗馥駱騁驍驟驤驩骼髓髣髴髱鬣魘鮓鮑鮨鯊鯰鰌鰈鳰鴃鶯鴒鵝鵲鶚鶻鶺黜黝黥黯鼈齣齟齦齧齬齪齷堯

・0回 : 2185文字
(略)
まず分かるのが、第1水準漢字より明らかに少ない。一応第1第2は頻度を元に分けられてるはずなので当然っちゃ当然なのだが、こう綺麗に出ると気持ちがいい。
不思議なことに第2水準中「籠」だけが異様に多い。1位の籠が231回で、2位以下は77, 65, 62…といった具合だ。
当日追記 : 理由が分かった。JISはカゴは「篭」の方で第1水準に入れているのだ。50年以上前なのでこちらの略字は普及していなかったが、使用頻度としては第1水準になってしかるべき頻度で使われているのだろう。実際「篭」の方は第1水準にもかかわらず出現0回である。

記号なども入れた全体の順位も見てみよう。

10000回~ : 33文字
の、いたてにとしな。はるかをっでがうもられこまあ(改行)りそんすくだ(全角SP)
1000回~ : 124文字
きさおえけつ「」人どわ一ちろやめせ見ばへ出…じずみ来―三思時事言ね私日自女分上生中大子行気手二ほごゃ間方何郎者ン四前ざ彼げょ本ー立ひ下べ々知心物学む十小び家今国ぬ目年無先聞ッ云ふ当的論ぎ口アぐ合同屋リぶ実所ル持顔入田不話意明地通ト様イ後度会向主ス男
100回~ : 895文字
少山身外ゆ五然感君代取文場野御道名世ラ面考門派書新声美白動理政足風相夜ぞ内体笑高次近切歩帰金ク民力長カ味月信色右眼頭死僕引着水用作部返親全七与多別ぼロ真我!戸平達・食現づ好込落発木情キ天八神対衛ド違助チ悪得父六ぜ置ウ以起()説活シ最葉?変教久義仕東音居町馬第正戦若由問古覚原半命急空直有西流母九ぱフ師社石マ法士想車左飛語性遠要数早太姿待連安常広過娘苦造火進朝氏海雪台吉張ナ光結黒タ形強読化突関宮川千校京細花ムオ頃ィ友殺等残ジ伝土那公角他末利打深村売供議紙重界誰青病夫婦草乗初定記如百寝寄申表権周愛解種支工調コ受機室開存弁必買岡業洋官元附玉決首反呼番酒成横楽掛ゐ暗赤点万恐軍運背老共晩 在松禰ブ江失レ始島ャ振ツ争例念井答際宿パ治題満テハ座エ件守可影帝北両果経敷兵葵異去望働役銀驚根余離窓店使ヤ終続程渡労絶特住抜服黙位芸之胸庭筆ヴ難品画バ怪飲側非勢字寺和廻交片階都路縁加談忘妙焼消折付指処静奴歌集房鳴判悲茶能源船息押降往科夢モ幸配期至逃薄保デ奥計僧武籠識放ニ追極状熱走プ越血段腰類ベ電遊煙絵係止吹精格観送態鼻浮己谷又円警犯サ句耳其ェ留陵ダ疑端夏確似制里隠困快究済為夕春単予グ頼裏員貴産燈南ソ鉄並毎軽察参質或断求骨史肉限差米※故組旅冷ポガ泣城注辺商微客興途礼博坊昔破腹容良ぽ従幾熊視敵研刻ョ囲改罪秋線暮eゝ散勝怖講雑図底ボ院乾告津独認巻素ケ建術池倒投府肩清舞丁街許叫願節李ペ応鳥髪席市抱毛メ伊雲退団衆像報ミ景隣医坂腕ワ福蔵乱案雨仰州帯卓任セノ藤富羽奇枝跡探湯負露ヒ諸林回吾構習迷床ピ皆休比描眺料衣橋具緒選転王借象騒低壁ズ漢未ネ器穴志職枚ゅ曲毒板族寒給徳鹿値痛丸此約嫌証ギ写党逢響遣竹育於束式将移革級侍殿候尋戻喜験個弱密害屈更駄波a介蛇寸農評『』昨昼皮払ュ圧額魚歳筋刑激護崎捨亡貰述条眠矢ビ傍〇狂午称恋技布庵ゴ荒妻仏翌惑兄査承装套柄〉闇撃再徒陸〈局尽貸竜傾軒試捕ホ貧ヶ温挙勤舎宗訳歴因危及荘務ぴ拠固盾酔善弟境趣威割儀鏡仙帳盟岸劇互砂捜珍這尾易各専致堂慮t価貝匠沈飯秘包亮依永懐資接泉豆普暴廊皇織仲冬遺河吸示踏忍魔霊唄積輩扉備油ザ演群敬甲佐訴只伏便n芝短提妹慢ァ虚坐沢刀箱殆i郷駆斎詩森帽勿宇邪銭速優
100回未満略。
上位がひらがな独占、漢字もわりとすぐ後を続いて、カタカナは案外少ない印象。

最後にグラフにまとめてみよう。
文字頻度グラフ
横軸はJIS区点コード、縦軸は対数軸で出現数。
色分けは、
1 : 黒
2-10 : 青
11-100 : 水
101-1000 : 緑
1001-10000 : 黄
100001- : 赤
となっている。灰色は文字の存在しないコード。
左の方の赤いのがひらがなゾーン、その右の緑がカタカナゾーン、中央の緑-水色なのがが第1水準漢字で、右の青-黒が第2水準漢字だ。
色分けをしたことで見た目が映えるようになった。やっぱり色って偉大だね。
なお、この画像はExcelとペイントとバイナリエディタとコマンドプロンプトとGIMPで作った。解説しようかと思ったが長くなったので今度。そう言ってそのまま忘れる可能性大。

詳細なデータはtab区切りテキストで置いておきます。→charUsage.txt
あと、今回作ったプログラムも何かの間違いで欲しがる人がいるといけないのでソース込みで一応。→charCount.zip
使い方 : テキストファイルをドラッグアンドドロップする。テキストと同じ場所に「out.txt」ができる。  
タグ :文字

  • ハングル翻字
    2009年06月16日 20:23

    ハングル翻字機を作った。
    世界諸言語翻字機と一つにまとめる予定だったが、複雑になったので単体で公開する。

    ハングルは同じ文字でも前後の文字との兼ね合いで音が変わるが、なるべく再現するよう試みた。
    現在のところ、有声音化は実装してある。また同じ仕組みで対処できるl+r→l+lも実装した。
    それ以上の変化は未実装である。例えばk+n→ŋ+nの変化には対応しておらずk+n→g+nとなってしまう。
    終声に初声と同じ文字を使っているが、これも正しくない。例えば있다はIssTaとなるが、ItTaとなるべきである。
    この辺りはそのうち気が向いたら修正する予定である。
    また、二重パッチムの扱いは難しいので対処できる気がしない。


    この翻字機で使っている英字表記についてだが、韓国語の英字表記にはマッキューン・ライシャワー式(以下MR)と文化観光部2000年式(以下2000)という2つの方法が広く用いられている。(余談だがどちらも名前がカッコよくて好きである。)
    いろいろ考えた結果、MR式っぽい独自表記を使うことにした。
    2000式は韓国で標準的な翻字法である。欧米で英字表記するときも大抵こちらだし、日本でも目にするのは大抵これだ。
    なぜこちらを使わないかというと、これが非常に読みにくいのだ。
    例えばeuと書いて「ウ」と読み(uとは違う発音)、eoと書いて「オ」と読む(oとは違う発音)。
    また子音も語頭の有声音と無声音を区別しないためプサンがBusanだったりする。
    一方、マッキューンライシャワー式は読みやすい。
    MR式では「」は「ŭ」、「」はŏと書く。「ŭ」と書いてあればこれが「ウ」っぽい音でuとは別の字であることが一目で分かる。
    語頭の有声音と無声音も区別され、プサンはPusanである。
    これであれば韓国語を知らない人でも大体の読みが分かる。

    MR式からの変更点だが、MR式は2000式ほどではないが1音複数文字の表記があり、これが多少分かりづらいことになっている。これを改めた。
    「ae」や「oe」は一音である。一方「a」「o」の次に「e」が来た場合これと区別がつかないので、「aë」「oë」と書く。
    同じものを表すのに別の文字を使うのは紛らわしいので、これを防ぐために、aeはæ、oeはøと書くことにした。これによりeとëの区別が必要なくなり、常にeと書けるようになった。
    同様に[ŋ]をngと書くとnの次にgが来たものと紛らわしいので「ŋ」と書くことにする。

    さらに、文字の切れ目を分かりやすいようにハングル一文字ごとに対応する頭文字を大文字にする。
    例 : AnNyŏŋHaSeYo?
    これによって実は上で書いたaëやngの問題も解決してしまうのだが、せっかく考えたのでそのままにする。
    個人的にはその方が読みやすいと思うので。
    aeって書いてあると2音なのかと勘違いするかもしれないけどæって書いておけばその心配はない。
    ただ、なにも知らない人がæを「エ」と読めるかというとちょっと微妙かもしれない。
    æの代わりに「エ」と読みやすい「ɛ」を使う案も考えたのだが、環境によって汚い字になるのと、MR式から離れすぎるのも問題だと思いやめておいた。  

  • 7セグメントカタカナフォント
    2009年06月12日 18:24

    7セグメントで数字が表示できるのは当たり前。
    英字もちょっと無理すれば表示できる。
    7セグメント英字
    そこでカタカナに挑んでみた。
    最初は多分無理だろうと思って始めたのだが、やってみると曲がりなりにもできてしまった。
    覚えなければ読めないような字も多いが、それなりに実用になると思う。
    7セグメントカタカナ
    区別のつかない字は、まず定番のン・ソ・リと加えてシ。これは2つ案があった。
    ンシソリ
    上の案はシが変な形になる代わりにソとリを間違えにくい。下はシが比較的ましだがソとリの区別が付きにくい。結局上にしたが、どっちもどっちだと思う。
    あと、真ん中に棒がある字はどちらかに寄せることになるのだがこれがなかなか難しい。例えばキ。
    下の4つが考えられるが、
    ヲヒチキ
    まず左2つはヲとヒに決定。3つ目はチに取られ、結局4つ目1択であった。
    他に苦労したのはネ・ヌ・ス・オ、マ・ア、メ、ヘなど。
    小文字は一応作ってみたものの非常に読みづらく実用性は疑問。

    なお、数字とかぶらないようにすることも考えたが、7とク・フ、3とヨあたりで断念した。
    数字の方の形も変えれば不可能ではない。例えばこんな感じに。(小文字ヮは無視)
    カナと数字

    文字表示機も作ってみた。  

  • ポケモンハート・ソウルは赤外線ポート付き?
    2009年06月08日 01:49

    ポケットモンスターハートゴールド・ソウルシルバーにはポケウォーカーという名の万歩計が同梱されるらしい。

    この機械、DS側からポケモンを預けることが可能だそうだ。
    すると気になるのが通信方法だ。
    ポケモン本編と通信というと真っ先に思い浮かぶのがポケットピカチュウだが、当時(金銀時代)はゲームボーイカラー本体に赤外線ポートが付いていた。
    一方、DSには無線通信機が付いているだけだ。通信ケーブル端子すらない。
    赤外線通信のポートは要するにLEDと光センサが1個づつ入っているだけなのでコストは微々たるものだが、無線通信機はそうはいかない。
    ゲームのおまけに同梱するような低価格な機器にDSと通信可能な無線通信機を内蔵するとはちょっと考えづらい。
    他の方法としては、ダブルスロットはDSiで廃止されたため積極的に使いはしないだろう。
    イヤホン/マイク端子で通信するという方法が不可能ではないものの、信頼性の面やそんな変な通信システムを開発するコストを考えるとまあありえないだろう。

    そういえばDSと通信する万歩計といえば「生活リズム計」があったな。まああれは単体で売り出すくらいだからコストかけて無線通信機積めるんだろうな…

    …と、思ったら。

    違うんですね、あれ。
    DS公式サイトの「社長が聞く」のコーナーを見たら、なんと赤外線通信を使ってるんだそうで。つまりDSのソフトに赤外線ポートが仕込まれているのだ。
    じゃあポケモンの通信もまず間違いなくこれだな。

    しかしこれはちょっと驚いた。まさかあの小さなカートリッジに何かを埋め込めるとは。
    ゲームソフト側に何かを仕込むのはROMカートリッジ系ゲームソフトの伝統ではあるが、大きさからしてGBAで最後だと思っていた。

    だって赤外線ポートってこんなんですよ。
    GBカラーの赤外線ポート
    ポケモンカードGBの赤外線ポート
    こんなのをDSカードに入れようとは普通思わないでしょう。

    まあでもLEDも表面実装のは結構小さいから…、
    表面実装LED
    やろうと思えばできるんだなあ。  

  • 日月火水火金日
    2009年06月08日 00:46

    曜日をアルファベット1字に略すのが嫌いだ。
    「S M T W T F S」となり、火曜日と木曜日、日曜日と土曜日の区別がつかない。
    このブログの左上にある奴も当然嫌いなのだが、残念なことにその部分のデザインはいじれない。
    ('10.7/17追記 : 当時左上にSMTWTFS表記のカレンダーがあった。必要を感じなくなったため消した。)

    「S M T W Th F Sa」や「Su M Tu W Th F Sa」といった亜種もあるが、文字数が違って不格好だ。

    3文字の「Sun Mon Tue Wed Thu Fri Sat」はなかなか良いのだが、一つ大きな欠点がある。
    「Thu」だけ見ると「テューズデイ」に見えてしまうのだ。
    他の6つが音節的にわりと切りのいいところで切れているのに、Thursdayだけが母音の「ur」が分断されているのが問題だと思う。
    なのでThursdayは「Thr」と略すべきだと思う。これなら「テューズデイ」に見間違える心配がない。「Thur」でもいいがやはり一つだけ文字数が違うのは不格好だと思う。
    Þの字が残っていれば「Þur」と書けてこんな面倒なことにならなくて済むのに…。

    2文字の「Su Mo Tu We Th Fr Sa」は、読み間違いはしないのだが、3文字に比べてちょっと読むのに時間がかかる。
    昔の人が曜日の名前を決めるときに頭文字を全部違えてくれればこんなことにならずに済んだのに…。

    他の言語ではどうだろう。
    ・日本語
    にち, げつ, か, すい, もく, きん, ど
    頭文字かぶり無し。
    ローマ字なら、
    Nichi, Getsu, Ka, Sui, Moku, Kin, Do
    1組かぶっている。

    ・ドイツ語
    Sonntag, Montag, Dienstag, Mittwoch, Donnerstag, Freitag, Samstag
    3組。これはひどい。

    ・ロシア語
    воскресенье, понедельник, вторник, среда, четверг, пятница, суббота
    こちらも3組。

    ・フランス語
    dimanche, lundi, mardi, mercredi, jeudi, vendredi, samedi
    ・イタリア語
    Domenica, Lunedì, Martedì, Mercoledì, Giovedì, Venerdì, Sabato,
    ・スペイン語
    domingo, lunes, martes, miércoles, jueves, viernes, sábado
    みんな同じように1組かぶり。

    ・ギリシャ語
    Κυριακή, Δευτέρα, Τρίτη, Τετάρτη, Πέμπτη, Παρασκευή, Σάββατο
    2組かぶり。

    ・中国語
    星期日, 星期一, 星期二, 星期三, 星期四, 星期五, 星期六
    まあこれはかぶらなくて当たり前。

    ・韓国語
    일요일, 월요일, 화요일, 수요일, 목요일, 금요일, 토요일
    かぶってない…と言って良いのか…、
    ()일요일, ()월요일, (ㅎ)화요일, (ㅅ)수요일, (ㅁ)목요일, (ㄱ)금요일, (ㅌ)토요일
    こう考えると1組かぶっている。
    ローマ字(文化観光部2000年式)に直すと、
    Iryoil, Woryoil, Hwayoil, Suyoil, Mogyoil, Geumyoil, Toyoil
    かぶり無し。

    ‮・ヘブライ語‬
    土←日
    יום ראשון, יום שני, יום שלישי, יום רביעי, יום חמישי, יום שישי, יום שבת
    「ש」が4重複している。

    ‮・アラビア語‬
    土←日
    يوم الأحد, يوم الإثنين, يوم الثُّلَاثاء,يوم الأَرْبعاء, يوم الخَمِيس, يوم الجُمْعَة, يوم السَّبْت
    たぶん「ال」は定冠詞だからそれを除いて次の文字を見るべきだと思うが、前の文字と合字になっていて色分けがよく分からないことになってしまった。
    とりあえず「ا」が3重複。

    …とまあメジャーどころの言語を調べてみたが、重複無しは日(かな)、中、韓(ローマ字)の3つ。
    日本語韓国語は普通しない書き方でのことであり、中国語は日曜日を除く曜日に名前が付いていないのでノーカウントとすると重複しない言語は見つからなかった。
    他の言語も見てみよう。
    Wikipedia英語版のWeek-day namesのページにある全ての曜日名で頭文字にかぶりが無いものを探す。
    結果、90言語ほどある中でかぶりが無いものは以下の4言語であった。

    ・Scots Gaelic
    Di-Dòmhnaich, Di-Luain, Di-Màirt, Di-Ciadain, Di-Ardaoin, Di-Haoine, Di-Sàthairne
    ・Old Norse
    Sunnundagr, Mánandagr, Tysdagr, Óðensdagr, Þorsdagr, Friádagr, Laugardagr
    ‮・Persian‬
    土←日
    یکشنبه, دوشنبه, سه شنبه, چهارشنبه, پنجشنبه, آدینه, شنبه
    ・Estonian
    Pühapäev, Esmaspäev, Teisipäev, Kolmapäev, Neljapäev, Reede, Laupäev

    また、このような言語もあった。
    ・Manx
    Jedoonee, Jelune, Jemayrt, Jecrean, Jerdrein, Jeheiney, Jesarn
    曜日ごとに異なる部分が後半部な上に1語になってしまっているのでよく分からないが、頭の「Je」を除いて考えるとかぶっていないようだ。

    また、曜日名が無く数字で数える言語が中国語の他にもう1つあった。
    ・Mongolian
    бүтэн сайн өдөр, нэг дэх өдөр, хоёр дахь өдөр, гурав дахь өдөр, дөрөв дэх өдөр, тав дахь өдөр, хагас сайн өдөр

    さて、26個の中から7個選んでかぶらない確率は0.41である。
    (大抵の言語のアルファベット数は26から大きくは違わないので)
    ということは90言語あれば36言語ほど曜日の頭文字がかぶらない言語があってよさそうなものだが実際には多めに数えて(日・韓・Manxを含める)も7つしかない。
    これはかなり珍しいことではないだろうか。

    …と思ったが、よく考えてみると言語には系統があり同じ系統の言語では単語が似ている。
    なのでこれは多くの言語の元となった言語が偶然曜日の頭文字がかぶった言語だったというだけのことなのだろう。
    しかしそうしてみると90もあるように見えて実際には言語の種類なんて数えるほどなんだなあ。
    41%が7つだとすると言語系統の数は推定17個。実際には7つの中にも同源のものがあるだろうからもっと少ないと考えられる。  

  • マクドナルドの商品券を計算してみた
    2009年06月02日 15:05

    マクドナルドで値段が定額給付金な商品券セットが売り出され話題を呼んでいる。
    ちょっと計算してみよう。

    まず、券の内訳はこうだ。
    ・セットA商品券10枚
    (クォーターパウンダー・チーズ/ビッグマック/えびフィレオのいずれか+ポテトM+ドリンクM)
    ・セットB商品券10枚
    (ダブルチーズバーガー/てりやきマックバーガー/チキンフィレオのいずれか+ポテトM+ドリンクM)
    ・セットC商品券9枚
    (お好きなハッピーセットもしくはチーズバーガー+ポテトM+ドリンクM)
    ・デザート・サイドメニュー商品券3枚
    (サンデーチョコレート/チキンマックナゲット/ポテトMのいずれか)
    ・シャカシャカチキン1個商品券3枚
    ・プレミアムローストコーヒー(S)(ホットまたはアイス1杯)商品券30枚
    ・コールドドリンク(S)2杯商品券4枚
    (マクドナルド公式ページより抜粋)
    整理してみる。
    ・食物
    (クォーターパウンダーチーズ/ビッグマック/えびフィレオ) × 10
    (ダブルチーズバーガー/てりやきマックバーガー/チキンフィレオ) × 10
    チーズバーガー × 9
    ポテトM × 29
    (サンデーチョコレート/チキンマックナゲット/ポテトM) × 3
    シャカシャカチキン × 3
    ・飲料
    ドリンクM × 29
    ドリンクS × 8
    コーヒー × 30
    (※おもちゃの価値を判断するのは面倒なので、セットCをハッピーセットにする場合は考えない。)

    これらの総カロリーを計算してみる。
    複数選べるものはカロリーが最大のものを選ぶ。また、コーヒーにはガムシロップとコーヒーフレッシュを入れる。
    品物熱量個数
    クォーターパウンダーチーズ561105610
    てりやきマックバーガー506105060
    チーズバーガー30392727
    ポテトM4543214528
    シャカシャカチキン(チーズ)1883564
    (小計28489)
    ファンタグレープM156294524
    ファンタグレープS1018808
    コーヒー+α47301410
    (合計35231)

    よって価格当たり熱量は
    35231kcal / 12000円 = 2.94kcal/円
    となる。
    一方マックポークを単品で頼み続けると
    391kcal / 100円 = 3.91kcal/円
    であり、こちらの方が4/3倍ほど効率が良い。
    また、ジュースを除いた食物のみで考えると
    28489kcal / 12000円 = 2.37kcal/円
    となり、ハンバーガー単品(2.51kcal/円)に負ける。

    しかしマックポークとハンバーガーは非常に安い値段設定なのでこれと比べるのは適切でないかもしれない。
    他のビッグマック(1.70kcal/円)やてりやき(1.81kcal/円)と比べればかなりの高効率である。

    -----

    次に原価率を調べてみよう。当然確かな資料は無いが、色々な所にコピペされているこの資料を参考にしてみる。
    マクドナルド原価一覧表
    ■ハンバーガー
    価格…80~100円 原価…45円
    ■チーズバーガー
    価格…100円 原価…54円
    ハンバーガーは原価が高く、あまり儲からないらしい。
    ■テリヤキマックバーガー
    価格…260円 原価…78円
    ■ポテト(M)
    価格…220円~240円 原価…10~20円
    ポテトは利益率が高く、販売数も多いらしい。
    ■アップルパイ
    価格…100円 原価…35円
    ■コーラ
    価格…100円
    原価…5円未満(紙コップと、カップのふた、ストロー、水、氷のみ)
    おそらく5円もしない。実はマクドナルドのコーラ原液はコカ・コーラ社から無償提供
    ■マックナゲット
    価格…250円
    原価… 5円 /1個 合計原価25円
    ■コーヒー(ホット)
    価格…100円
    原価…2,5円

    単純化するために次のように近似する。
    バーガー類 : てりやきと同じ原価率※6/7訂正
    ナゲット : 25円
    ポテトM : 20円
    ジュース類 : 0円

    値段の高いものを選んで計算してみると、
    品物推定原価個数
    クォータ204102040
    Wチーズ186101860
    チーズ14791323
    シャカ30390
    ナゲット25375
    ポテト2029580
    (合計5968)

    原価率は
    5968円 / 12000円 = 49.7%

    これはかなり高い。単品のハンバーガーはかなり高原価率のはずだがそれを上回ってしまった。使われない券が一定量発生することを見越しているのだろうか。

    -----

    総合的に見て、これはかなりお得だと考えられる。
    組み合わせが決められてしまっているマイナスはあるが、熱量・原価どちらの面から見ても通常ではありえない効率である。
    計算する前はコーヒー30杯とジュース37杯のせいでかなり低効率になるだろうと考えていたのだが、さすがに2万円分が1.2万円で買えるというのはかなりのサービスのようだ。

    -----
    6/7訂正
    ×マックポークと同じ原価率 → ○てりやきとおなじ原価率  
    タグ :日常数学