파이썬(Python)/문법

collections Counter 로 가장 많이 사용한 단어 찾기

끄적끄적아무거나 2020. 12. 1. 10:58
반응형

 

신문이나 책에서 가장 많이 사용된 단어를 찾고 싶을때 유용한 모듈이다.

 

collections 의 Counter는 파이썬 모듈로 입력값으로 받은 값을 카운팅해서 dictionary 형태로 해당 단어와 단어가 사용된 횟수를 알려 준다.

 

리스트를 입력값으로 넣으면 리스트내의 값을 비교해주고 string으로 입력하면 한단어를 기준으로 파악해준다.

 

아래 코드를 통해 쉽게 이해해 보자

 

import re
import collections

paragraph = "윤석열 검찰총장에 대한 징계 심의를 \
        하루 앞두고 오늘 법무부 감찰위원회가 긴급 소집됩니다.\
        윤 총장에 대한 감찰이 타당한지 등을 논의할 전망인데, \
        어떤 권고가 나올 지 주목됩니다.법무부 나가있는 취재기자 \
        연결해 자세한 내용 들어보겠습니다.이재희 기자, 법무부 감찰위원회, 언제 시작됩니까?"
words = [word for word in re.sub(r'[^\w]', ' ', paragraph).split()]
print(words)
print("#######")
counts = collections.Counter(words)
print(counts)
print("#######")
print(counts.most_common(1)[0][0])
print("#######")
counts = collections.Counter("hi my name is what?")
print(counts)
print("#######")

결과>>

['윤석열', '검찰총장에', '대한', '징계', '심의를', '하루', '앞두고', '오늘', '법무부', '감찰위원회가', '긴급', '소집됩니다', '윤', '총장에', '대한', '감찰이', '타당한지', '등을', '논의할', '전망인데', '어떤', '권고가', '나올', '지', '주목됩니다', '법무부', '나가있는', '취재기자', '연결해', '자세한', '내용', '들어보겠습니다', '이재희', '기자', '법무부', '감찰위원회', '언제', '시작됩니까']
#######
Counter({'법무부': 3, '대한': 2, '윤석열': 1, '검찰총장에': 1, '징계': 1, '심의를': 1, '하루': 1, '앞두고': 1, '오늘': 1, '감찰위원회가': 1, '긴급': 1, '소집됩니다': 1, '윤': 1, '총장에': 1, '감찰이': 1, '타당한지': 1, '등을': 1, '논의할': 1, '전망인데': 1, '어떤': 1, '권고가': 1, '나올': 1, '지': 1, '주목됩니다': 1, '나가있는': 1, '취재기자': 1, '연결해': 1, '자세한': 1, '내용': 1, '들어보겠습니다': 1, '이재희': 1, '기자': 1, '감찰위원회': 1, ' 
언제': 1, '시작됩니까': 1})
#######
법무부
#######
Counter({' ': 4, 'h': 2, 'i': 2, 'm': 2, 'a': 2, 'y': 1, 'n': 1, 'e': 1, 's': 1, 'w': 1, 't': 1, '?': 1})
#######

 

words = [word for word in re.sub(r'[^\w]', ' ', paragraph).split()]

re.sub 은 정규식에서 \w(단어를 의미) 단어가 아닌 것은 한칸 띄운 공백으로 바꾸겠다는 의미이고 split()은 default로 공객을 기준으로 나눠주는 것이다.

 

반응형