Graham Neubigの自然言語処理チュートリアル(第一回)



スポンサードリンク

自然言語処理100本ノックがだんだんと難しくなり、やる気が失せてきたので復習がてらグラムニュービッグさんのチュートリアルに手を出してみることにしました。

全部で14問あるみたいで、今日はその第一問目です。

「ファイルの中身の文章中に現れる単語の出現頻度をカウントせよ」

ファイル形式(text.txt)は

です。

解法

  1. ファイルを一行ずつ読み込み、split()で単語にわける
  2. Counter()関数でカウント
  3. counter.most_common()で辞書型にプリント

って感じでしょうか。

とりあえず作ってみた(間違っている)

実行すると

なぜかthisが別々にカウントされている。他にも色々おかしい。

本当は上のようになるはず。


スポンサードリンク

原因

これだと、同じ単語が来てもそれを同じと判断することができずに別々にカウントしてしまう。

同じ行内ならば同じ単語は追加のものとして加算してくれるみたいだが、行が違うと同じ単語でもダメみたいです。

だから、2行目に読み込んだpenは2回にカウントされている。

正解

実行結果

counter.most_common()はご丁寧に回数の多い順に出力してくれるみたいです。

やはりCounter()関数はかなり使いどころが多いのと、extendの使い方についても知ることができました。appendにして何回も詰まりました笑。

そんなに難しくない問題なのにこの程度で詰まるなんて、まだまだですね。精進します。

以上Graham Neubigさんのチュートリアル第一回目を終わりにします。



スポンサードリンク

 

 

記事が役に立ったらシェア!

投稿者:

中村 俊

中村 俊

1993/09/04生まれ。機械系大学院を休学し、ベンチャーでインターンしている最中。直近では、デカルトの「方法序説」に感銘を受けた。 趣味:読書、web開発の勉強、異分野の論文読んだり、記事書いたり。 最終的には経営者か研究者になりたい。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA