Python Tips: 文章中の単語を集計したい

Python で英語文章中の単語を集計する方法をご紹介します。

大まかな流れは次のとおりになるでしょうか。

  1. 文章を単語に分けて
  2. 集計して
  3. 表示する

collectons の Counter というクラスを使うときれいに書くことができます。

# ライブラリの読み込み
import re
from collections import Counter

# 00 テキストの取得
target_text = """
Python is a remarkably powerful dynamic programming language that is used in a wide variety of application domains. Python is often compared to Tcl, Perl, Ruby, Scheme or Java. Some of its key distinguishing features include:

very clear, readable syntax
strong introspection capabilities
intuitive object orientation
natural expression of procedural code
full modularity, supporting hierarchical packages
exception-based error handling
very high level dynamic data types
extensive standard libraries and third party modules for virtually every task
extensions and modules easily written in C, C++ (or Java for Jython, or .NET languages for IronPython)
embeddable within applications as a scripting interface
"""

# 01 文章を単語に分ける
# 複数の区切り文字を指定するため re.split を使う
words = re.split(r'\s|\,|\.|\(|\)', target_text.lower())

# 02 集計する
counter = Counter(words)

# 03 表示する
# Counter#most_common を使って出現頻度の降順に csv 形式で表示する
for word, count in counter.most_common():
    if len(word) > 0:
        print("%s,%d" % (word, count))
# => csv 形式の単語出現回数

以上です。少し変更して標準入力を受け付けるようにすると、ちょっとした英単語カウンタとして使えます。

参考