필요한 모듈을 임포트 합니다.
In [1]:
import re
import random
import json
jungle-book.txt 파일을 임포트 하고 한 라인씩 읽어서 단어를 잘라냅니다. 단어를 소문자로 바꾼 후 hist 딕셔너리에 키로 등록하고 단어가 나타난 빈도를 증가시켜서 저장합니다.
In [2]:
hist = {}
with open('jungle-book.txt') as f:
for line in f.readlines():
lines = re.findall('[a-zA-Z0-9]+', line)
for word in lines:
word = word.lower()
hist[word] = hist.get(word, 0) + 1
histogram.txt 파일에 json 문자열로 변환하여 저장합니다.
In [3]:
with open('histogram.txt', 'w') as f:
json.dump(hist, f)
hist 딕셔너리의 전체 키의 갯수를 출력합니다.
In [4]:
len(hist)
Out[4]:
단어가 나타난 빈도를 모두 더합니다.
In [5]:
sum(hist.values())
Out[5]:
가장 많이 나타난 단어를 추출하기 위해 빈도와 단어를 튜플로 만들어 리스트에 저장하고 리스트의 sort 메소드를 사용하여 최상위 10개만을 추려냅니다. 튜플이나 리스트는 엘리먼트를 순서대로 비교하여 대소를 구분합니다.
In [6]:
t = []
for word in hist:
t.append((hist[word], word))
t.sort(reverse=True)
t[:10]
Out[6]:
단어가 나타난 빈도에 비례하여 랜덤하게 단어를 추출하기 위하여 단어를 빈도만큼 생성하여 새로운 리스트에 추가한 후 그 리스트에서 랜덤하게 하나를 추출합니다.
In [7]:
rnd_word = []
for word in hist:
rnd_word.extend([word] * hist[word])
print(len(rnd_word))
random.choice(rnd_word)
Out[7]:
In [ ]: