{NLP}O’REILLY2.8_8単語の構成に関する条件付き頻度分布

O’reilly NLP with Python演習問題2.8_8

TODO

  • 名前コーパス(names)から、名前の頭文字の男女別頻度分布を調べる

  • アルファベットごとの出現回数を調べる

    今回グラフは棒グラフがよさそうですが、NLTKのplot()で棒グラフを生成できるのかわからなかったので、matplotlibを使って生成しようと思います。
    そのために、まずは、X軸、Y軸に使うために、出現回数の配列をつくります。
    forの入れ子が多くて大変頭の悪そうなコードではあるのですが……。

    出力結果:

    ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
    [443 246 469 308 251 144 213 124  83 293 276 332 484 158  66 121   9 247 309 198  14 105  54   5  18  31]
    [213 173 166 146 119  87 156 163  45 144  70 113 200  77  52 101  15 200 238 188  22  50 151   7  16  31]
    



    棒グラフを生成する

    先ほど作った配列をもとにmatpltlibで棒グラフを生成します。

    出力結果:

    こんな感じ!語尾は男女ではっきりとした有意差があると思うのですが、頭文字はちょっとわかりませんね。
    出現回数を調べてみてわかったのですが、namesコーパスは、含まれる男女の名前の数に偏りがある(男性名の方が多く載っている)みたいです。
    なので、男女それぞれの全体に占める割合を出した方がわかりやすいかもしれません。
    そちらは簡単な操作なので、省略するとして、とりあえずは、ここまで。

    Leave a Reply

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