大野の語彙法則を試す

はじめに

読んでた本に出てきた法則が気になったので、試してみた。

大野の語彙法則

  • 任意の3作品A,B,Cについて、品詞ごとの構成比を計算しておく
  • 名詞の構成比をX_0, x, X_1とし、任意の品詞の構成比をY_0, y, Y_1とする
  • 次の関係式が近似的に成り立つ
    • (y-Y_0) / (Y_1-Y_0) ≒ (x-X_0) / (X_1-X_0)
  • (X_0, Y_0)と(x,y)と(X_1, Y_1)が直線上に並ぶ
原版

試す

作品の準備
品詞の割合の計算
  • mecab+ipadicを利用
    • 品詞体系がipadicに依存するので、上記法則の形態素の単位として適切かどうかは不明
  • 以下のスクリプトを実行して、集計
#!/usr/bin/perl
# MeCabのperlラッパーのインストールが必要
# Usage : ./countup.pl < テキストファイル
use strict;
use warnings;
use MeCab;

my $mecab = new MeCab::Tagger("");

my %pos_count;
my $cnt = 0;

while(<>){
    chomp;
    my $text = $_;
    
    for(my $n = $mecab->parseToNode($text); $n; $n = $n->{next}){
        my @fts = split(/,/, $n->{feature});
        next if($fts[0] eq "BOS/EOS");

        #print $n->{surface}, "\t", $fts[0], "\n";
        $pos_count{$fts[0]}++;
        $cnt++;
    }
}

print 100 * $pos_count{"名詞"} / $cnt, "\n";
print 100 * $pos_count{"動詞"} / $cnt, "\n";
print 100 * $pos_count{"形容詞"} / $cnt, "\n";
print 100 * $pos_count{"助詞"} / $cnt, "\n";
print 100 * $pos_count{"助動詞"} / $cnt, "\n";

結果

確かに直線上になってるっぽい。("注文"は、ひらがなが多い気がするので、解析ミスってるかも・・・?)
名詞の割合が決まれば、その他の品詞の割合がおおよそ決まるとは。不思議。

ツイート文とかニュース記事とかだとどうなるのかな。