スポンサーリンク

このドキュメントの内容は、以下の通りです。

はじめに

Python で一番多く出現する単語を選ぶプログラムを書きました。スクリプト言語で、テキスト処理を書かれる方は多いのではないでしょうか。手動でやると3時間ぐらいかかるけど、自動化すれば、楽になれると思ったのは、プログラムを作る前のことで、実際には、手でやるほうが早かったという結論に至りました。しかしながら、2度、3度、ということになれば、自動化が圧倒的に優位です。

プログラムは、以下の機能を必要とします。
  • 単語の出現した回数をカウントする
  • 一番多く出現した単語を探す
1から実装しても良いのですが、いちいち実装(プログラミング)して、テストして、デバッグする時間がなかったので、簡単にできる方法を探したところ、 collections の Counter を使うと簡単だということがわかりました。

Counter入門

python で Counter を使用する例を見てみましょう。
$ python
>>> from collections import Counter
>>> c1 = Counter(['a', 'a', 'b', 'c', 'c', 'a'])
>>> c1
Counter({'a': 3, 'c': 2, 'b': 1})

この例では、Counter のインスタンスを作成するときに、初期値として単語のリスト(配列)を与えています。

1つ1つ単語を追加して、カウントアップしていく方法は以下の通りです。
>>> c2 = Counter()
>>> c2['a'] += 1
>>> c2['a'] += 1
>>> c2['b'] += 1
>>> c2['c'] += 1
>>> c2['a'] += 1
>>> c2
Counter({'a': 3, 'b': 1, 'c': 1})

出現回数が多いものを調べる方法


さて、出現回数の多い単語を調べる方法ですが most_common というメソッドを使うことで調べられます。引数に必要な個数をセットすると、個数分の配列が返ってきます。
>>> c1 = Counter(['a', 'a', 'b', 'c', 'c', 'a'])
>>> c1.most_common()
[('a', 3), ('c', 2), ('b', 1)]
>>> c1.most_common(2)
[('a', 3), ('c', 2)]
>>> c1.most_common(1)
[('a', 3)]

ここでの例は、 a が一番多いのですが、a という結果を得るためには、このような方法で取得できます。
>>> c1.most_common(1)[0][0]
'a'

もちろん出現回数も取得できます。
>>> c1.most_common(1)[0][1]
3

Counterが空であるかを確認する方法


Counter にデータが入っているかどうかを調べるには、空の辞書と比較することで確認することができます。
>>> c3 = Counter()
>>> c3 == {}
True

文字の出現回数をカウントする方法


単語ではなく、単語の文字をカウントすることもできます。
>>> c4 = Counter('abcabcaaabcz')
>>> c4
Counter({'a': 5, 'b': 3, 'c': 3, 'z': 1})
>>> c4.most_common(1)
[('a', 5)]

まとめ

  • がんばって実装しない
  • すでに実装が用意されている
  • 自動化は正義

スポンサーリンク
スポンサーリンク
 
いつもシェア、ありがとうございます!


もっと情報を探しませんか?

関連記事

最近の記事

人気のページ

はてなの人気のブックマーク

スポンサーリンク
 

過去ログ

2018 : 01 02 03 04 05 06 07 08 09 10 11 12
2017 : 01 02 03 04 05 06 07 08 09 10 11 12
2016 : 01 02 03 04 05 06 07 08 09 10 11 12
2015 : 01 02 03 04 05 06 07 08 09 10 11 12
2014 : 01 02 03 04 05 06 07 08 09 10 11 12
2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12

サイト

Vim入門

C言語入門

C++入門

JavaScript/Node.js入門

Python入門

FreeBSD入門

Ubuntu入門

セキュリティ入門

パソコン自作入門

ブログ

トップ


プライバシーポリシー