파이썬 NLTK를 활용한 말뭉치 조사
STEP 1
NLTK 라이브러리에서 필요한 함수 읽어오기
STEP 2
##텍스트 파일 읽어오는 함수
def opener(title):
return open("/Users/Name/Downloads/"+title+".txt", "r").read()
STEP 3
## 줄바꿈 정제하기, 모든 단어 소문자로 바꾸기
def tokenize_words(title):
words = T.word_tokenize(opener(title).replace('\n', ' ').lower())
return [w for w in words if w not in S.words("english")]
STEP 4
## 말뭉치 단어 갯수 찾기
def word_count(words, title):
text = all_unique_count(title)
analyzed_text = text[text['word'].isin(words)].sort_values(by='count', ascending = False)
return analyzed_text
STEP 5
## 텍스트 데이터 정제하기 (문장부호 제거)
def clean_words(title):
return [w for w in tokenize_words(title) if w not in [".", ",", "?", "!", "-", "“", "”", "--", "’","‘" ,":", ";", "(", ")"]]
STEP 6
## 정제된 말뭉치 단어 갯수 세기
def all_unique_count (title):
words_unique = Counter(clean_words(title))
title_df = pd.DataFrame(words_unique.items()).rename(columns={0:'word', 1:'count'})
return title_df.sort_values(by='count', ascending = False)
결과 보기
셰익스피어 Sonnet 전체에서 "눈", "사랑" "너"라는 몇 번이나 쓰였을까?
놀랍게도 "너" (you)라는 단어는 한 번도 안쓰였는데
그 이유는 thy, thou, thee 의 형태로 쓰였기 때문.
가장 많이 쓰인 명사는 "사랑 (love)", "beauty (아름다움)", "time (시간)".