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

Pythonでデータセットから最も頻出する単語を簡単に抽出する方法

テキストデータの中から「最も多く使われている単語トップ10」のように、頻出単語を調べたい場面は少なくありません。Pythonでは標準ライブラリの collections モジュールに含まれる Counter クラスを使うことで、この処理をわずか数行のコードで実現できます。

Counterクラスとmost_common()メソッドとは

Counter クラスは、リストなどのイテラブルなオブジェクトを受け取り、各要素の出現回数を自動的に集計してくれる便利なクラスです。さらに、most_common() メソッドを組み合わせれば、「出現回数が多い順に上位k件」の要素を簡単に取得できます。

サンプルコード

以下の例では、英文の段落から split() を使って単語のリストを作成し、Counter() で各単語の出現回数を数え、最後に most_common() で頻出順に上位3件を表示しています。

from collections import Counter

word_set = " This is a series of strings to count " \
    "many words . They sometime hurt and words sometime inspire "\
    "Also sometime fewer words convey more meaning than a bag of words "\
    "Be careful what you speak or what you write or even what you think of. "

# 文字列からすべての単語のリストを作成
word_list = word_set.split()

# 各単語の出現回数を取得
word_count = Counter(word_list)

# Counterサブクラスのmost_common()メソッドを使用
print(word_count.most_common(3))

実行結果

上記のコードを実行すると、次のような結果が出力されます。

[('words', 4), ('sometime', 3), ('what', 3)]

結果の読み方

この出力は、「words」が4回、「sometime」と「what」がそれぞれ3回出現したことを意味しています。most_common() の引数に渡す数値を変更すれば、取得する単語の件数を自由に調整できます。例えば most_common(10) と指定すれば、頻出上位10個の単語を一覧形式で取得できます。

まとめ

collectionsモジュールのCounterクラスを活用すれば、複雑な辞書操作やループ処理を自前で書く必要がなく、頻出単語の集計をシンプルに実装できます。ログ解析や文章分析など、さまざまなテキスト処理の場面で役立つテクニックなので、ぜひ覚えておきましょう。

  1. 【Python入門】2つの文字列から珍しい単語(ユニークな単語)を見つけるプログラムの作り方

    はじめに この記事では、以下の問題文に対する解決方法を、実際のコード例とともにわかりやすく解説します。 問題文 2つの文字列が与えられたとき、その中から「珍しい単語」(どちらか一方の文字列にしか出現しない単語)をすべて抽出することを目標とします。両方の文字列に共通して含まれる単語は除外します。 解決のアプローチ ここでは辞書(dict)を使った出現回数のカウント方式を採用します。手順は次のとおりです。 空の辞書を用意する 各文字列をsplit()で単語ごとに分割する 各単語の出現回数を辞書に記録する 出現回数がちょうど1回の単語だけを結果として返す 実装例 # 珍しい単語を見つける関

  2. 【Python】セットから要素を削除するプログラム:pop()メソッドの使い方

    「集合(セット)」という言葉は、数学の世界でもおなじみですね。Pythonにおけるセットは、数学の集合に相当するデータ構造です。セットにはさまざまな要素を格納でき、要素の順序は定義されません(順序を持たないコレクションです)。セットでは要素の追加や削除が自由に行え、要素の反復処理のほか、和集合・積集合・差集合といった標準的な集合演算も実行できます。この記事では、セットから要素を削除する方法を解説します。ここでは pop() メソッドを使用します。pop() はPythonの組み込みメソッドで、セットから要素を1つずつ取り出しながら削除していくために使われます。実行例NEW SET IS ::&