Python-주파수 분포
텍스트 처리 중에 텍스트 본문에서 단어 발생 빈도를 세는 것이 종종 필요합니다. 이것은 적용하여 얻을 수 있습니다word_tokenize() 기능을 수행하고 결과를 목록에 추가하여 아래 프로그램과 같이 단어 수를 유지합니다.
from nltk.tokenize import word_tokenize
from nltk.corpus import gutenberg
sample = gutenberg.raw("blake-poems.txt")
token = word_tokenize(sample)
wlist = []
for i in range(50):
wlist.append(token[i])
wordfreq = [wlist.count(w) for w in wlist]
print("Pairs\n" + str(zip(token, wordfreq)))
위의 프로그램을 실행하면 다음과 같은 결과가 나옵니다.
[([', 1), (Poems', 1), (by', 1), (William', 1), (Blake', 1), (1789', 1), (]', 1), (SONGS', 2), (OF', 3), (INNOCENCE', 2), (AND', 1), (OF', 3), (EXPERIENCE', 1), (and', 1), (THE', 1), (BOOK', 1), (of', 2), (THEL', 1), (SONGS', 2), (OF', 3), (INNOCENCE', 2), (INTRODUCTION', 1), (Piping', 2), (down', 1), (the', 1), (valleys', 1), (wild', 1), (,', 3), (Piping', 2), (songs', 1), (of', 2), (pleasant', 1), (glee', 1), (,', 3), (On', 1), (a', 2), (cloud', 1), (I', 1), (saw', 1), (a', 2), (child', 1), (,', 3), (And', 1), (he', 1), (laughing', 1), (said', 1), (to', 1), (me', 1), (:', 1), (``', 1)]
조건부 주파수 분포
조건부 빈도 분포는 텍스트 집합을 만족하는 특정 기준을 충족하는 단어를 계산하려는 경우에 사용됩니다.
import nltk
#from nltk.tokenize import word_tokenize
from nltk.corpus import brown
cfd = nltk.ConditionalFreqDist(
(genre, word)
for genre in brown.categories()
for word in brown.words(categories=genre))
categories = ['hobbies', 'romance','humor']
searchwords = [ 'may', 'might', 'must', 'will']
cfd.tabulate(conditions=categories, samples=searchwords)
위의 프로그램을 실행하면 다음과 같은 결과가 나옵니다.
may might must will
hobbies 131 22 83 264
romance 11 51 45 43
humor 8 8 9 13