title: 単語頻度分析ツール description: テキストブロックを読み込み、最も一般的な単語をレポートします。
単語頻度分析ツール
ミラ こんにちは。ミッションログから情報を抽出する仕事を任されているのですが、ログが何百もあるんです。テキストファイルを読み込んで、各単語の出現回数をカウントし、上位の結果を表示するものが必要です。すべてを手動で読まずに、どのトピックが繰り返し出てくるのか知りたいんです。
作成するもの
テキストを入力するか、読み込むファイル名を入力してください: sample.txt
頻出単語トップ10:
the 42
and 31
python 18
is 16
you 14
...必要な知識
- 文字列 - テキストを単語に分割し、句読点を削除し、小文字に変換する
- 辞書 - 各単語が何回出現したかをカウントする
- リスト - 上位の結果をソートしてスライスする
- ファイルと例外 - テキストファイルから読み込む
- ラムダ、内包表記、zip - リスト内包表記と
keyを用いたsorted()が役立ちます
ヒント
カウント前に正規化する。 すべてを小文字にし、カウントを構築する前に句読点を削除します。そうしないと、「Python」と「python」と「Python,」がすべて異なる単語としてカウントされます。
辞書がカウントを行う。 単語をループします。単語がすでにキーの場合は、そのカウントをインクリメントします。そうでない場合は、カウント1で追加します。デフォルト値を持つ .get() を使うと、きれいに書けます。
辞書を値でソートする。 sorted() は key= 引数を受け取ります。各キーの値を返すラムダを渡して、頻度でソートします。
さらに進む
コア分析が機能したら:
- ストップワード。 「the」、「and」、「is」などの一般的な単語を無視します。ストップワードのセットを定義し、それに含まれる単語をスキップします。
- 設定可能なトップN。 常に10を表示する代わりに、ユーザーが表示する結果の数を指定できるようにします。
- ビジュアル出力。 各単語の横に、そのカウントに比例した繰り返し文字で作られたバーを印刷します。シンプルなバージョンでも、出力がより読みやすくなります。

