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
のサイトを紹介します。ぜひ活用ください。
[PR]