Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- node.js
- React
- DATABASE
- S3
- docker
- mysql
- css
- linux
- MongoDB
- Kotlin
- sequelize
- HTML
- Android
- OS
- algorithm
- Scheduling
- TypeScript
- AWS
- Network
- Crawling
- Express
- ubuntu
- OOAD
- Util
- python
- wireshark
- macos
- mongoose
- typeorm
- postman
Archives
- Today
- Total
Seongwon Lim
[Python] Counter 클래스를 이용한 단어 빈도 세기 본문
반응형
What is Counter?
Counter 함수는 파이썬의 collections 모듈에서 제공하는 클래스이다. 파이썬에서 항목이나 개수를 셀 때 많이 사용되고 있다.
파이썬 딕셔너리를 이용해서 직접 데이터를 파싱하여 워드 카운팅을 진행할 수 있지만 Counter 클래스를 이용하면 간단하게 구현할 수 있기 때문에 훨씬 효율적이다.
Counter example
해당 사이트에서 샘플 텍스트 파일을 다운받은 뒤 공백을 기준으로 단어를 파싱하여 워드 카운팅을 진행할 예정이다. (sample3.txt 파일을 사용했다)
1. 딕셔너리로 구현한 Word Counting
with open('sample3.txt', 'r') as f:
text = f.read().split()
dic = {}
for w in text:
if not w in dic:
dic[w] = 1
else:
dic[w] += 1
result = sorted(dic.items(), key=lambda x: x[1], reverse=True)
print(result[:10])
위 코드는 공백 단위로 단어를 파싱하여 단어 출현 빈도 상위 10개를 추출하는 코드이다.
Counter 클래스를 이용하지 않고 집적 딕셔너리를 사용하여 코드를 작성하면 위와 같이 구현할 수 있다.
2. Counter 클래스를 이용한 Word Counting
from collections import Counter
with open('sample3.txt', 'r') as f:
text = f.read().split()
result = Counter(text) # 출현 빈도 카운트
most_word_10 = result.most_common(10) # 빈도 상위 10개 추출
print(result)
print(most_word_10)
Counter 클래스를 이용하여 구현한 워드 카운트 코드는 위와 같다.
파이썬으로 워드 카운트를 구현할 때 딕셔너리를 이용한 방법과 파이썬 모듈을 사용한 방법 모두 짧은 코드로 구현할 수 있지만 파이썬에서 제공하는 모듈을 활용할 줄 안다면 더욱 유용하게 프로그램을 구현할 수 있을 것이라고 생각한다.
번외 - 리눅스 쉘을 이용하여 워드 카운트 구현하기
- cat sample3.txt | tr -s '[:punct:][:space:]' '\n' | sort | uniq -c
이 한줄로 리눅스 쉘 스크립트 상에서 파일을 공백 단위로 나누어 단어 빈도 카운트를 할 수 있다. 해당 방식은 Map-Reduce의 성질을 가지고 있기 때문에 병렬화가 가능하며 빠르게 워드 카운트를 할 수 있다.
head -n 10 옵션을 통해서 맨 위에서 10개를 추출한 사진이다. 이처럼 빠르게 데이터 파싱을 할 수 있고 사용자 요구에 따라서 결과를 아웃풋으로 저장하여 활용할 수도 있다.
'Python' 카테고리의 다른 글
[Python] json.dump() 한글 깨짐 현상 해결하기 (0) | 2022.05.16 |
---|---|
[Python] datetime 모듈로 날짜 및 시간 구하기 (0) | 2022.05.15 |
[Python] 변수(Variable)란 무엇일까? (0) | 2022.05.08 |
[Python] 쿠팡 상품 정보 크롤링하고 엑셀로 저장하기 (1) | 2022.05.08 |
[Python] 네이버 Open API 파이썬 코드로 구현하여 사용하기 (0) | 2022.05.08 |
Comments