英単語出現頻度カウンター

ふと英単語の出現頻度カウンターを作ったのを思い出しました。テキストファイルを読んで単語の出現頻度を調べるプログラムです。

もうソースコードが手元に無いので詳細は思い出せないですが、5-6年くらい前の話で、その頃はC++をようやく覚えた位で、ライブラリも何も使わずにリストを自作して実装した記憶があります。数百行のコードで1-2日くらいかけて作って、でもサイズが大きいテキストを読むとメモリが足りなくて、しかも処理も遅かった気がします。

もしかしたらシェルだけでいけるかもと思って、試してみたら1行でいけました。

cat test.txt |
	sed 's/ /n/g' |
	sed 's/[?!`",:<>.=-{}()]|[|]//g' |
	sed '/^$/d' |
	tr A-Z a-z | sort | uniq -c | sort

しかも処理速度も速くメモリ消費も少ないです。500Kのテキストだったら2,3秒で処理されます。ほんの1-2分で書ける処理に1-2日とかかけてた訳です。(というのは嘘で本当は20分くらいsedを調べたけど)

恐ろしいですね。100倍とか余裕で差がついてきます。100年分の人生が1年分に満たないような状況がゴロゴロしてるわけですね。。恐ろしい。常に最適な方法を探り続けるべし!ですね。

でももっと恐ろしいのは、最適な方法を探ってばかりで作業が実際進まないという事で、
現実逃避してる場合じゃないという事で、戻ってきます。

てかWP-Syntaxはシェルコマンドにも対応してるのか。何だこいつ凄いな。

Leave a Reply

Your email address will not be published. Required fields are marked *