Skip to content

Instantly share code, notes, and snippets.

@shotarok
Created December 3, 2014 11:09
Show Gist options
  • Save shotarok/db7b6db7035dd48e5902 to your computer and use it in GitHub Desktop.
Save shotarok/db7b6db7035dd48e5902 to your computer and use it in GitHub Desktop.
#! /usr/bin/env python
# -*- coding:utf-8 -*-
import concurrent.futures
import sys
import subprocess
import time
from collections import defaultdict
from data import sentences
def sent2kgram(sentence, k=2, delimiter=" "):
sentence = str(subprocess.getoutput("echo %s | mecab -O wakati" % (sentence)))
words = sentence.strip().split()
length, kgrams = len(words), []
for i in range(length - k):
kgram = delimiter.join(words[i:i + k])
kgrams.append(kgram)
return kgrams
def timef(f):
def wrapper():
start = time.time()
f()
end = time.time()
print("%s: %.2fms" % (f.__name__, (end - start) * 1000))
return wrapper
@timef
def single_process():
kgram2id = defaultdict(lambda: len(kgram2id))
for sentence in sentences:
kgram = sent2kgram(sentence)
kgram = map(lambda x: kgram2id[x], kgram)
return kgram2id
@timef
def multi_process():
kgram2id = defaultdict(lambda: len(kgram2id))
with concurrent.futures.ProcessPoolExecutor(max_workers=4) as executor:
for res_kgram in executor.map(sent2kgram, sentences):
res_kgram = map(lambda x: kgram2id[x], res_kgram)
return kgram2id
def main():
single_process()
multi_process()
if __name__ == "__main__":
main()
@shotarok
Copy link
Author

shotarok commented Dec 3, 2014

上のスクリプトと一緒に使う data.py です。

#! /usr/bin/env python
#-*- coding:utf-8 -*-

# 青空文庫より「吾輩は猫である」の冒頭抜粋
# 青空文庫収録ファイルの取り扱い規準 http://www.aozora.gr.jp/guide/kijyunn.html

