【Python】ファイル内の単語出現回数を数えて多い順に表示する

Python

Pythonはテキスト処理のプログラミングにおいて簡潔に処理を書くことができます。この記事では、ファイル内の単語をカウントし、出現頻度の高い上位10件を表示する処理をPythonで実装する方法を紹介します。

サンプルコード1:collections.Counterクラスを使用

collections.Counterクラスを利用することで、単語の出現回数を簡単にカウントできます。Counterは辞書のサブクラスで、要素の出現回数をカウントするのに適しています。

#coding: UTF-8
from collections import Counter
import re

# ファイルパス
filename = r"C:\path\to\your\file.txt"

# ファイルを開き、単語をカウント
word_count = Counter()
with open(filename, 'r') as file:
    # ファイル内の全行を処理
    for line in file:
        # 正規表現により単語に分割しカウント
        words = re.findall(r'\w+', line.lower())
        word_count.update(words)

# 出現回数が多い上位10件の単語とその回数を表示
for word, count in word_count.most_common(10):
    print(word + ": " + str(count))

出現回数が多い上位10件を表示するために、word_count.most_common(10)を使用しています。これにより、出現回数が多い上位10件の単語とその回数を取得して表示できます。

サンプルコード2:辞書(dictionary)を使用

以下は辞書(dictionary)による単語の出現回数をカウントする例です。

#coding: UTF-8
import re

# ファイルパス
filename = r"C:\path\to\your\file.txt"

# ファイルを開き、単語をカウント
word_count = {}
with open(filename, 'r') as file:
    # ファイル内の全行を処理
    for line in file:
        # 正規表現により単語に分割しカウント
        words = re.findall(r'\w+', line.lower())
        for word in words:
            # 出現の有無による分岐
            if word in word_count:
                word_count[word] += 1   # 2回目以降の出現
            else:
                word_count[word] = 1    # 初めての出現

# 出現回数で降順ソート
sorted_words = sorted(word_count.items(), key=lambda x: x[1], reverse=True)

# 上位10件を表示
for word, count in sorted_words[:10]:
    print(word + ": " + str(count))

出現回数で降順ソートする処理について。sorted関数を使用して辞書のアイテムを出現回数の多い順にソートします。このとき、key=lambda x: x[1]はソートの基準をアイテムの第二要素(出現回数)に設定します。またreverse=Trueにより降順でソートします。最後に、出現回数が多い上位10件の単語を表示します。

まとめ

この記事では、ファイル内の単語をカウントし、出現頻度の高い上位10件を表示する処理をPythonで実装する方法を2つ紹介しました。単語のカウントであれば、簡潔に処理を書くことができるCounterクラスを使いましょう。

タイトルとURLをコピーしました