Skip to content
This page has been auto-translated and may contain errors.View in English

単語頻度アナライザー

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 件を表示するのではなく、ユーザーに表示する結果の件数を指定させましょう。
  • 視覚的な出力。 各単語を、カウントに比例した繰り返し文字でできたバーとともに表示しましょう。シンプルなバージョンでも、出力がずっと読みやすくなります。