본문 바로가기

About/Python

[Python] Counter (단어 개수 세기)

Counter

  • Sequence Type의 Data element들의 개수를 dict 형태로 반환하는 객체
  • collections로 부터 import 하여 사용
from collections import Counter

 

  • 컨테이너에 동일한 값이 몇 개있는지 쉽게 파악할 수 있다.
from collections import Counter

c = Counter()
c = Counter('CocaCola')

print(c)

 

문자열을 이용한 Counter()

  • Dict type, keyword parameter 등 모두 처리 가능하다.
  • dict를 이용하여 단어들의 개수를 지정하여 원하는 단어를 원하는 개수만큼 가지는 리스트를 생성할 수 있다.
from collections import Counter

d = {'red' : 4 , 'blue' : 2 } 
c = Counter(d) # dict를 이용하여 Couter 생성

print(c)
print(list(c.elements()))

dict를 이용한 Counter()

 

from collections import Counter

c = Counter(cats=4, dogs=8) # Keyword Argument를 이용하여 Counter 생성

print(c)
print(list(c.elements()))

 

Key word Argument를 이용한 Counter()

 

  • Set의 연산들을 지원한다.
from collections import Counter

c = Counter(a=4, b=3, c=2, d=1)
d = Counter(a=1, b=1, c=1, d=1)

c.subtract(d) # c - d
print(c)

 

Counter 객체의 substact()

c의 element에서 d의 element들이 빼진 값을 확인할 수 있다.

 

from collections import Counter

c = Counter(a=4, b=3, c=2, d=1)
d = Counter(a=1, b=1, c=1, d=1)

print(c + d)
print(c & d)
print(c | d)

Counter()의 다양한 연산

 

Counter를 이용한 단어 개수 세기

저번에는 defaultdict를 이용하여 단어 개수를 세어봤는데

Counter를 이용하여 word counter를 쉽게 할 수 있다.

 

 

from collections import Counter

text =  """A press release is the quickest and easiest way to get free publicity. If well written, a press release can result in multiple published articles about your firm and its products. And that can mean new prospects contacting you asking you to sell to them. Talk about low-hanging fruit! What's more, press releases are cost effective. If the release results in an article that (for instance) appears to recommend your firm or your product, that article is more likely to drive prospects to contact you than a comparable paid advertisement.However, most press releases never accomplish that. Most press releases are just spray and pray. Nobody reads them, least of all the reporters and editors for whom they're intended. Worst case, a badly-written press release
simply makes your firm look clueless and stupid.""".lower().split()

word_counter = Counter(text)
print(word_counter)
print("'press'의 개수 : "+str(word_counter['press']))

저번과 같이 영어문장을 준비하여 모두 소문자로 변환하여 빈 칸을 기준으로 분리한다.

그 후 해당 리스트로 Counter 객체를 생성하면 쉽게 단어 개수를 파악할 수 있다.

 

원하는 단어의 개수를 알고 싶은 경우 word_conter[단어명]으로 참조하면된다.


Counter 객체를 알아보고 간단하게 단어 개수 파악 예제를 해보았다.