Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで文字列内の単語の出現頻度を求める方法

Pythonでは、辞書内包表記(dictionary comprehension)を活用することで、文字列内に含まれる各単語の出現頻度を非常に簡潔なコードで求めることができます。

サンプルコード

以下に具体的な実装例を示します。

my_str = 'Hi there Will, how are you Will, Will you say Hi to me'
print("The string is : " )
print(my_str)
my_result = {key: my_str.count(key) for key in my_str.split()}
print("The word frequency is : ")
print(my_result)

実行結果

The string is :
Hi there Will, how are you Will, Will you say Hi to me
The word frequency is :
{'Hi': 2, 'there': 1, 'Will,': 2, 'how': 1, 'are': 1, 'you': 2, 'Will': 3, 'say': 1, 'to': 1, 'me': 1}

コードの解説

  • まず、対象となる文字列を定義し、その内容をコンソールに表示します。

  • 辞書内包表記を使用して文字列を走査し、split()メソッドによって空白文字を基準に単語へと分割します。

  • 各キー(単語)に対してcount()メソッドで出現回数を算出し、その結果を変数に代入します。

  • 最後に、この変数の内容をコンソールへ出力します。

注意点

この方法では句読点も単語の一部として扱われるため、出力結果にあるように「Will,」と「Will」は別々のキーとしてカウントされます。記号を除外したい場合は、正規表現(reモジュール)などで前処理を行うとよいでしょう。

補足:collections.Counterを使う方法

標準ライブラリのcollectionsモジュールに含まれるCounterクラスを使えば、さらにシンプルに記述できます。

from collections import Counter

my_str = 'Hi there Will, how are you Will, Will you say Hi to me'
word_freq = Counter(my_str.split())
print(word_freq)

Counterは出現頻度の高い要素を順に取得できるmost_common()メソッドも備えているため、頻度分析にはこちらが便利です。

  1. Pythonのcasefold()メソッドとは?文字列の小文字変換と比較方法を解説

    Pythonのcasefold()は、文字列内の英字をすべて小文字に変換するためのメソッドです。lower()と似ていますが、より積極的な変換を行う点が特徴で、ドイツ語の「ß」が「ss」に変換されるなど、国際化対応において強力な働きをします。2つの文字列に対してcasefold()を適用すれば、大文字・小文字の違いを無視して値を一致させることができます。そのため、ユーザー入力の比較や検索処理などで非常に役立ちます。casefold()の基本的な使い方次の例では、文字列にcasefold()を適用し、すべて小文字に変換された結果を出力しています。コード例string = BestTutorial

  2. Pythonで文字列内の最初に繰り返される単語を見つける方法

    文字列が1つ与えられ、その中で最初に繰り返し出現する単語を見つけるのが本記事のテーマです。この問題を実装する際には、Pythonの標準ライブラリである「collections」モジュールを活用します。collectionsが提供するCounter()クラスを使うことで、各単語の出現回数を簡単に集計できます。 アルゴリズム 処理の手順は以下のとおりです。 与えられた文字列をスペースで区切り、単語のリストに分割します。 単語のリストをCounter(辞書形式)に変換し、各単語の出現回数を集計します。 単語のリストを先頭から順に走査し、出現回数が1より多い最初の単語を特定します。 サンプルコード