Baayen のAnalyzing Linguistic Data についての私的メモ
ただし,草稿の段階なので,刊行された段階で修正されていると思われる.
Irregular verbs also tends to be more frequent than regular verbs, and it is reasonable to assume that this high frequnecy protects irregular verbs through time against regularization.
金先生より,languageRの関数growth.fnc()の出力はおかしいとうかがい,私も調べてみた.
languageR パッケージの growth.fnc () 関数の出力で,Herdan の C の計算方法は logV(N)/logN ではないよう.
data(alice) alice.growth <- growth.fnc(alice) alice.growth Chunk Tokens Types ... Herdan 1 1 646 269 0.7392036 log(269)/log(646) [1] 0.864609
そこでlanguageR パッケージのgrowth.fnc()を見ると herdan.fnc() を呼び出している.中を調べてみると,タイプ数の対数を最小二乗法を使って推定している. すなわち Chunk1の計算では,Chunk1までのトークン数1:646 の区間を,さらに指定のチャンク数を使って,floor(646/40) =16 間隔で区切り,この細かい区間でのタイプ数を数えている.そして,これらのベクトルに lm を適用している.
types <- c(16, 29, 40, 48, 56, 66, 77, 86, 94, 101, 109, 116, 124 ,130, 134, 140, 147, 150, 155, 161, 164, 166, 173, 177, 184, 191, 198, 203, 208, 210, 218, 224 ,229, 238, 243, 249, 255, 258, 264, 266) tokens <- c(16, 32 ,48 ,64, 80 ,96 ,112, 128 ,144, 160, 176, 192, 208, 224, 240, 256, 272, 288 ,304, 320 ,336, 352, 368, 384, 400 ,416, 432 ,448 ,464, 480, 496 ,512, 528, 544, 560, 576, 592, 608, 624, 640) coef(lm(log(types)~log(tokens)))[2]
端数を切り落としいる cumsum(rep(floor(length(text[1:chunks[i]])/40), 40))ので growth.fnc() 関数の出力に
Chunk Tokens Types 1 1 646 269
とあっても,Chunk1の計算に使っているのは,640 Tokensまでの情報.