英文の readability(読みやすさ) の指標として、日本だと SSS さんの YL*1 が多読やってる人たち(タドキストと言うらしい)の間で一般的だが、本場英語圏では Fog とか Flesch-Kincaid とかいうのが主流。
ベタだけど、Wikipedia の readability の記事 を一応貼っとく。
で、Amazon.com では、全ての本が対象ではないのだが、それら Readability のうち Fog と Flesch と Flesch-Kincaid を表示してくれる(例えばこんな感じ )。他にも単語数とか、単語あたりの音節数とか(多いと読むのがより難しい)、1ドルあたりの単語数とか(笑)いった情報が見られる。
ちなみに、本の製品情報の Inside This Book にある "Text Stats" をクリックすればこれらの情報が載ったページが表示される。 "Text Stats" が無ければ残念ながらその本ではそれらの情報はない。 "SEARCH INSIDE" が有効であればたいがい "Text Stats" も見れそうな雰囲気なのだが、必ずしもそうじゃないあたり、どういう基準なのかはちょっとよくわからない。
これをみて、自分でも計算できるんじゃないかなあと思った。といっても自力でゼロから実装するんじゃなくて、そういうライブラリがあるんじゃないかってことね。
で、期待せずに Ruby で探してみたのだが見あたらず。
こういう比較的ニッチなライブラリでもあったりするんだよなあ、と思って CPAN 探してみたらやっぱりそのまんまのライブラリがありやがるし。こういうところは Perl に敵わんよなあ。
というわけで、このblogにはなんとも珍しい perl なエントリ。
CPAN で Lingua::EN::Fathom をインストールして、次のようなコードを書けば Readability 関連情報がさっくり表示される。
use Lingua::EN::Fathom; my $text = new Lingua::EN::Fathom; $text->analyse_block(join('',<>)); print($text->report);
試しに Anne of Green Gables でやってみると、
Number of characters : 553023 Number of words : 101512 Percent of complex words : 8.43 Average syllables per word : 1.4276 Number of sentences : 6822 Average words per sentence : 14.8801 Number of text lines : 9839 Number of blank lines : 2038 Number of paragraphs : 1863 READABILITY INDICES Fog : 9.3223 Flesch : 70.9547 Flesch-Kincaid : 7.0592
こんな出力が得られる。うーん簡単すぎて拍子抜け。
余談。
これら指標の中では Flesch-Kincaid が「その本を読むのに必要な学年」という意味なので一番わかりやすいのかな。
4.2 だと(アメリカの)小学校4年生向け、7.1 だと(アメリカの)中学校1年生向け、と考えればいい*2。
でも機械的に計算しているだけで、かつ全体の長さという要素は全く値に反映されていないので、そこらへんは念頭に。