본문 바로가기

Programming/Python Tutorials

[PYTHON 3] Tutorials 34. Make words counters - 3 ( words frequency counter 만들기)

이번 시간에는 이전 시간에서 만든 Word Counter를 활용해서 Frequency Counter(빈도수 카운터) 만들어 보도록 하겠습니다. 어떤 문서를 작성할시에 특정 단어가 얼마나 자주 사용되었는지 확인하거나, 어떤 사이트에서 가장 빈도수가 높게 올라오는 어휘가 어떤 것인지 한눈에 확인할 수도 있으며, 혹은 특정(장소, 시간, 위치, 카테고리 등등)한 매개체에서 동일 단어의 사용 빈도를 추적할 때도 활용할 수 있는 Frequency Counter 코딩을 시작해 보겠습니다.

이전 시간까지 작성한 코드입니다.

확인을 위해 삽입한 print(word)를 comment 처리 하였습니다. 이전 시간에 완성한 특수문자가 제거된 온전한 단어들을 전달받는 딕셔너리 제작 함수를 호출하게 하였습니다.

상기 그림에서 호출하게 한, 딕셔너리 함수를 정의 하겠습니다. 이 딕셔너리 함수는 어떤 단어가 존재하는지, 그리고 해당 단어가 몇번이나 사용되었는지를 기록하는 딕셔너리가 되겠습니다. 

딕셔너리로 저장할 word_count를 선언합니다. 여기서는 'key','value'값을 가지게 되므로 curly bracket {} 을 사용하여야 합니다.

전달받은 각각의 단어들이 word_count 에 존재하고 있다면, 해당 단어의 frequency(빈도수)에 1만큼 더하게 하고, 만약 해당 단어가 존재하지 않는다면 그 단어를 word_count에 넣어주고 빈도수를 1로 초기화를 시키겠다는 코드입니다.

이제 딕셔너리인 word_count가 완성이 되었습니다. 이제 완성된 딕셔너리를 어떻게 보여줄지(오름차순, 내림차순, 빈도수 순서..등등)를 정하여 보겠습니다. sorted() 메서드는 첫 번째 인자로 분류할 objects를 인자로 받습니다. 여기서는 word_count가 해당되겠죠.

pycharm에서 sorted() 메서드에 어떤값이 들어가야 하는지 알려주고 있는 그림입니다.

그리고 sorted() 메서드의 두 번째 인자로는 어떤 기준으로 정렬을 할지 정하여 주는 곳입니다. 여기서 주의할 점은 반복문 for 다음에 있는 key, value의 key와 sorted()의 두 번째 인자에서 key= 의 key 값은 다른것입니다. 전자는 딕셔너리에서 key, value인 값의 key 이며, 후자는 정렬 기준을 무엇으로 할지를 묻는지의 key 값이라는 점입니다.

itemgetter()를 사용하였는데, 여기에서 itemgetter() 가 받는 값은 key, value 값입니다. 전자가 0, 후자가 1입니다. 즉 아래 그림에서 itemgetter(1)을 사용하였다는 의미는 value 값으로 정렬을 하겠다는 의미가 됩니다. 다시 말해, value 값으로 정렬을 한다는 의미는, 딕셔너리에서 빈도수(frequency)에 따라 정렬을 하게 한다는 의미입니다.

이제 정렬이 잘 되었다면 확인을 위해 key, value 값을 프린트 해 주겠습니다.

결과가 빈도수(frequency)기준으로 하였기 때문에 단어 중 python, tutorials, 3 이라는 값이 11번씩 가장 많이 사용이 되었다고 알려주고 있습니다.

만약 앞의 코드 중 itemgetter(0) 으로 사용을 한다면 단어를 기준으로 정렬을 하겠다는 의미가 됩니다. 즉 결과는 아래와 같이 단어 기준으로 정렬이 이루어지게 됩니다.

지금까지 Word Counter, Frequency Counter 만들기를 해 보았습니다. 당장 실용적인 형태로 사용하기에는 조금 무리가 있을 수 있지만, 각자의 방식으로 변형하고 개선한다면 충분히 쓰임에 부합하는 코드로 거듭날 수 있을 것입니다. 수고 하셨습니다.