Pythonでファイルからテキストを読み込んで単語の出現回数をカウントする方法

Pythonでテキストを読み込み、単語の出現回数をカウントする方法について説明します。ここでは、Pythonの標準ライブラリであるcollectionsモジュールを使ってカウントする方法を紹介します。他のライブラリを利用して単語のカウントを行うことも可能ですが、標準ライブラリを使うことでコードの移植の容易さが上がり管理しやくすなるなどメリットがあります。シンプルな用途では今回紹介する方法で十分に動作します。

ファイルからテキストを読み込む

まず、ファイルからテキストを読み込む必要があります。以下のように、Pythonの標準ライブラリであるopen()関数を使用します。

with open('file.txt', 'r') as f:
    text = f.read()

このコードでは、with文を使用してファイルを開き、read()メソッドを使用してテキストを読み込みます。'file.txt'はファイルのパスを表します。'r'は読み込みモードを表します。

単語の出現回数をカウントする

次に、単語の出現回数をカウントする必要があります。単語の出現回数をカウントするために、Pythonの標準ライブラリであるcollectionsモジュールのCounterクラスを使用します。以下のように、テキストを単語に分割し、Counterクラスを使用して単語の出現回数を数えます。

import collections

words = text.split()
word_count = collections.Counter(words)

このコードでは、split()メソッドを使用してテキストを単語に分割し、Counterクラスを使用して単語の出現回数を数えます。Counterクラスは、辞書と同様に動作しますが、要素の出現回数をカウントします。

Pythonで動かして学ぶ 自然言語処理入門 [ 柳井 孝介 ]

結果を出力する

最後に、結果を出力します。以下のように、most_common()メソッドを使用して、出現回数が多い順に単語をソートし、出力します。

for word, count in word_count.most_common():
    print(word, count)

このコードでは、most_common()メソッドを使用して、出現回数が多い順に単語をソートし、forループを使用して単語と出現回数を出力します。

実装

以上の手順をまとめて、ファイルからテキストを読み込み、単語の出現回数をカウントするPythonプログラムを以下に示します。

import collections

def count_words(filename):
    with open(filename, 'r') as f:
        text = f.read()
    words = text.split()
    word_count = collections.Counter(words)
    for word, count in word_count.most_common():
        print(word, count)

count_words('file.txt')

このプログラムでは、count_words関数を定義し、ファイル名を引数として受け取ります。open()関数を使用してファイルを開き、read()メソッドを使用してテキストを読み込みます。次に、テキストを単語に分割し、Counterクラスを使用して単語の出現回数を数えます。最後に、most_common()メソッドを使用して、出現回数が多い順に単語をソートし、出力します。

このプログラムでは、ファイル名を引数として受け取るため、異なるファイルを読み込んで単語の出現回数をカウントすることができます。また、出力結果は単語の出現回数が多い順にソートされているため、結果をすぐに把握することができます。

応用: 複数のファイルからテキストを読み込む

前述の例では、1つのファイルからテキストを読み込みましたが、複数のファイルからテキストを読み込むこともできます。例えば、フォルダ内のすべてのテキストファイルからテキストを読み込んで、単語の出現回数をカウントするプログラムを作成することができます。

以下は、globモジュールを使用して、フォルダ内のすべてのテキストファイルからテキストを読み込み、単語の出現回数をカウントするプログラムの例です。

import glob
import collections

# フォルダ内のすべてのテキストファイルからテキストを読み込む
files = glob.glob("folder/*.txt")

# 全てのテキストファイルの単語の出現回数をカウントする
word_count = collections.Counter()
for file in files:
    with open(file, 'r') as f:
        text = f.read()
        words = text.split()
        word_count.update(words)

# 出現回数が多い順に単語をソートし、出力する
for word, count in word_count.most_common():
    print(word, count)

このプログラムでは、globモジュールを使用して、folderフォルダ内のすべてのテキストファイルのパスを取得しています。files変数には、["folder/file1.txt", "folder/file2.txt", ...]のようなリストが格納されます。

次に、forループを使用して、各ファイルからテキストを読み込み、単語の出現回数をカウントしています。word_count.update(words)は、word_countに単語の出現回数を追加するために使用されます。このようにして、すべてのファイルの単語の出現回数をカウントすることができます。

最後に、出現回数が多い順に単語をソートし、出力しています。most_common()メソッドは、単語の出現回数が多い順にソートされたタプルのリストを返します。

まとめ

Pythonを使用して、ファイルからテキストを読み込んで、単語の出現回数をカウントする方法について説明しました。collectionsモジュールのCounterクラスを使用することで、簡単に単語の出現回数をカウントすることができます。最後にPythonの学習に利用できるUdemy iconのサイトを紹介します。ぜひ活用ください。

[PR]

click.linksynergy.com

click.linksynergy.com

click.linksynergy.com

click.linksynergy.com

click.linksynergy.com

click.linksynergy.com

click.linksynergy.com