sentences = """\
吾輩は猫である。名前はまだ無い。
どこで生れたかとんと見当がつかぬ。何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。吾輩はここで始めて人間というものを見た。しかもあとで聞くとそれは書生という人間中で一番|獰悪な種族であったそうだ。この書生というのは時々我々を捕えて煮て食うという話である。しかしその当時は何という考もなかったから別段恐しいとも思わなかった。ただ彼の掌に載せられてスーと持ち上げられた時何だかフワフワした感じがあったばかりである。掌の上で少し落ちついて書生の顔を見たのがいわゆる人間というものの見始であろう。この時妙なものだと思った感じが今でも残っている。第一毛をもって装飾されべきはずの顔がつるつるしてまるで薬缶だ。その後猫にもだいぶ逢ったがこんな片輪には一度も出会わした事がない。のみならず顔の真中があまりに突起している。そうしてその穴の中から時々ぷうぷうと煙を吹く。どうも咽せぽくて実に弱った。これが人間の飲む煙草というものである事はようやくこの頃知った。
この書生の掌の裏でしばらくはよい心持に坐っておったが、しばらくすると非常な速力で運転し始めた。書生が動くのか自分だけが動くのか分らないが無暗に眼が廻る。胸が悪くなる。到底助からないと思っていると、どさりと音がして眼から火が出た。それまでは記憶しているがあとは何の事やらいくら考え出そうとしても分らない。
ふと気が付いて見ると書生はいない。たくさんおった兄弟が一|疋も見えぬ。肝心の母親さえ姿を隠してしまった。その上|今までの所とは違って無暗に明るい。眼を明いていられぬくらいだ。はてな何でも容子がおかしいと、のそのそ這い出して見ると非常に痛い。吾輩は藁の上から急に笹原の中へ棄てられたのである。
ようやくの思いで笹原を這い出すと向うに大きな池がある。吾輩は池の前に坐ってどうしたらよかろうと考えて見た。別にこれという分別も出ない。しばらくして泣いたら書生がまた迎に来てくれるかと考え付いた。ニャー、ニャーと試みにやって見たが誰も来ない。そのうち池の上をさらさらと風が渡って日が暮れかかる。腹が非常に減って来た。泣きたくても声が出ない。仕方がない、何でもよいから食物のある所まであるこうと決心をしてそろりそろりと池を左りに廻り始めた。どうも非常に苦しい。そこを我慢して無理やりに這って行くとようやくの事で何となく人間臭い所へ出た。ここへ這入ったら、どうにかなると思って竹垣の崩れた穴から、とある邸内にもぐり込んだ。縁は不思議なもので、もしこの竹垣が破れていなかったなら、吾輩はついに路傍に餓死したかも知れんのである。一樹の蔭とはよく云ったものだ。この垣根の穴は今日に至るまで吾輩が隣家の三毛を訪問する時の通路になっている。さて邸へは忍び込んだもののこれから先どうして善いか分らない。そのうちに暗くなる、腹は減る、寒さは寒し、雨が降って来るという始末でもう一刻の猶予が出来なくなった。仕方がないからとにかく明るくて暖かそうな方へ方へとあるいて行く。今から考えるとその時はすでに家の内に這入っておったのだ。ここで吾輩は彼の書生以外の人間を再び見るべき機会に遭遇したのである。第一に逢ったのがおさんである。これは前の書生より一層乱暴な方で吾輩を見るや否やいきなり頸筋をつかんで表へ抛り出した。いやこれは駄目だと思ったから眼をねぶって運を天に任せていた。しかしひもじいのと寒いのにはどうしても我慢が出来ん。吾輩は再びおさんの隙を見て台所へ這い上った。すると間もなくまた投げ出された。吾輩は投げ出されては這い上り、這い上っては投げ出され、何でも同じ事を四五遍繰り返したのを記憶している。その時におさんと云う者はつくづくいやになった。この間おさんの三馬を偸んでこの返報をしてやってから、やっと胸の痞が下りた。吾輩が最後につまみ出されようとしたときに、この家の主人が騒々しい何だといいながら出て来た。下女は吾輩をぶら下げて主人の方へ向けてこの宿なしの小猫がいくら出しても出しても御台所へ上って来て困りますという。主人は鼻の下の黒い毛を撚りながら吾輩の顔をしばらく眺めておったが、やがてそんなら内へ置いてやれといったまま奥へ這入ってしまった。主人はあまり口を聞かぬ人と見えた。下女は口惜しそうに吾輩を台所へ抛り出した。かくして吾輩はついにこの家を自分の住家と極める事にしたのである。
吾輩の主人は滅多に吾輩と顔を合せる事がない。職業は教師だそうだ。学校から帰ると終日書斎に這入ったぎりほとんど出て来る事がない。家のものは大変な勉強家だと思っている。当人も勉強家であるかのごとく見せている。しかし実際はうちのものがいうような勤勉家ではない。吾輩は時々忍び足に彼の書斎を覗いて見るが、彼はよく昼寝をしている事がある。時々読みかけてある本の上に涎をたらしている。彼は胃弱で皮膚の色が淡黄色を帯びて弾力のない不活溌な徴候をあらわしている。その癖に大飯を食う。大飯を食った後でタカジヤスターゼを飲む。飲んだ後で書物をひろげる。二三ページ読むと眠くなる。涎を本の上へ垂らす。これが彼の毎夜繰り返す日課である。吾輩は猫ながら時々考える事がある。教師というものは実に楽なものだ。人間と生れたら教師となるに限る。こんなに寝ていて勤まるものなら猫にでも出来ぬ事はないと。それでも主人に云わせると教師ほどつらいものはないそうで彼は友達が来る度に何とかかんとか不平を鳴らしている。
吾輩がこの家へ住み込んだ当時は、主人以外のものにははなはだ不人望であった。どこへ行っても跳ね付けられて相手にしてくれ手がなかった。いかに珍重されなかったかは、今日に至るまで名前さえつけてくれないのでも分る。吾輩は仕方がないから、出来得る限り吾輩を入れてくれた主人の傍にいる事をつとめた。朝主人が新聞を読むときは必ず彼の膝の上に乗る。彼が昼寝をするときは必ずその背中に乗る。これはあながち主人が好きという訳ではないが別に構い手がなかったからやむを得んのである。その後いろいろ経験の上、朝は飯櫃の上、夜は炬燵の上、天気のよい昼は椽側へ寝る事とした。しかし一番心持の好いのは夜に入ってここのうちの小供の寝床へもぐり込んでいっしょにねる事である。この小供というのは五つと三つで夜になると二人が一つ床へ入って一間へ寝る。吾輩はいつでも彼等の中間に己れを容るべき余地を見出してどうにか、こうにか割り込むのであるが、運悪く小供の一人が眼を醒ますが最後大変な事になる。小供は——ことに小さい方が質がわるい——猫が来た猫が来たといって夜中でも何でも大きな声で泣き出すのである。すると例の神経胃弱性の主人は必ず眼をさまして次の部屋から飛び出してくる。現にせんだってなどは物指で尻ぺたをひどく叩かれた。
吾輩は人間と同居して彼等を観察すればするほど、彼等は我儘なものだと断言せざるを得ないようになった。ことに吾輩が時々|同衾する小供のごときに至っては言語同断である。自分の勝手な時は人を逆さにしたり、頭へ袋をかぶせたり、抛り出したり、へっついの中へ押し込んだりする。しかも吾輩の方で少しでも手出しをしようものなら家内総がかりで追い廻して迫害を加える。この間もちょっと畳で爪を磨いだら細君が非常に怒ってそれから容易に座敷へ入れない。台所の板の間で他が顫えていても一向平気なものである。吾輩の尊敬する筋向の白君などは逢う度毎に人間ほど不人情なものはないと言っておらるる。白君は先日玉のような子猫を四疋|産まれたのである。ところがそこの家の書生が三日目にそいつを裏の池へ持って行って四疋ながら棄てて来たそうだ。白君は涙を流してその一部始終を話した上、どうしても我等|猫族が親子の愛を完くして美しい家族的生活をするには人間と戦ってこれを剿滅せねばならぬといわれた。一々もっともの議論と思う。また隣りの三毛君などは人間が所有権という事を解していないといって大に憤慨している。元来我々同族間では目刺の頭でも鰡の臍でも一番先に見付けたものがこれを食う権利があるものとなっている。もし相手がこの規約を守らなければ腕力に訴えて善いくらいのものだ。しかるに彼等人間は毫もこの観念がないと見えて我等が見付けた御馳走は必ず彼等のために掠奪せらるるのである。彼等はその強力を頼んで正当に吾人が食い得べきものを奪ってすましている。白君は軍人の家におり三毛君は代言の主人を持っている。吾輩は教師の家に住んでいるだけ、こんな事に関すると両君よりもむしろ楽天である。ただその日その日がどうにかこうにか送られればよい。いくら人間だって、そういつまでも栄える事もあるまい。まあ気を永く猫の時節を待つがよかろう。
我儘で思い出したからちょっと吾輩の家の主人がこの我儘で失敗した話をしよう。元来この主人は何といって人に勝れて出来る事もないが、何にでもよく手を出したがる。俳句をやってほととぎすへ投書をしたり、新体詩を明星へ出したり、間違いだらけの英文をかいたり、時によると弓に凝ったり、謡を習ったり、またあるときはヴァイオリンなどをブーブー鳴らしたりするが、気の毒な事には、どれもこれも物になっておらん。その癖やり出すと胃弱の癖にいやに熱心だ。後架の中で謡をうたって、近所で後架先生と渾名をつけられているにも関せず一向平気なもので、やはりこれは平の宗盛にて候を繰返している。みんながそら宗盛だと吹き出すくらいである。この主人がどういう考になったものか吾輩の住み込んでから一月ばかり後のある月の月給日に、大きな包みを提げてあわただしく帰って来た。何を買って来たのかと思うと水彩絵具と毛筆とワットマンという紙で今日から謡や俳句をやめて絵をかく決心と見えた。果して翌日から当分の間というものは毎日毎日書斎で昼寝もしないで絵ばかりかいている。しかしそのかき上げたものを見ると何をかいたものやら誰にも鑑定がつかない。当人もあまり甘くないと思ったものか、ある日その友人で美学とかをやっている人が来た時に下のような話をしているのを聞いた。
「どうも甘くかけないものだね。人のを見ると何でもないようだが自ら筆をとって見ると今更のようにむずかしく感ずる」これは主人の述懐である。なるほど詐りのない処だ。彼の友は金縁の眼鏡越に主人の顔を見ながら、「そう初めから上手にはかけないさ、第一室内の想像ばかりで画がかける訳のものではない。昔し以太利の大家アンドレア・デル・サルトが言った事がある。画をかくなら何でも自然その物を写せ。天に星辰あり。地に露華あり。飛ぶに禽あり。走るに獣あり。池に金魚あり。枯木に寒鴉あり。自然はこれ一幅の大活画なりと。どうだ君も画らしい画をかこうと思うならちと写生をしたら」
「へえアンドレア・デル・サルトがそんな事をいった事があるかい。ちっとも知らなかった。なるほどこりゃもっともだ。実にその通りだ」と主人は無暗に感心している。金縁の裏には嘲けるような笑が見えた。
その翌日吾輩は例のごとく椽側に出て心持善く昼寝をしていたら、主人が例になく書斎から出て来て吾輩の後ろで何かしきりにやっている。ふと眼が覚めて何をしているかと一分ばかり細目に眼をあけて見ると、彼は余念もなくアンドレア・デル・サルトを極め込んでいる。吾輩はこの有様を見て覚えず失笑するのを禁じ得なかった。彼は彼の友に揶揄せられたる結果としてまず手初めに吾輩を写生しつつあるのである。吾輩はすでに十分寝た。欠伸がしたくてたまらない。しかしせっかく主人が熱心に筆を執っているのを動いては気の毒だと思って、じっと辛棒しておった。彼は今吾輩の輪廓をかき上げて顔のあたりを色彩っている。吾輩は自白する。吾輩は猫として決して上乗の出来ではない。背といい毛並といい顔の造作といいあえて他の猫に勝るとは決して思っておらん。しかしいくら不器量の吾輩でも、今吾輩の主人に描き出されつつあるような妙な姿とは、どうしても思われない。第一色が違う。吾輩は波斯産の猫のごとく黄を含める淡灰色に漆のごとき斑入りの皮膚を有している。これだけは誰が見ても疑うべからざる事実と思う。しかるに今主人の彩色を見ると、黄でもなければ黒でもない、灰色でもなければ褐色でもない、さればとてこれらを交ぜた色でもない。ただ一種の色であるというよりほかに評し方のない色である。その上不思議な事は眼がない。もっともこれは寝ているところを写生したのだから無理もないが眼らしい所さえ見えないから盲猫だか寝ている猫だか判然しないのである。吾輩は心中ひそかにいくらアンドレア・デル・サルトでもこれではしようがないと思った。しかしその熱心には感服せざるを得ない。なるべくなら動かずにおってやりたいと思ったが、さっきから小便が催うしている。身内の筋肉はむずむずする。最早一分も猶予が出来ぬ仕儀となったから、やむをえず失敬して両足を前へ存分のして、首を低く押し出してあーあと大なる欠伸をした。さてこうなって見ると、もうおとなしくしていても仕方がない。どうせ主人の予定は打ち壊わしたのだから、ついでに裏へ行って用を足そうと思ってのそのそ這い出した。すると主人は失望と怒りを掻き交ぜたような声をして、座敷の中から「この馬鹿野郎」と怒鳴った。この主人は人を罵るときは必ず馬鹿野郎というのが癖である。ほかに悪口の言いようを知らないのだから仕方がないが、今まで辛棒した人の気も知らないで、無暗に馬鹿野郎|呼わりは失敬だと思う。それも平生吾輩が彼の背中へ乗る時に少しは好い顔でもするならこの漫罵も甘んじて受けるが、こっちの便利になる事は何一つ快くしてくれた事もないのに、小便に立ったのを馬鹿野郎とは酷い。元来人間というものは自己の力量に慢じてみんな増長している。少し人間より強いものが出て来て窘めてやらなくてはこの先どこまで増長するか分らない。
我儘もこのくらいなら我慢するが吾輩は人間の不徳についてこれよりも数倍悲しむべき報道を耳にした事がある。
吾輩の家の裏に十坪ばかりの茶園がある。広くはないが瀟洒とした心持ち好く日の当る所だ。うちの小供があまり騒いで楽々昼寝の出来ない時や、あまり退屈で腹加減のよくない折などは、吾輩はいつでもここへ出て浩然の気を養うのが例である。ある小春の穏かな日の二時頃であったが、吾輩は昼飯後快よく一睡した後、運動かたがたこの茶園へと歩を運ばした。茶の木の根を一本一本嗅ぎながら、西側の杉垣のそばまでくると、枯菊を押し倒してその上に大きな猫が前後不覚に寝ている。彼は吾輩の近づくのも一向心付かざるごとく、また心付くも無頓着なるごとく、大きな鼾をして長々と体を横えて眠っている。他の庭内に忍び入りたるものがかくまで平気に睡られるものかと、吾輩は窃かにその大胆なる度胸に驚かざるを得なかった。彼は純粋の黒猫である。わずかに午を過ぎたる太陽は、透明なる光線を彼の皮膚の上に抛げかけて、きらきらする柔毛の間より眼に見えぬ炎でも燃え出ずるように思われた。彼は猫中の大王とも云うべきほどの偉大なる体格を有している。吾輩の倍はたしかにある。吾輩は嘆賞の念と、好奇の心に前後を忘れて彼の前に佇立して余念もなく眺めていると、静かなる小春の風が、杉垣の上から出たる梧桐の枝を軽く誘ってばらばらと二三枚の葉が枯菊の茂みに落ちた。大王はかっとその真丸の眼を開いた。今でも記憶している。その眼は人間の珍重する琥珀というものよりも遥かに美しく輝いていた。彼は身動きもしない。双眸の奥から射るごとき光を吾輩の矮小なる額の上にあつめて、御めえは一体何だと云った。大王にしては少々言葉が卑しいと思ったが何しろその声の底に犬をも挫しぐべき力が籠っているので吾輩は少なからず恐れを抱いた。しかし挨拶をしないと険呑だと思ったから「吾輩は猫である。名前はまだない」となるべく平気を装って冷然と答えた。しかしこの時吾輩の心臓はたしかに平時よりも烈しく鼓動しておった。彼は大に軽蔑せる調子で「何、猫だ?猫が聞いてあきれらあ。全てえどこに住んでるんだ」随分|傍若無人である。「吾輩はここの教師の家にいるのだ」「どうせそんな事だろうと思った。いやに瘠せてるじゃねえか」と大王だけに気焔を吹きかける。言葉付から察するとどうも良家の猫とも思われない。しかしその膏切って肥満しているところを見ると御馳走を食ってるらしい、豊かに暮しているらしい。吾輩は「そう云う君は一体誰だい」と聞かざるを得なかった。「己れあ車屋の黒よ」昂然たるものだ。車屋の黒はこの近辺で知らぬ者なき乱暴猫である。しかし車屋だけに強いばかりでちっとも教育がないからあまり誰も交際しない。同盟敬遠主義の的になっている奴だ。吾輩は彼の名を聞いて少々尻こそばゆき感じを起すと同時に、一方では少々|軽侮の念も生じたのである。吾輩はまず彼がどのくらい無学であるかを試してみようと思って左の問答をして見た。
「一体車屋と教師とはどっちがえらいだろう」
「車屋の方が強いに極っていらあな。御めえのうちの主人を見ねえ、まるで骨と皮ばかりだぜ」
「君も車屋の猫だけに大分強そうだ。車屋にいると御馳走が食えると見えるね」
「何におれなんざ、どこの国へ行ったって食い物に不自由はしねえつもりだ。御めえなんかも茶畠ばかりぐるぐる廻っていねえで、ちっと己の後へくっ付いて来て見ねえ。一と月とたたねえうちに見違えるように太れるぜ」
「追ってそう願う事にしよう。しかし家は教師の方が車屋より大きいのに住んでいるように思われる」
「箆棒め、うちなんかいくら大きくたって腹の足しになるもんか」
彼は大に肝癪に障った様子で、寒竹をそいだような耳をしきりとぴく付かせてあららかに立ち去った。吾輩が車屋の黒と知己になったのはこれからである。
その後吾輩は度々黒と邂逅する。邂逅する毎に彼は車屋相当の気焔を吐く。先に吾輩が耳にしたという不徳事件も実は黒から聞いたのである。
或る日例のごとく吾輩と黒は暖かい茶畠の中で寝転びながらいろいろ雑談をしていると、彼はいつもの自慢話しをさも新しそうに繰り返したあとで、吾輩に向って下のごとく質問した。「御めえは今までに鼠を何匹とった事がある」智識は黒よりも余程発達しているつもりだが腕力と勇気とに至っては到底黒の比較にはならないと覚悟はしていたものの、この問に接したる時は、さすがに極りが善くはなかった。けれども事実は事実で詐る訳には行かないから、吾輩は「実はとろうとろうと思ってまだ捕らない」と答えた。黒は彼の鼻の先からぴんと突張っている長い髭をびりびりと震わせて非常に笑った。元来黒は自慢をする丈にどこか足りないところがあって、彼の気焔を感心したように咽喉をころころ鳴らして謹聴していればはなはだ御しやすい猫である。吾輩は彼と近付になってから直にこの呼吸を飲み込んだからこの場合にもなまじい己れを弁護してますます形勢をわるくするのも愚である、いっその事彼に自分の手柄話をしゃべらして御茶を濁すに若くはないと思案を定めた。そこでおとなしく「君などは年が年であるから大分とったろう」とそそのかして見た。果然彼は墻壁の欠所に吶喊して来た。「たんとでもねえが三四十はとったろう」とは得意気なる彼の答であった。彼はなお語をつづけて「鼠の百や二百は一人でいつでも引き受けるがいたちってえ奴は手に合わねえ。一度いたちに向って酷い目に逢った」「へえなるほど」と相槌を打つ。黒は大きな眼をぱちつかせて云う。「去年の大掃除の時だ。うちの亭主が石灰の袋を持って椽の下へ這い込んだら御めえ大きないたちの野郎が面喰って飛び出したと思いねえ」「ふん」と感心して見せる。「いたちってけども何鼠の少し大きいぐれえのものだ。こん畜生って気で追っかけてとうとう泥溝の中へ追い込んだと思いねえ」「うまくやったね」と喝采してやる。「ところが御めえいざってえ段になると奴め最後っ屁をこきゃがった。臭えの臭くねえのってそれからってえものはいたちを見ると胸が悪くならあ」彼はここに至ってあたかも去年の臭気を今なお感ずるごとく前足を揚げて鼻の頭を二三遍なで廻わした。吾輩も少々気の毒な感じがする。ちっと景気を付けてやろうと思って「しかし鼠なら君に睨まれては百年目だろう。君はあまり鼠を捕るのが名人で鼠ばかり食うものだからそんなに肥って色つやが善いのだろう」黒の御機嫌をとるためのこの質問は不思議にも反対の結果を呈出した。彼は喟然として大息していう。「考げえるとつまらねえ。いくら稼いで鼠をとったって——一てえ人間ほどふてえ奴は世の中にいねえぜ。人のとった鼠をみんな取り上げやがって交番へ持って行きゃあがる。交番じゃ誰が捕ったか分らねえからそのたんびに五銭ずつくれるじゃねえか。うちの亭主なんか己の御蔭でもう壱円五十銭くらい儲けていやがる癖に、碌なものを食わせた事もありゃしねえ。おい人間てものあ体の善い泥棒だぜ」さすが無学の黒もこのくらいの理窟はわかると見えてすこぶる怒った容子で背中の毛を逆立てている。吾輩は少々気味が悪くなったから善い加減にその場を胡魔化して家へ帰った。この時から吾輩は決して鼠をとるまいと決心した。しかし黒の子分になって鼠以外の御馳走を猟ってあるく事もしなかった。御馳走を食うよりも寝ていた方が気楽でいい。教師の家にいると猫も教師のような性質になると見える。要心しないと今に胃弱になるかも知れない。
教師といえば吾輩の主人も近頃に至っては到底水彩画において望のない事を悟ったものと見えて十二月一日の日記にこんな事をかきつけた。
"""
sentences = sentences.split("\n")

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment