単語頻度アナライザー
Mira こんにちは。ミッションログから洞察を引き出すように頼まれたんですが、何百件もあるんです。テキストファイルを受け取って、各単語が何回出てくるかを数えて、上位の結果を表示してくれるものが欲しいんです。すべてを手で読まずに、どんな話題が繰り返し出てくるのかを見つけたいんです。
作るもの
Enter text, or a filename to read from: sample.txt
Top 10 words:
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 件を表示するのではなく、ユーザーに表示する結果の件数を指定させましょう。
- 視覚的な出力。 各単語を、カウントに比例した繰り返し文字でできたバーとともに表示しましょう。シンプルなバージョンでも、出力がずっと読みやすくなります。

