한글 자연어 처리(1) - Konlpy 기본 알아가기

학습 내용

  • 자연처 처리(NLP-Natural Language Processing)에 대해 알아보기
  • 응용 사례에 대해 알아보기
  • KoNLPY를 이용한 명사 추출 후, 불용어 처리하기 빈도 분석하기
  • 추출된 내용을 워드 클라우드를 이용하여 시각화 해보기
In [39]:
from IPython.display import display, Image
# display(Image(filename='MyImage.png'))

시작하기에 앞서

NLP(Natural Language Processing)란 무엇인가요?

  • 자연어 처리는 컴퓨터과학과 정보공학및 인공 지능의 하위분야이다.
  • 사람이 작성한 언어, 즉 텍스트를 처리하는 기술
  • 컴퓨터와 인간(자연)언어 간의 상호 작용, 특히 대량의 자연 언어 데이터를 처리하고 분석한다.
  • 컴퓨터 프로그래밍하는 방법과 관련있다. (위키 참조-Eng)

어떤 응용 사례가 있나요?

정보 검색

  • 구글이나 네이버와 같이 사용자가 입력한 용어나 문장에 대해 가장 유사한 문서를 찾아 순위를 매겨 사용자에게 제시.
  • 기업에서는 주로 기업이 보유한 지식이나 자료, 기존에 작성된 보고서 등에서 업무와 관련된 문서를 찾아 빠르게 업무에 활용할 수 있도록 함.

정보에서 원하는 정보 찾기

  • 개체명 추출(Named Entity Extraction) : 문장 내에서 사람, 위치, 날짜, 조직명, 직업 같은 사전에 정의된 분류의 단어을 찾는다.
    • 기사 내에 특정 기업이 포함되어 있는가?
    • 특정 유명인의 내용이 포함되어 있는가?
    • 신약 개발을 위한 방대한 분량의 논문을 대상으로 화합물질, 증상, 효농 등을 추출하여 문서 내에서 연관성을 분석.
    • 최근 특정 증상에 많이 활용되는 신약 물질에 대한 트렌드 분석
    • 일별로 새로 작성되는 뉴스에서 가장 핫한 용어를 찾기.(뉴스와 기술 관심사의 트렌드 분석)

기계 번역 - Googld Translate

  • 연구 목적의 다양한 자료 검토
  • 뉴스를 보고 국제 정세 파악
  • 냉전 시대의 적국의 상황 정보 파악
  • 통계적 기계 번역에서 딥러닝을 활용한 신경망 기반 기계 번역으로

대화 시스템 - 애플 Siri

  • 챗봇, 음성 인식 분야 등에 적극 활용.
  • 챗봇을 통해 상담원의 단순 업무, 대기 업무의 최소화 (365일 24시간 체제로 대응)
  • 예) 애플 Siri, 자동 질의 응답 시스템(WolframAlpha)

감정 분석(Sentiment Analysis)

  • 텍스트 문장 내에서 긍정 및 부정의 문맥을 판별해 내기(긍정, 부정, 중립)
  • 특정 상품이나 기업에 대해 어떤 뉴스 기사가 많이 작성되고 있는가 분석.

단어 및 문장 분류

  • 분류(classificatoin) : 글을 산업별, 업무별로 분류해서 정리.(추후 검색과 분석 단계에 매우 큰 도움)
  • 컨택 센터에서 받은 고객 콜에 대해 업무 분류하기. (음성 통화 후, 음성 인식을 통해 텍스트로 전환하여 저장)

품사 태깅 및 구문 분석

  • 품사 태깅(Pos Tagging, Part-of-Speech Tagging)은 문장 내에서 단어의 품사를 찾아내 태그를 달아주기.
  • 구문 분석(Syntactic Analysis) : 문장을 잘 이해하기 위해 문장을 트리 형태로 구성하여 주절과 종속절을 구분.

음성 인식(Speech Recognition)

  • 음성 신호 정보를 음소 단위로 해석하는 음성 모델(Accoustic Model)단의 처리를 끝내고 이후 언어 모델(Language Model)단에서 음소를 단어로, 단어들을 문장으로 구성. 음성 신호 특정 정보를 입력하고 바로 문장을 예측하는 딥러닝 기반의 방식으로 진화하고 있음.
In [40]:
display(Image(filename='img/today_weather.png'))

자연어 처리 방법

  • 워드투벡(word to vector)의 딥러닝 모델

텍스트 전처리

  • 텍스트를 분석하거나 활용하기 전에 필요한 전처리(preprocessing)
  • 전처리란 텍스트 성능을 높이기 위한 잡음이나 불규칙한 내용을 정제하는 과정 - 이를 통해 자연어 처리의 정확도를 높일 수 있음.

단계별 살펴보기

  • 불용어 제거 : 문장의 단어 중에 큰 의미를 가지지 않는 것을 제거. 불용어가 포함되어 있으면 모델 학습시 잡음으로 영향을 미침.
  • 공백 교정 : 토큰을 추출하는 가장 쉬운 방법. 공백을 기준으로 추출하는 공백 교정(Space Correction)
  • 문장 분리(Sentence Split) : 규칙 기반으로 처리, NLTK나 오픈소스로 제공하는 한글 토크나이저를 이용.

텍스트의 벡터화

  • 단어 사전 : 문서나 문장내에서 사용되는 모든 단어를 목록화하고 각 단어에 인덱스를 부여하여 숫자를 할당하여 단어 사전 생성.
  • N-gram : 통계와 확률을 바탕으로 한 색인 분석에 널리 사용되는 방식. 입력한 문자열을 N개의 기준 단위로 절단하는 방법.
  • Bag-of-words(BOW)
  • TF-IDF(Term Frequency Inverse Document Frequency) : 단어 빈도-역문서 빈도

한글 자연어 처리

  • 형태소 분석 -> 구문 분석 -> 의미분석 -> 화용분석
    • 형태소 분석(Morphological Analysis) : 입력된 문자열을 분석하여 형태소(의미를 갖는 최소단위)로 쪼개는 것.
    • 구문분석(Syntax Analysis) : 문장을 구조적 상태로 분석하는 것.(주절과 종속절, 주어와 동사 등의 구성 해석)
    • 의미분석(Semantic Analysis) : 구문 분석 단계에서의 의미적 모호함을 각 어절의 정보를 이용하여 해소하고 의미 구조를 설정.
    • 화용분석(Pramatic Analysis) : 문장이 실세계에서 가지는 연관관계를 분석

한글 형태소 분석기

  • 한나눔(Hannanum) : 카이스트에서 개발한 형태소 분석기. 형태소 분석 및 품사 태깅 기능

  • 꼬꼬마(Kkma) : 서울 대학교에서 개발한 형태소 분석기. 자바 기반 개발. 문장 분리기 제공.

  • 코모란(Komoran) : 샤인웨어(Shinware)에서 개발한 자바 기반 형태소 분석기. 아파치 라이선스 2.0

  • 은전한잎(mecab-ko) : 일본어 형태소 분석기. 한글 지원, C++언어로 개발됨. 처리 성능이나 속도에서 좋음.

  • 트위터(Twitter) : 트위터에서 소셜 분석을 위해 개발한 형태소 분석기. 소셜 분석 대상이므로 비형식어나 신조등을 잘 찾아냄. 처리 속도가 빨라 실시간 처리 등에 활용. 2017년 이후 Open-Korean-Text라는 이름으로 운영.

  • 여러개의 형태소 분석기를 모아둔 하나의 인터페이스가 없을까?

    • Konlpy(코엔엘파이), KoalaNLP(코알라엔엘피)
    • 두개 모두 파이썬 지원

1-1 Konlpy 시작하기

In [5]:
import nltk
import matplotlib.pyplot as plt
import platform
import numpy as np

꼬꼬마를 이용한 분석

  • 꼬꼬마 모듈을 이용하여 문장 분석을 수행해 봄.
  • 2개의 문장으로 분석을 수행함.
In [7]:
from konlpy.tag import Kkma
kkma = Kkma()

kkma.sentences("안녕하세요! 오늘은 한글 분석을 시작합니다.")
Out[7]:
['안녕하세요!', '오늘은 한글 분석을 시작합니다.']

명사(nouns) 추출

In [8]:
kkma.nouns("안녕하세요! 오늘은 한글 분석을 시작합니다.")
Out[8]:
['안녕', '오늘', '한글', '분석']

형태소 분석

In [9]:
kkma.pos("안녕하세요! 오늘은 한글 분석을 시작합니다.")
Out[9]:
[('안녕', 'NNG'),
 ('하', 'XSV'),
 ('세요', 'EFN'),
 ('!', 'SF'),
 ('오늘', 'NNG'),
 ('은', 'JX'),
 ('한글', 'NNG'),
 ('분석', 'NNG'),
 ('을', 'JKO'),
 ('시작하', 'VV'),
 ('ㅂ니다', 'EFN'),
 ('.', 'SF')]

한나눔 한글 엔진 사용해 보기

In [10]:
from konlpy.tag import Hannanum
hannanum = Hannanum()

hannanum.nouns("안녕하세요! 오늘은 한글어 분석을 시작합니다")
Out[10]:
['안녕', '오늘', '한글어', '분석', '시작']

트위터 - Okt 클래스

  • morphs(phrase, norm=False, stem=False) => 형태소 분석
  • nouns(phrase) => 명사 추출
  • phrases(phrase) => 구문 추출
In [11]:
# from konlpy.tag import Kkma
# kkma = Kkma()
from konlpy.tag import Okt
import nltk
okt = Okt()
In [12]:
print(okt.morphs(u'단독입찰보다 복수입찰의 경우'))
['단독', '입찰', '보다', '복수', '입찰', '의', '경우']
In [13]:
print(okt.nouns(u'유일하게 항공기 체계 종합개발 경험을 갖고 있는 KAI는'))
['항공기', '체계', '종합', '개발', '경험']
In [14]:
print(okt.phrases(u'오늘은 좋은날이다. 날씨도 좋고, 좋은 일도 생기고, 감사하다'))
['오늘', '좋은날', '날씨', '좋은 일도', '좋은 일도 생기', '일도', '생기']
In [15]:
print(okt.pos(u'이런것도 될까요?'))
[('이런', 'Modifier'), ('것', 'Noun'), ('도', 'Josa'), ('될까', 'Verb'), ('요', 'Noun'), ('?', 'Punctuation')]

wordCloud 를 활용한 시각화

  • https://github.com/amueller/word_cloud
    • wordcloud 라이브러리는 MIT 라이선스가 있음.
    • 글꼴을 절대로 완전한 것이 아니므로 WordCloud 객체를 만들 때, font_path 변수를 이용하여 다른 글꼴 설정 가능
In [16]:
from wordcloud import WordCloud, STOPWORDS

import numpy as np
from PIL import Image
In [17]:
text = open('data/alice.txt').read()
alice_mask = np.array(Image.open("img/alice_color.png"))

stopwords =set(STOPWORDS)  # 불용어 처리
stopwords.add("said")      # 불용어 추가

1-1-1 한글 폰트 설정

콜랩 환경
%matplotlib inline
import matplotlib as mpl # 기본 설정 만지는 용도
import matplotlib.pyplot as plt # 그래프 그리는 용도
import matplotlib.font_manager as fm # 폰트 관련 용도

### 나눔 고딕 설치  
!apt-get update -qq # 설치를 업데이트   -qq  : 로그를 최소한으로
!apt-get install fonts-nanum* -qq # 설치한다. fonts-nanum*   =>  ttf-nanum, ttf-nanum-coding, ttf-nanum-extra ]

path = '/usr/share/fonts/truetype/nanum/NanumGothicEco.ttf' # 설치된 나눔글꼴중 원하는 녀석의 전체
font_name = fm.FontProperties(fname=path, size=10).get_name()
print(font_name)
plt.rc('font', family=font_name)

# 우선 fm._rebuild() 를 해주고 # 폰트 매니저 재빌드가 필요하다.
fm._rebuild()
In [19]:
### 한글 폰트 설정
from matplotlib import font_manager, rc
import matplotlib.pyplot as plt
import platform

path = "C:/Windows/Fonts/malgun.ttf"
if platform.system() == "Windows":
    font_name = font_manager.FontProperties(fname=path).get_name()
    rc('font', family=font_name)
elif platform.system()=="Darwin":
    rc('font', family='AppleGothic')
else:
    print("Unknown System")

앨리스 데이터 워드 클라우드

In [20]:
wc = WordCloud(background_color="white", max_words=2000, mask=alice_mask,
stopwords=stopwords, contour_width=3, contour_color='steelblue')

# generate word cloud
wc.generate(text)
wc.words_
Out[20]:
{'Alice': 1.0,
 'little': 0.2958904109589041,
 'one': 0.2602739726027397,
 'know': 0.2465753424657534,
 'went': 0.2273972602739726,
 'thing': 0.2191780821917808,
 'time': 0.21095890410958903,
 'Queen': 0.20821917808219179,
 'see': 0.18356164383561643,
 'King': 0.17534246575342466,
 'now': 0.1643835616438356,
 'began': 0.1589041095890411,
 'way': 0.15616438356164383,
 'Hatter': 0.15616438356164383,
 'head': 0.15342465753424658,
 'Mock Turtle': 0.15342465753424658,
 'say': 0.1506849315068493,
 'Gryphon': 0.1506849315068493,
 'well': 0.14794520547945206,
 'think': 0.14520547945205478,
 'quite': 0.14246575342465753,
 'much': 0.13972602739726028,
 'first': 0.13972602739726028,
 'go': 0.136986301369863,
 'thought': 0.13424657534246576,
 'come': 0.13150684931506848,
 'never': 0.12876712328767123,
 'voice': 0.12602739726027398,
 'looked': 0.1232876712328767,
 'got': 0.1232876712328767,
 'must': 0.12054794520547946,
 'Cat': 0.12054794520547946,
 'Mouse': 0.12054794520547946,
 'Duchess': 0.11506849315068493,
 'round': 0.11232876712328767,
 'back': 0.1095890410958904,
 'Dormouse': 0.1095890410958904,
 'make': 0.10410958904109589,
 'tone': 0.10136986301369863,
 'eye': 0.09863013698630137,
 'Oh': 0.0958904109589041,
 'came': 0.0958904109589041,
 'last': 0.09315068493150686,
 'nothing': 0.09315068493150686,
 'tell': 0.09315068493150686,
 'day': 0.09041095890410959,
 'large': 0.09041095890410959,
 'great': 0.09041095890410959,
 'hand': 0.09041095890410959,
 'found': 0.08767123287671233,
 'long': 0.08767123287671233,
 'door': 0.08767123287671233,
 'looking': 0.08767123287671233,
 'word': 0.08493150684931507,
 'March Hare': 0.08493150684931507,
 'made': 0.0821917808219178,
 'heard': 0.0821917808219178,
 'look': 0.07945205479452055,
 'replied': 0.07945205479452055,
 'put': 0.07671232876712329,
 'two': 0.07671232876712329,
 'Caterpillar': 0.07671232876712329,
 'seemed': 0.07397260273972603,
 'going': 0.07397260273972603,
 'right': 0.07397260273972603,
 'thought Alice': 0.07397260273972603,
 'away': 0.07123287671232877,
 'without': 0.07123287671232877,
 'moment': 0.07123287671232877,
 'course': 0.07123287671232877,
 'Rabbit': 0.0684931506849315,
 'next': 0.0684931506849315,
 'rather': 0.0684931506849315,
 'soon': 0.0684931506849315,
 'yet': 0.0684931506849315,
 'take': 0.06575342465753424,
 'sure': 0.06575342465753424,
 'sort': 0.06301369863013699,
 'felt': 0.06301369863013699,
 'added': 0.06301369863013699,
 'getting': 0.06027397260273973,
 'dear': 0.06027397260273973,
 'three': 0.06027397260273973,
 'find': 0.06027397260273973,
 'White Rabbit': 0.06027397260273973,
 'took': 0.057534246575342465,
 'upon': 0.057534246575342465,
 'wish': 0.057534246575342465,
 'question': 0.057534246575342465,
 'till': 0.057534246575342465,
 'arm': 0.057534246575342465,
 'use': 0.0547945205479452,
 'anything': 0.0547945205479452,
 'end': 0.0547945205479452,
 'good': 0.0547945205479452,
 'half': 0.0547945205479452,
 'face': 0.0547945205479452,
 'cried': 0.0547945205479452,
 'minute': 0.0547945205479452,
 'tried': 0.052054794520547946,
 'even': 0.052054794520547946,
 'house': 0.052054794520547946,
 'tea': 0.052054794520547946,
 'might': 0.052054794520547946,
 'curious': 0.052054794520547946,
 'wonder': 0.049315068493150684,
 'table': 0.049315068493150684,
 'enough': 0.049315068493150684,
 'something': 0.049315068493150684,
 'jury': 0.049315068493150684,
 'another': 0.04657534246575343,
 'Let': 0.04657534246575343,
 'spoke': 0.04657534246575343,
 'perhaps': 0.04657534246575343,
 'talking': 0.04657534246575343,
 'begin': 0.04657534246575343,
 'sat': 0.04657534246575343,
 'asked': 0.04657534246575343,
 'Bill': 0.04657534246575343,
 'ran': 0.043835616438356165,
 'air': 0.043835616438356165,
 'bit': 0.043835616438356165,
 'turned': 0.043835616438356165,
 'garden': 0.043835616438356165,
 'indeed': 0.043835616438356165,
 'hastily': 0.043835616438356165,
 'seen': 0.0410958904109589,
 'idea': 0.0410958904109589,
 'eat': 0.0410958904109589,
 'saying': 0.0410958904109589,
 'low': 0.0410958904109589,
 'side': 0.0410958904109589,
 'leave': 0.0410958904109589,
 'gave': 0.0410958904109589,
 'speak': 0.0410958904109589,
 'done': 0.0410958904109589,
 'called': 0.0410958904109589,
 'mean': 0.0410958904109589,
 'mad': 0.0410958904109589,
 'court': 0.0410958904109589,
 'may': 0.038356164383561646,
 'beginning': 0.038356164383561646,
 'hear': 0.038356164383561646,
 'feet': 0.038356164383561646,
 'saw': 0.038356164383561646,
 'please': 0.038356164383561646,
 'remember': 0.038356164383561646,
 'trying': 0.038356164383561646,
 'certainly': 0.038356164383561646,
 'game': 0.038356164383561646,
 'left': 0.038356164383561646,
 'anxiously': 0.038356164383561646,
 'everything': 0.038356164383561646,
 'knew': 0.038356164383561646,
 'sea': 0.038356164383561646,
 'suppose': 0.038356164383561646,
 'talk': 0.038356164383561646,
 'us': 0.038356164383561646,
 'Ye': 0.038356164383561646,
 'turn': 0.038356164383561646,
 'baby': 0.038356164383561646,
 'creature': 0.038356164383561646,
 'book': 0.03561643835616438,
 'suddenly': 0.03561643835616438,
 'close': 0.03561643835616438,
 'happen': 0.03561643835616438,
 'still': 0.03561643835616438,
 'seem': 0.03561643835616438,
 'people': 0.03561643835616438,
 'behind': 0.03561643835616438,
 'really': 0.03561643835616438,
 'will': 0.03561643835616438,
 'grow': 0.03561643835616438,
 'far': 0.03561643835616438,
 'kept': 0.03561643835616438,
 'used': 0.03561643835616438,
 'lesson': 0.03561643835616438,
 'always': 0.03561643835616438,
 'Dodo': 0.03561643835616438,
 'whole': 0.03561643835616438,
 'better': 0.03561643835616438,
 'room': 0.03561643835616438,
 'gone': 0.03561643835616438,
 'remark': 0.03561643835616438,
 'cook': 0.03561643835616438,
 'CHAPTER': 0.03287671232876712,
 'many': 0.03287671232876712,
 'near': 0.03287671232876712,
 'among': 0.03287671232876712,
 'name': 0.03287671232876712,
 'Dinah': 0.03287671232876712,
 'afraid': 0.03287671232876712,
 'every': 0.03287671232876712,
 'finished': 0.03287671232876712,
 'best': 0.03287671232876712,
 'hardly': 0.03287671232876712,
 'life': 0.03287671232876712,
 'queer': 0.03287671232876712,
 'try': 0.03287671232876712,
 'tail': 0.03287671232876712,
 'live': 0.03287671232876712,
 'change': 0.03287671232876712,
 'turning': 0.03287671232876712,
 'bird': 0.03287671232876712,
 'serpent': 0.03287671232876712,
 'Pigeon': 0.03287671232876712,
 'tree': 0.03287671232876712,
 'minute two': 0.03287671232876712,
 'sister': 0.030136986301369864,
 'conversation': 0.030136986301369864,
 'mind': 0.030136986301369864,
 'whether': 0.030136986301369864,
 'hurried': 0.030136986301369864,
 'though': 0.030136986301369864,
 'glad': 0.030136986301369864,
 'ask': 0.030136986301369864,
 'matter': 0.030136986301369864,
 'read': 0.030136986301369864,
 'waited': 0.030136986301369864,
 'tears': 0.030136986301369864,
 'child': 0.030136986301369864,
 'growing': 0.030136986301369864,
 'pool': 0.030136986301369864,
 'want': 0.030136986301369864,
 'thinking': 0.030136986301369864,
 'nearly': 0.030136986301369864,
 'silence': 0.030136986301369864,
 'trial': 0.030136986301369864,
 'slate': 0.030136986301369864,
 'keep': 0.030136986301369864,
 'pig': 0.030136986301369864,
 'Footman': 0.030136986301369864,
 'ear': 0.030136986301369864,
 'soldier': 0.030136986301369864,
 'poor Alice': 0.030136986301369864,
 'give': 0.0273972602739726,
 'sitting': 0.0273972602739726,
 'either': 0.0273972602739726,
 'answer': 0.0273972602739726,
 'sight': 0.0273972602739726,
 'walked': 0.0273972602739726,
 'small': 0.0273972602739726,
 'opened': 0.0273972602739726,
 'bottle': 0.0273972602739726,
 'children': 0.0273972602739726,
 'foot': 0.0273972602739726,
 'mine': 0.0273972602739726,
 'party': 0.0273972602739726,
 'explain': 0.0273972602739726,
 'rest': 0.0273972602739726,
 'reason': 0.0273972602739726,
 'place': 0.0273972602739726,
 'mouth': 0.0273972602739726,
 'repeated': 0.0273972602739726,
 'remarked': 0.0273972602739726,
 'Soup': 0.0273972602739726,
 'hedgehog': 0.0273972602739726,
 'lobster': 0.0273972602739726,
 'Oh dear': 0.0273972602739726,
 'coming': 0.024657534246575342,
 'top': 0.024657534246575342,
 'hall': 0.024657534246575342,
 'rate': 0.024657534246575342,
 'waiting': 0.024657534246575342,
 'feeling': 0.024657534246575342,
 'size': 0.024657534246575342,
 'help': 0.024657534246575342,
 'different': 0.024657534246575342,
 'sit': 0.024657534246575342,
 'old': 0.024657534246575342,
 'continued': 0.024657534246575342,
 'believe': 0.024657534246575342,
 'piece': 0.024657534246575342,
 'call': 0.024657534246575342,
 'angrily': 0.024657534246575342,
 'least': 0.024657534246575342,
 'together': 0.024657534246575342,
 'shouted': 0.024657534246575342,
 'timidly': 0.024657534246575342,
 'puzzled': 0.024657534246575342,
 'interrupted': 0.024657534246575342,
 'moral': 0.024657534246575342,
 'poor little': 0.024657534246575342,
 'might well': 0.024657534246575342,
 'join dance': 0.024657534246575342,
 'feel': 0.021917808219178082,
 'making': 0.021917808219178082,
 'watch': 0.021917808219178082,
 'slowly': 0.021917808219178082,
 'noticed': 0.021917808219178082,
 'four': 0.021917808219178082,
 'opportunity': 0.021917808219178082,
 'distance': 0.021917808219178082,
 "it'll": 0.021917808219178082,
 'sound': 0.021917808219178082,
 'dry': 0.021917808219178082,
 'bright': 0.021917808219178082,
 'fact': 0.021917808219178082,
 'tart': 0.021917808219178082,
 'followed': 0.021917808219178082,
 'lying': 0.021917808219178082,
 'set': 0.021917808219178082,
 'ready': 0.021917808219178082,
 'hard': 0.021917808219178082,
 'changed': 0.021917808219178082,
 'Five': 0.021917808219178082,
 'eagerly': 0.021917808219178082,
 'meaning': 0.021917808219178082,
 'running': 0.021917808219178082,
 'everybody': 0.021917808219178082,
 'exactly': 0.021917808219178082,
 'nobody': 0.021917808219178082,
 'direction': 0.021917808219178082,
 'window': 0.021917808219178082,
 'appeared': 0.021917808219178082,
 'wood': 0.021917808219178082,
 'mushroom': 0.021917808219178082,
 'pepper': 0.021917808219178082,
 'fish': 0.021917808219178082,
 'verse': 0.021917808219178082,
 'shoulder': 0.021917808219178082,
 'rule': 0.021917808219178082,
 'whiting': 0.021917808219178082,
 'beautiful Soup': 0.021917808219178082,
 'almost': 0.019178082191780823,
 'English': 0.019178082191780823,
 'tired': 0.019178082191780823,
 'hot': 0.019178082191780823,
 'world': 0.019178082191780823,
 'deep': 0.019178082191780823,
 'somebody': 0.019178082191780823,
 'fall': 0.019178082191780823,
 'listen': 0.019178082191780823,
 'fancy': 0.019178082191780823,
 'manage': 0.019178082191780823,
 'begun': 0.019178082191780823,
 'dream': 0.019178082191780823,
 'middle': 0.019178082191780823,
 'wondering': 0.019178082191780823,
 'glass': 0.019178082191780823,
 'open': 0.019178082191780823,
 'high': 0.019178082191780823,
 'larger': 0.019178082191780823,
 'poor': 0.019178082191780823,
 'happened': 0.019178082191780823,
 'neck': 0.019178082191780823,
 'drink': 0.019178082191780823,
 'hold': 0.019178082191780823,
 'generally': 0.019178082191780823,
 'surprised': 0.019178082191780823,
 'kind': 0.019178082191780823,
 'nonsense': 0.019178082191780823,
 'fan': 0.019178082191780823,
 'hair': 0.019178082191780823,
 'goes': 0.019178082191780823,
 'repeat': 0.019178082191780823,
 'grin': 0.019178082191780823,
 'learn': 0.019178082191780823,
 'frightened': 0.019178082191780823,
 'chin': 0.019178082191780823,
 'history': 0.019178082191780823,
 'fetch': 0.019178082191780823,
 'Lory': 0.019178082191780823,
 'important': 0.019178082191780823,
 'others': 0.019178082191780823,
 'chimney': 0.019178082191780823,
 'grown': 0.019178082191780823,
 'business': 0.019178082191780823,
 'puppy': 0.019178082191780823,
 'paw': 0.019178082191780823,
 'nose': 0.019178082191780823,
 'silent': 0.019178082191780823,
 'pleased': 0.019178082191780823,
 'song': 0.019178082191780823,
 'treacle': 0.019178082191780823,
 'Heart': 0.019178082191780823,
 'good deal': 0.019178082191780823,
 'Soo oop': 0.019178082191780823,
 'Adventures': 0.01643835616438356,
 'stupid': 0.01643835616438356,
 'trouble': 0.01643835616438356,
 'late': 0.01643835616438356,
 'fell': 0.01643835616438356,
 'nice': 0.01643835616438356,
 'written': 0.01643835616438356,
 'jumped': 0.01643835616438356,
 'roof': 0.01643835616438356,
 'along': 0.01643835616438356,
 'forgotten': 0.01643835616438356,
 'ten': 0.01643835616438356,
 'box': 0.01643835616438356,
 'cake': 0.01643835616438356,
 'care': 0.01643835616438356,
 'pair': 0.01643835616438356,
 'stop': 0.01643835616438356,
 'sir': 0.01643835616438356,
 'Seven': 0.01643835616438356,
 'stay': 0.01643835616438356,
 'understand': 0.01643835616438356,
 'sentence': 0.01643835616438356,
 'animal': 0.01643835616438356,
 'dog': 0.01643835616438356,
 'politely': 0.01643835616438356,
 'melancholy': 0.01643835616438356,
 'liked': 0.01643835616438356,
 'hour': 0.01643835616438356,
 'chorus': 0.01643835616438356,
 'prize': 0.01643835616438356,
 'executed': 0.01643835616438356,
 'full': 0.01643835616438356,
 'write': 0.01643835616438356,
 'shriek': 0.01643835616438356,
 'loud': 0.01643835616438356,
 'sharp': 0.01643835616438356,
 'Lizard': 0.01643835616438356,
 'stand': 0.01643835616438356,
 'sleep': 0.01643835616438356,
 'egg': 0.01643835616438356,
 'sneezing': 0.01643835616438356,
 'told': 0.01643835616438356,
 'dreadfully': 0.01643835616438356,
 'sing': 0.01643835616438356,
 'exclaimed': 0.01643835616438356,
 'Knave': 0.01643835616438356,
 'procession': 0.01643835616438356,
 'Majesty': 0.01643835616438356,
 'executioner': 0.01643835616438356,
 'school': 0.01643835616438356,
 'Adventures Wonderland': 0.01643835616438356,
 'little girl': 0.01643835616438356,
 'one side': 0.01643835616438356,
 'golden key': 0.01643835616438356,
 'set work': 0.01643835616438356,
 'great hurry': 0.01643835616438356,
 'beg pardon': 0.01643835616438356,
 'Cheshire Cat': 0.01643835616438356,
 'bread butter': 0.01643835616438356,
 'three gardeners': 0.01643835616438356,
 'please Majesty': 0.01643835616438356,
 'Will will': 0.01643835616438356,
 'guinea pig': 0.01643835616438356,
 'eBook': 0.0136986301369863,
 'twice': 0.0136986301369863,
 'sleepy': 0.0136986301369863,
 'pocket': 0.0136986301369863,
 'across': 0.0136986301369863,
 'curiosity': 0.0136986301369863,
 'passed': 0.0136986301369863,
 'home': 0.0136986301369863,
 'likely': 0.0136986301369863,
 'aloud': 0.0136986301369863,
 'walk': 0.0136986301369863,
 'new': 0.0136986301369863,
 'asking': 0.0136986301369863,
 'night': 0.0136986301369863,
 'sometimes': 0.0136986301369863,
 'walking': 0.0136986301369863,
 'corner': 0.0136986301369863,
 'sadly': 0.0136986301369863,
 'shut': 0.0136986301369863,
 'hurry': 0.0136986301369863,
 'simple': 0.0136986301369863,
 'cut': 0.0136986301369863,
 'nervous': 0.0136986301369863,
 'altogether': 0.0136986301369863,
 'remembered': 0.0136986301369863,
 'person': 0.0136986301369863,
 'deal': 0.0136986301369863,
 'nine': 0.0136986301369863,
 'dropped': 0.0136986301369863,
 'usual': 0.0136986301369863,
 'morning': 0.0136986301369863,
 'Ah': 0.0136986301369863,
 'wrong': 0.0136986301369863,
 'sounded': 0.0136986301369863,
 'strange': 0.0136986301369863,
 'sudden': 0.0136986301369863,
 'case': 0.0136986301369863,
 'number': 0.0136986301369863,
 'swam': 0.0136986301369863,
 'nearer': 0.0136986301369863,
 'speaking': 0.0136986301369863,
 'shrill': 0.0136986301369863,
 'angry': 0.0136986301369863,
 'offended': 0.0136986301369863,
 'crowded': 0.0136986301369863,
 'tale': 0.0136986301369863,
 'argument': 0.0136986301369863,
 'notice': 0.0136986301369863,
 'dare': 0.0136986301369863,
 'confusion': 0.0136986301369863,
 'reply': 0.0136986301369863,
 'story': 0.0136986301369863,
 'shook': 0.0136986301369863,
 'impatiently': 0.0136986301369863,
 'sighed': 0.0136986301369863,
 'temper': 0.0136986301369863,
 'moved': 0.0136986301369863,
 'swim': 0.0136986301369863,
 'interesting': 0.0136986301369863,
 'become': 0.0136986301369863,
 'taking': 0.0136986301369863,
 'drew': 0.0136986301369863,
 'sky': 0.0136986301369863,
 'instantly': 0.0136986301369863,
 'surprise': 0.0136986301369863,
 'stick': 0.0136986301369863,
 'height': 0.0136986301369863,
 'quietly': 0.0136986301369863,
 'present': 0.0136986301369863,
 'man': 0.0136986301369863,
 'often': 0.0136986301369863,
 'follow': 0.0136986301369863,
 'draw': 0.0136986301369863,
 'sob': 0.0136986301369863,
 'ground': 0.0136986301369863,
 'meant': 0.0136986301369863,
 'waving': 0.0136986301369863,
 'asleep': 0.0136986301369863,
 'knee': 0.0136986301369863,
 'whispered': 0.0136986301369863,
 'execution': 0.0136986301369863,
 'flamingo': 0.0136986301369863,
 'friend': 0.0136986301369863,
 'Turtle': 0.0136986301369863,
 'Tis': 0.0136986301369863,
 'picture': 0.0136986301369863,
 'juror': 0.0136986301369863,
 'witness': 0.0136986301369863,
 'teacup': 0.0136986301369863,
 'unimportant': 0.0136986301369863,
 'mile': 0.0136986301369863,
 'another moment': 0.0136986301369863,
 'came upon': 0.0136986301369863,
 'little golden': 0.0136986301369863,
 'right size': 0.0136986301369863,
 'feet high': 0.0136986301369863,
 'white kid': 0.0136986301369863,
 'kid gloves': 0.0136986301369863,
 'trembling voice': 0.0136986301369863,
 'offended tone': 0.0136986301369863,
 'play croquet': 0.0136986301369863,
 'Twinkle twinkle': 0.0136986301369863,
 'evening Beautiful': 0.0136986301369863,
 'next witness': 0.0136986301369863,
 'March': 0.010958904109589041,
 'bank': 0.010958904109589041,
 'worth': 0.010958904109589041,
 'natural': 0.010958904109589041,
 'fear': 0.010958904109589041,
 'managed': 0.010958904109589041,
 'true': 0.010958904109589041,
 'fallen': 0.010958904109589041,
 'earth': 0.010958904109589041,
 'several': 0.010958904109589041,
 'Miss': 0.010958904109589041,
 'catch': 0.010958904109589041,
 'passage': 0.010958904109589041,
 'except': 0.010958904109589041,
 'tiny': 0.010958904109589041,
 'alas': 0.010958904109589041,
 'second': 0.010958904109589041,
 'led': 0.010958904109589041,
 'telescope': 0.010958904109589041,
 'paper': 0.010958904109589041,
 'taught': 0.010958904109589041,
 'deeply': 0.010958904109589041,
 'ventured': 0.010958904109589041,
 'reach': 0.010958904109589041,
 'sharply': 0.010958904109589041,
 'severely': 0.010958904109589041,
 'fond': 0.010958904109589041,
 'shoes': 0.010958904109589041,
 'savage': 0.010958904109589041,
 'violently': 0.010958904109589041,
 'age': 0.010958904109589041,
 'Mabel': 0.010958904109589041,
 'besides': 0.010958904109589041,
 'puzzling': 0.010958904109589041,
 'twelve': 0.010958904109589041,
 'capital': 0.010958904109589041,
 'alone': 0.010958904109589041,
 'escape': 0.010958904109589041,
 'water': 0.010958904109589041,
 'digging': 0.010958904109589041,
 'French': 0.010958904109589041,
 'William': 0.010958904109589041,
 'fire': 0.010958904109589041,
 'pale': 0.010958904109589041,
 'shore': 0.010958904109589041,
 'Duck': 0.010958904109589041,
 'uncomfortable': 0.010958904109589041,
 'wanted': 0.010958904109589041,
 'frowning': 0.010958904109589041,
 'solemnly': 0.010958904109589041,
 'pointing': 0.010958904109589041,
 'confused': 0.010958904109589041,
 'short': 0.010958904109589041,
 'bowed': 0.010958904109589041,
 'noise': 0.010958904109589041,
 'whisper': 0.010958904109589041,
 'judge': 0.010958904109589041,
 'breath': 0.010958904109589041,
 'particular': 0.010958904109589041,
 'vanished': 0.010958904109589041,
 'run': 0.010958904109589041,
 'stood': 0.010958904109589041,
 'elbow': 0.010958904109589041,
 'chance': 0.010958904109589041,
 'answered': 0.010958904109589041,
 'outside': 0.010958904109589041,
 'hearing': 0.010958904109589041,
 'master': 0.010958904109589041,
 'Thank': 0.010958904109589041,
 'doubt': 0.010958904109589041,
 'lay': 0.010958904109589041,
 'crowd': 0.010958904109589041,
 'held': 0.010958904109589041,
 'plan': 0.010958904109589041,
 'difficulty': 0.010958904109589041,
 'grass': 0.010958904109589041,
 'perfectly': 0.010958904109589041,
 'none': 0.010958904109589041,
 'stuff': 0.010958904109589041,
 'decidedly': 0.010958904109589041,
 'thoughtfully': 0.010958904109589041,
 'green': 0.010958904109589041,
 'screamed': 0.010958904109589041,
 'indignantly': 0.010958904109589041,
 'taken': 0.010958904109589041,
 'letter': 0.010958904109589041,
 'dish': 0.010958904109589041,
 'kitchen': 0.010958904109589041,
 'sneeze': 0.010958904109589041,
 'jumping': 0.010958904109589041,
 'carried': 0.010958904109589041,
 'growl': 0.010958904109589041,
 'busily': 0.010958904109589041,
 'beat': 0.010958904109589041,
 'grunted': 0.010958904109589041,
 'less': 0.010958904109589041,
 'writing': 0.010958904109589041,
 'crumbs': 0.010958904109589041,
 'twinkling': 0.010958904109589041,
 'sigh': 0.010958904109589041,
 'bottom': 0.010958904109589041,
 'flower': 0.010958904109589041,
 'rose': 0.010958904109589041,
 'arches': 0.010958904109589041,
 'players': 0.010958904109589041,
 'week': 0.010958904109589041,
 'figure': 0.010958904109589041,
 'porpoise': 0.010958904109589041,
 'evidence': 0.010958904109589041,
 'suppressed': 0.010958904109589041,
 'jurymen': 0.010958904109589041,
 'fit': 0.010958904109589041,
 'Lewis Carroll': 0.010958904109589041,
 'Project Gutenberg': 0.010958904109589041,
 'rabbit hole': 0.010958904109589041,
 'eat bat': 0.010958904109589041,
 'inches high': 0.010958904109589041,
 'change subject': 0.010958904109589041,
 'one finger': 0.010958904109589041,
 'shook head': 0.010958904109589041,
 'Mary Ann': 0.010958904109589041,
 'yer honour': 0.010958904109589041,
 'old fellow': 0.010958904109589041,
 'hookah mouth': 0.010958904109589041,
 'FATHER WILLIAM': 0.010958904109589041,
 'Wow wow': 0.010958904109589041,
 'Lobster Quadrille': 0.010958904109589041,
 'dance Will': 0.010958904109589041,
 'will join': 0.010958904109589041,
 'Beau ootiful': 0.010958904109589041,
 'ootiful Soo': 0.010958904109589041,
 'jury box': 0.010958904109589041,
 'Date': 0.00821917808219178,
 'peeped': 0.00821917808219178,
 'reading': 0.00821917808219178,
 'considering': 0.00821917808219178,
 'White': 0.00821917808219178,
 'hedge': 0.00821917808219178,
 'dark': 0.00821917808219178,
 'filled': 0.00821917808219178,
 'past': 0.00821917808219178,
 'stairs': 0.00821917808219178,
 'somewhere': 0.00821917808219178,
 'knowledge': 0.00821917808219178,
 'grand': 0.00821917808219178,
 'funny': 0.00821917808219178,
 'listening': 0.00821917808219178,
 'hope': 0.00821917808219178,
 'bat': 0.00821917808219178,
 'hurt': 0.00821917808219178,
 'lost': 0.00821917808219178,
 'whiskers': 0.00821917808219178,
 'longer': 0.00821917808219178,
 'hanging': 0.00821917808219178,
 'key': 0.00821917808219178,
 'belong': 0.00821917808219178,
 'lock': 0.00821917808219178,
 'delight': 0.00821917808219178,
 'impossible': 0.00821917808219178,
 'marked': 0.00821917808219178,
 'red': 0.00821917808219178,
 'knife': 0.00821917808219178,
 'certain': 0.00821917808219178,
 'taste': 0.00821917808219178,
 'finding': 0.00821917808219178,
 'apple': 0.00821917808219178,
 'candle': 0.00821917808219178,
 'decided': 0.00821917808219178,
 'possibly': 0.00821917808219178,
 'legs': 0.00821917808219178,
 'bring': 0.00821917808219178,
 'smaller': 0.00821917808219178,
 'holding': 0.00821917808219178,
 'remained': 0.00821917808219178,
 'expecting': 0.00821917808219178,
 'dull': 0.00821917808219178,
 'work': 0.00821917808219178,
 'opening': 0.00821917808219178,
 'love': 0.00821917808219178,
 'cry': 0.00821917808219178,
 'pattering': 0.00821917808219178,
 'gloves': 0.00821917808219178,
 'muttering': 0.00821917808219178,
 'timid': 0.00821917808219178,
 'yesterday': 0.00821917808219178,
 'twenty': 0.00821917808219178,
 'doth': 0.00821917808219178,
 'crossed': 0.00821917808219178,
 'hoarse': 0.00821917808219178,
 'spread': 0.00821917808219178,
 'gently': 0.00821917808219178,
 'play': 0.00821917808219178,
 'putting': 0.00821917808219178,
 'guess': 0.00821917808219178,
 'cause': 0.00821917808219178,
 'worse': 0.00821917808219178,
 'slipped': 0.00821917808219178,
 'general': 0.00821917808219178,
 'notion': 0.00821917808219178,
 'show': 0.00821917808219178,
 'nurse': 0.00821917808219178,
 'subject': 0.00821917808219178,
 'throw': 0.00821917808219178,
 'passion': 0.00821917808219178,
 'Eaglet': 0.00821917808219178,
 'race': 0.00821917808219178,
 'fur': 0.00821917808219178,
 'sulky': 0.00821917808219178,
 'allow': 0.00821917808219178,
 'frog': 0.00821917808219178,
 'crown': 0.00821917808219178,
 'move': 0.00821917808219178,
 'pressed': 0.00821917808219178,
 'handed': 0.00821917808219178,
 'gravely': 0.00821917808219178,
 'thimble': 0.00821917808219178,
 'speech': 0.00821917808219178,
 'cheered': 0.00821917808219178,
 'grave': 0.00821917808219178,
 'simply': 0.00821917808219178,
 'solemn': 0.00821917808219178,
 'choked': 0.00821917808219178,
 'sad': 0.00821917808219178,
 'sighing': 0.00821917808219178,
 'Fury': 0.00821917808219178,
 'met': 0.00821917808219178,
 'attending': 0.00821917808219178,
 'pleaded': 0.00821917808219178,
 'easily': 0.00821917808219178,
 'joined': 0.00821917808219178,
 'pity': 0.00821917808219178,
 'Crab': 0.00821917808219178,
 'venture': 0.00821917808219178,
 'carefully': 0.00821917808219178,
 'suit': 0.00821917808219178,
 'bed': 0.00821917808219178,
 'mentioned': 0.00821917808219178,
 'guessed': 0.00821917808219178,
 'hunting': 0.00821917808219178,
 'mistake': 0.00821917808219178,
 'plate': 0.00821917808219178,
 'knocking': 0.00821917808219178,
 'real': 0.00821917808219178,
 'broken': 0.00821917808219178,
 'floor': 0.00821917808219178,
 'effect': 0.00821917808219178,
 'whatever': 0.00821917808219178,
 'ordered': 0.00821917808219178,
 'stopped': 0.00821917808219178,
 'crash': 0.00821917808219178,
 'Pat': 0.00821917808219178,
 'em': 0.00821917808219178,
 'kick': 0.00821917808219178,
 'sense': 0.00821917808219178,
 'moving': 0.00821917808219178,
 'hungry': 0.00821917808219178,
 'picked': 0.00821917808219178,
 'edge': 0.00821917808219178,
 'immediately': 0.00821917808219178,
 'folded': 0.00821917808219178,
 'confusing': 0.00821917808219178,
 'brought': 0.00821917808219178,
 'youth': 0.00821917808219178,
 'Pray': 0.00821917808219178,
 'jaw': 0.00821917808219178,
 'eel': 0.00821917808219178,
 'blow': 0.00821917808219178,
 'free': 0.00821917808219178,
 'shaking': 0.00821917808219178,
 'succeeded': 0.00821917808219178,
 'tasted': 0.00821917808219178,
 'settled': 0.00821917808219178,
 'nibbling': 0.00821917808219178,
 'bringing': 0.00821917808219178,
 'considered': 0.00821917808219178,
 'loudly': 0.00821917808219178,
 'order': 0.00821917808219178,
 'staring': 0.00821917808219178,
 'howling': 0.00821917808219178,
 'instance': 0.00821917808219178,
 'repeating': 0.00821917808219178,
 'nursing': 0.00821917808219178,
 'courage': 0.00821917808219178,
 'grinned': 0.00821917808219178,
 'faster': 0.00821917808219178,
 'advantage': 0.00821917808219178,
 'line': 0.00821917808219178,
 'boy': 0.00821917808219178,
 'tossing': 0.00821917808219178,
 'caught': 0.00821917808219178,
 'shaped': 0.00821917808219178,
 'proper': 0.00821917808219178,
 'sobbing': 0.00821917808219178,
 'explanation': 0.00821917808219178,
 'instead': 0.00821917808219178,
 'civil': 0.00821917808219178,
 'fun': 0.00821917808219178,
 'breathe': 0.00821917808219178,
 'butter': 0.00821917808219178,
 "o'clock": 0.00821917808219178,
 'year': 0.00821917808219178,
 'riddle': 0.00821917808219178,
 'cautiously': 0.00821917808219178,
 'fly': 0.00821917808219178,
 'lived': 0.00821917808219178,
 'upset': 0.00821917808219178,
 'manner': 0.00821917808219178,
 'muchness': 0.00821917808219178,
 'beheaded': 0.00821917808219178,
 'watching': 0.00821917808219178,
 'checked': 0.00821917808219178,
 'eager': 0.00821917808219178,
 'guests': 0.00821917808219178,
 "needn't": 0.00821917808219178,
 'unfortunate': 0.00821917808219178,
 'Hush': 0.00821917808219178,
 'tucked': 0.00821917808219178,
 'alive': 0.00821917808219178,
 'anxious': 0.00821917808219178,
 'mustard': 0.00821917808219178,
 'sorrow': 0.00821917808219178,
 'Tortoise': 0.00821917808219178,
 'Drawling': 0.00821917808219178,
 'advance': 0.00821917808219178,
 'toes': 0.00821917808219178,
 'mark': 0.00821917808219178,
 'snail': 0.00821917808219178,
 'obliged': 0.00821917808219178,
 'part': 0.00821917808219178,
 'around': 0.00821917808219178,
 'Owl': 0.00821917808219178,
 'Panther': 0.00821917808219178,
 'pie': 0.00821917808219178,
 'pencil': 0.00821917808219178,
 'wrote': 0.00821917808219178,
 'prove': 0.00821917808219178,
 'Wonderland Lewis': 0.00821917808219178,
 'half hoping': 0.00821917808219178,
 'marked poison': 0.00821917808219178,
 'fan gloves': 0.00821917808219178,
 'Caucus race': 0.00821917808219178,
 'finish story': 0.00821917808219178,
 'Hold tongue': 0.00821917808219178,
 'stood near': 0.00821917808219178,
 'quite forgetting': 0.00821917808219178,
 'broken glass': 0.00821917808219178,
 'dead silence': 0.00821917808219178,
 'took hookah': 0.00821917808219178,
 'OLD FATHER': 0.00821917808219178,
 'old youth': 0.00821917808219178,
 'footman livery': 0.00821917808219178,
 'fast asleep': 0.00821917808219178,
 'young lady': 0.00821917808219178,
 'croquet ground': 0.00821917808219178,
 'rose tree': 0.00821917808219178,
 'Knave Hearts': 0.00821917808219178,
 'pack cards': 0.00821917808219178,
 'BOOTS SHOES': 0.00821917808219178,
 'oop evening': 0.00821917808219178,
 'put spectacles': 0.00821917808219178,
 'Consider verdict': 0.00821917808219178,
 'Give evidence': 0.00821917808219178,
 'officers court': 0.00821917808219178,
 'Gutenberg': 0.005479452054794521,
 'anywhere': 0.005479452054794521,
 'cost': 0.005479452054794521,
 'terms': 0.005479452054794521,
 'pleasure': 0.005479452054794521,
 'chain': 0.005479452054794521,
 'picking': 0.005479452054794521,
 'remarkable': 0.005479452054794521,
 'afterwards': 0.005479452054794521,
 'occurred': 0.005479452054794521,
 'started': 0.005479452054794521,
 'straight': 0.005479452054794521,
 'dipped': 0.005479452054794521,
 'falling': 0.005479452054794521,
 'plenty': 0.005479452054794521,
 'cupboards': 0.005479452054794521,
 'shelves': 0.005479452054794521,
 'jar': 0.005479452054794521,
 'tumbling': 0.005479452054794521,
 'thousand': 0.005479452054794521,
 'learnt': 0.005479452054794521,
 'showing': 0.005479452054794521,
 'Presently': 0.005479452054794521,
 'downward': 0.005479452054794521,
 "Dinah'll": 0.005479452054794521,
 'milk': 0.005479452054794521,
 'mice': 0.005479452054794521,
 'earnestly': 0.005479452054794521,
 'thump': 0.005479452054794521,
 'wind': 0.005479452054794521,
 'row': 0.005479452054794521,
 'legged': 0.005479452054794521,
 'inches': 0.005479452054794521,
 'rat': 0.005479452054794521,
 'longed': 0.005479452054794521,
 'shutting': 0.005479452054794521,
 'label': 0.005479452054794521,
 'wise': 0.005479452054794521,
 'unpleasant': 0.005479452054794521,
 'burn': 0.005479452054794521,
 'usually': 0.005479452054794521,
 'sooner': 0.005479452054794521,
 'mixed': 0.005479452054794521,
 'brightened': 0.005479452054794521,
 'lovely': 0.005479452054794521,
 'crying': 0.005479452054794521,
 'advice': 0.005479452054794521,
 'playing': 0.005479452054794521,
 'Curiouser': 0.005479452054794521,
 'forgot': 0.005479452054794521,
 'bye': 0.005479452054794521,
 '_I_': 0.005479452054794521,
 'sending': 0.005479452054794521,
 'struck': 0.005479452054794521,
 'ashamed': 0.005479452054794521,
 'trotting': 0.005479452054794521,
 'ringlets': 0.005479452054794521,
 'six': 0.005479452054794521,
 'Paris': 0.005479452054794521,
 'Rome': 0.005479452054794521,
 'lap': 0.005479452054794521,
 'neatly': 0.005479452054794521,
 'claws': 0.005479452054794521,
 'smiling': 0.005479452054794521,
 'shrinking': 0.005479452054794521,
 'narrow': 0.005479452054794521,
 'declare': 0.005479452054794521,
 'bad': 0.005479452054794521,
 'railway': 0.005479452054794521,
 'conclusion': 0.005479452054794521,
 'wherever': 0.005479452054794521,
 'sand': 0.005479452054794521,
 'splashing': 0.005479452054794521,
 'swimming': 0.005479452054794521,
 'wink': 0.005479452054794521,
 'Conqueror': 0.005479452054794521,
 'clear': 0.005479452054794521,
 'ago': 0.005479452054794521,
 'ma': 0.005479452054794521,
 'fright': 0.005479452054794521,
 'beg': 0.005479452054794521,
 'quiet': 0.005479452054794521,
 'purring': 0.005479452054794521,
 'nicely': 0.005479452054794521,
 'brown': 0.005479452054794521,
 'dinner': 0.005479452054794521,
 'useful': 0.005479452054794521,
 'sorrowful': 0.005479452054794521,
 'hate': 0.005479452054794521,
 'assembled': 0.005479452054794521,
 'wet': 0.005479452054794521,
 'older': 0.005479452054794521,
 ...}
In [21]:
plt.figure(figsize=(15,8))
plt.imshow(alice_mask, cmap=plt.cm.gray, interpolation='bilinear')
plt.axis('off')
plt.show()
In [22]:
plt.figure(figsize=(15,8))
plt.imshow(wc, interpolation='bilinear')
plt.axis('off')
plt.show()

웹에서 수집한 댓글 데이터 분석

  • 분노의 질주 텍스트 데이터 분석
In [27]:
doc_ko = open("data/15_TheExtreme.txt").read()
doc_ko[1:1000]
Out[27]:
'x"\n"1" " 분노의 질주 시리즈중에서 제일 별루"\n"2" " 스케일 큰 시끄러운 액션이 난무하는데도 이렇게까지 지루할수 있다니....."\n"3" " 시~원 하게 잘 본 영화. 다음 시리즈에서는 여자 주인공의 비중이 더 높아졌으면 하는 바램!"\n"4" " 반지닦기, 자살닦이, 고무닦이, 정의닦이...로 이어지는 한심한 DC 시리즈 \n레지던트 이블 시리즈 \n그리고 이 영화 분노의 질주 시리즈 \n공통점은 시리즈가 거듭될수록 돈은 많이 들지만 재미는 없어지고 \nCG는 떡질되지만 실감나는 장면은 더 없어지도 뻔히 가짜라는게 드러나는 영화들 \n그러나\n아무리 엉터리로 만들고, 자국에서 망해도 \n미국 블록버스터라면 맹목적으로 보는 중국애들 땜에 \n아무리 쓰레기 영화라도 본전 건지는 것은 물론 상당히 많은 돈을 버니... \n이런 쓰레기들이 매년 양산된다. \n물론, 중국애들도 할말은 있을 거다 \n공산당이 검열하는 자국영화보다는 낫다고... \n하지만 우리들은 다른 전세계의 재미있는 영화를 볼 선택의 자유가 있쟎아! \n왜 이런 쓰레기 영화를 보는 거지?"\n"5" " "\n"6" " 그냥 액션만 보면 멋진데\n스토리는 주인공이 전여친한테 싸지른\n애새끼 구하러 간다며 아빠행세하면서\n그 덕분에 지동료들 다 버리고 미쳐 날뛰는 내용"\n"7" " "\n"8" " 아래는 다들 평점 알바들인가부네.. 이런 개 쓰레기 영화가 평점이 이리 높다니"\n"9" " "\n"10" " "\n"11" " "\n"12" " "\n"13" " "\n"14" " "\n"15" " 스케일은 점점 더 커지지만, 액션은 멍청할정도로 어이가없음 과유불급"\n"16" " 이 시리즈로 이렇게 길게 간다는게 신기.. 새로울 건 없지만 달리는 걸 좋아하시는 분이라면 "\n"17" " "\n"18" " "\n"19" " "\n"20" " 대머리들은 TV물로 찍고,\n감독은 CG실에서 이어붙히고."\n"21" " "\n"22" " "\n"23" " "\n"24" " "\n"25" " "\n"26" " "\n"27" " "\n"28" " "\n"29" " 이제는 제목만'
In [28]:
# t = Twitter()
# Twitter() has changed to Okt() since v0.5.0.
t =  Okt()
tokens_ko = t.nouns(doc_ko)
tokens_ko
Out[28]:
['분노',
 '질주',
 '시리즈',
 '제일',
 '별루',
 '스케일',
 '액션',
 '난무',
 '시',
 '원',
 '영화',
 '다음',
 '시리즈',
 '여자',
 '주인공',
 '비중',
 '더',
 '바램',
 '반지',
 '자살',
 '고무',
 '정의',
 '로',
 '시리즈',
 '레지던트',
 '이블',
 '시리즈',
 '이',
 '영화',
 '분노',
 '질주',
 '시리즈',
 '공통점',
 '시리즈',
 '거듭',
 '돈',
 '재미',
 '떡질',
 '실감',
 '나',
 '장면',
 '더',
 '가짜',
 '게',
 '영화',
 '엉터리',
 '자국',
 '미국',
 '블록버스터',
 '라면',
 '맹목',
 '중국',
 '애',
 '땜',
 '쓰레기',
 '영화',
 '본전',
 '것',
 '돈',
 '버니',
 '쓰레기',
 '매년',
 '양산',
 '중국',
 '애',
 '거',
 '공산당',
 '검열',
 '자국',
 '영화',
 '낫다',
 '우리',
 '다른',
 '전세계',
 '영화',
 '볼',
 '선택',
 '자유',
 '있쟎',
 '왜',
 '쓰레기',
 '영화',
 '거지',
 '그냥',
 '액션',
 '스토리',
 '주인공',
 '전여친',
 '애',
 '새끼',
 '구',
 '간다',
 '아빠',
 '행세',
 '그',
 '덕분',
 '동료',
 '내용',
 '아래',
 '평점',
 '알바',
 '개',
 '쓰레기',
 '영화',
 '평점',
 '스케일',
 '점점',
 '더',
 '액션',
 '정도',
 '어이',
 '과유',
 '불급',
 '이',
 '시리즈',
 '신기',
 '건',
 '걸',
 '대머리',
 '물',
 '감독',
 '실',
 '이제',
 '제목',
 '분노',
 '질주',
 '해도',
 '전형',
 '헐리우드',
 '액션',
 '물',
 '생각',
 '영화',
 '노잼',
 '노',
 '볼거리',
 '평점',
 '시리즈',
 '편',
 '질질',
 '루즈',
 '분노',
 '질주',
 '회',
 '갈수록',
 '더',
 '박진',
 '감',
 '더',
 '스케일',
 '어쩜',
 '액션',
 '스케일',
 '시간',
 '그냥',
 '이정',
 '영화',
 '헐리웃',
 '따름',
 '재미',
 '내용',
 '뭐',
 '데',
 '열',
 '이',
 '시간',
 '평가',
 '걸',
 '다음',
 '영화',
 '평점',
 '사기',
 '편',
 '분노',
 '질주',
 '대박',
 '좀',
 '대사',
 '반',
 '가족',
 '어쩌',
 '억지',
 '움',
 '배우',
 '때메',
 '점',
 '돈',
 '어디',
 '부어',
 '그',
 '시리즈',
 '요',
 '스토리',
 '액션',
 '시간',
 '것',
 '역시',
 '돔',
 '제이슨',
 '스타',
 '뎀',
 '드웨',
 '존슨',
 '액션',
 '재밋다',
 '맨',
 '마지막',
 '개',
 '감동',
 '말',
 '것',
 '액션',
 '그냥',
 '킬링타임',
 '용',
 '액션',
 '진짜',
 '말',
 '어이',
 '거기',
 '내용',
 '급',
 '삼류',
 '제발',
 '볼거리',
 '이야기',
 '폴',
 '워커',
 '때',
 '시리즈',
 '마무리',
 '배우',
 '개성',
 '아주',
 '톡톡',
 '대사',
 '연기',
 '모두',
 '그',
 '와중',
 '아기',
 '씹덕',
 '사',
 '늘',
 '분노',
 '질주',
 '카',
 '액션',
 '분노',
 '질주',
 '시리즈',
 '최고',
 '우리나라',
 '스케일',
 '영화',
 '만들기',
 '최근',
 '파이널판타지',
 '기술',
 '비약',
 '발전',
 '직접',
 '촬영',
 '그래픽',
 '영화',
 '것',
 '스토리',
 '연출',
 '시대',
 '디테일',
 '기본',
 '극장',
 '별',
 '생각',
 '보기',
 '킬링타임',
 '용',
 '영화',
 '후',
 '땅',
 '영화',
 '잼',
 '졸라',
 '내용',
 '영화',
 '가끔',
 '영화',
 '브레인',
 '좀더',
 '것',
 '시리즈',
 '한편',
 '안',
 '보고',
 '처음',
 '도',
 '내내',
 '틈',
 '최고',
 '오락',
 '영화',
 '다만',
 '매니아',
 '만',
 '개그',
 '포인트',
 '날',
 '검',
 '자동차',
 '경주',
 '박진',
 '감',
 '소재',
 '분노',
 '질주',
 '컨셉',
 '유지',
 '점차',
 '스케일',
 '시리즈',
 '거듭',
 '수록',
 '발전',
 '몇',
 '영화인',
 '것',
 '장면',
 '액션',
 '집',
 '영화',
 '화끈',
 '굿',
 '션션',
 '씬들',
 '대박',
 '다음',
 '도대체',
 '어쩌려',
 '갑자기',
 '스케일',
 '갈수록',
 '전개',
 '좀',
 '루즈',
 '시간',
 '주',
 '시리즈',
 '거듭',
 '더',
 '액션',
 '스크린',
 '것',
 '만하',
 '관객',
 '욕심',
 '거기',
 '무언가',
 '더',
 '욕심',
 '끝',
 '것',
 '잼',
 '일단',
 '어벤져스',
 '녀석',
 '눈',
 '볼거리',
 '스토리',
 '살짝',
 '전형',
 '헐리웃',
 '팝콘',
 '무비',
 '이제',
 '나와라',
 '그게',
 '것',
 '재미',
 '영화',
 '아들',
 '구',
 '위해',
 '가족',
 '배신',
 '과거',
 '적',
 '다시',
 '세계',
 '구',
 '기상',
 '외한',
 '액션',
 '차로',
 '수',
 '여러가지',
 '액션',
 '종합셋트',
 '볼거리',
 '역시',
 '분노',
 '질주',
 '답',
 '차',
 '부쉬',
 '영화',
 '자동차',
 '광고',
 '돈',
 '스토리',
 '어차피',
 '이',
 '시리즈',
 '언제',
 '스토리',
 '보고',
 '액션',
 '편',
 '압도',
 '스케일',
 '최고',
 '중간',
 '중간',
 '폴',
 '워커',
 '대사',
 '마지막',
 '끝',
 '브라이언',
 '상기',
 '편',
 '조금',
 '사람',
 '이제',
 '마블',
 '히어로',
 '그',
 '걸',
 '현실',
 '성은',
 '전혀',
 '이야기',
 '뇌',
 '헛웃음',
 '나',
 '스토리',
 '액션',
 '그',
 '역시',
 '평범',
 '볾만',
 '액션',
 '돔',
 '커플',
 '개인',
 '생각',
 '남매',
 '라면',
 '사이퍼',
 '좀',
 '아이스',
 '퀸',
 '분위기',
 '그녀',
 '것',
 '바란',
 '것',
 '시간',
 '줄',
 '재미',
 '남',
 '음',
 '차',
 '살때',
 '쿠바',
 '개똥폼',
 '언니',
 '궁둥이',
 '뿐',
 '역시',
 '실망',
 '남자',
 '로망',
 '역시',
 '분노',
 '질주',
 '답',
 '음악',
 '차도',
 '액션',
 '개연',
 '성은',
 '이',
 '영화',
 '편',
 '개연',
 '영화',
 '디젤',
 '스티븐시걸',
 '돈',
 '눈',
 '액션',
 '눈',
 '이',
 '왜',
 '느므',
 '재밋었다',
 '역시',
 '마지막',
 '재밋다',
 '어찌',
 '명',
 '명',
 '된거',
 '장면',
 '때',
 '나',
 '폴',
 '워커',
 '뭔가',
 '기한',
 '등장인물',
 '숫자',
 '로만',
 '느낌',
 '뭐',
 '나',
 '자동차',
 '관련',
 '부분',
 '타의',
 '추종',
 '불허',
 '이번',
 '편',
 '류',
 '영화',
 '스토리',
 '전락',
 '느낌',
 '역시',
 '스타',
 '뎀',
 '형님',
 '편',
 '영화',
 '살',
 '멍청이',
 '두',
 '덩치',
 '미국인',
 '꼴',
 '보기',
 '그',
 '차',
 '거',
 '보고',
 '소름',
 '진짜',
 '미래',
 '저런',
 '일',
 '생각',
 '무엇',
 '마지막',
 '그',
 '이름',
 '괜시레',
 '간만',
 '또',
 '레이싱게임',
 '분노',
 '질주',
 '시리즈',
 '스토리',
 '볼거리',
 '위주',
 '영화',
 '점',
 '이번',
 '여실히',
 '잠수함',
 '어뢰',
 '스포츠카',
 '추월',
 '장면',
 '실소',
 '금',
 '수가',
 '분노',
 '시리즈',
 '이',
 '편이',
 '제일',
 '듯',
 '자동차',
 '추격',
 '역시',
 '명불허전',
 '이제',
 '점점',
 '서서히',
 '간다',
 '설정',
 '내용',
 '전개',
 '젠',
 '좀',
 '영화',
 '스토리',
 '이번',
 '질주',
 '그냥',
 '시놉',
 '포기',
 '캐스팅',
 '자동차',
 '눈',
 '영화',
 '자동차',
 '액션',
 '수',
 '모든',
 '걸',
 '자동차',
 '액션',
 '맨몸',
 '액션',
 '모두',
 '빈',
 '디젤',
 '드웨인존슨',
 '제이슨',
 '스타',
 '뎀',
 '액션',
 '배우',
 '집합',
 '체',
 '영화',
 '첨단',
 '기술',
 '전통',
 '스턴',
 '트',
 '볼',
 '수',
 '영화',
 '시리즈',
 '중',
 '가장',
 '최악',
 '참내',
 '중국',
 '무협',
 '영화',
 '수준',
 '황당',
 '무',
 '돈',
 '영화',
 '시간',
 '러시아',
 '핵잠수함',
 '기지',
 '차',
 '대로',
 '여주',
 '겨울',
 '날',
 '가슴',
 '살',
 '나시',
 '패션',
 '적',
 '제압',
 '것',
 '액션',
 '웃음',
 '안',
 '액션영화',
 '로서',
 '상황',
 '연출',
 '거나',
 '액션',
 '자체',
 '진짜',
 '그거',
 '나머지',
 '유치',
 '원래',
 '영화',
 '순',
 '이번',
 '껀',
 '좀',
 '글구',
 '커플',
 '애',
 '어케',
 '우정',
 '이번',
 '글',
 '사람',
 '허무',
 '맹',
 '년',
 '젠장',
 '시리즈',
 '의미',
 '액션영화',
 '듯',
 '쇼',
 '형제',
 '내용',
 '액션',
 '죽',
 '쇼',
 '형제',
 '영화',
 '액션',
 '쾌감',
 '때메',
 '내용',
 '나',
 '이',
 '시리즈',
 '라이',
 '칸',
 '이안',
 '돔',
 '졷',
 '개샛끼',
 '그냥',
 '짱',
 '영화',
 '오버',
 '움',
 '극치',
 '시리즈',
 '점점',
 '산',
 '액션',
 '쫄깃',
 '예전',
 '의',
 '감성',
 '더',
 '스타뎀',
 '액션',
 '이',
 '역시',
 '산뜻',
 '가족',
 '위해',
 '자기',
 '가족',
 '피',
 '를',
 '안준',
 '남',
 '가족',
 '가치관',
 '액션',
 '후반',
 '부',
 '산',
 '가족',
 '위해',
 '또',
 '다른',
 '가족',
 '잠깐',
 '배신',
 '내용',
 '전개',
 '술',
 '액션',
 '실망',
 '시리즈',
 '노력',
 '점수',
 '점',
 '과잉',
 '끝판',
 '중',
 '병',
 '수준',
 '가족',
 '의리',
 '주인공',
 '가족',
 '원수',
 '스타',
 '뎀',
 '정',
 '내러티브',
 '액션',
 '과잉',
 '드라마',
 '부족',
 '순간',
 '헐리우드',
 '영화',
 '부수',
 '퇴보',
 '거듭',
 '액션영화',
 '로서',
 '뭐',
 '만',
 '의아',
 '건',
 '빈',
 '디젤',
 '사람',
 '배우',
 '역사상',
 '가장',
 '매력',
 '굼뜬',
 '액션',
 '배우',
 '도무지',
 '배우',
 '로서',
 '그',
 '매력',
 '수가',
 '이',
 '정도',
 '액션영화',
 '준수',
 '역쉬',
 '분노',
 '질주',
 '시리즈',
 '격',
 '액션',
 '하나',
 '볼',
 '거기',
 '아기',
 '덤',
 '편',
 '이후',
 '가장',
 '역시',
 '쿡',
 '영화',
 '답',
 '부',
 '다음',
 '뭘',
 '부',
 '이형은',
 '자동차',
 '어디',
 '서든',
 '머',
 '드라마',
 '액션',
 '화려',
 '단지',
 '맘',
 '캐릭터',
 '중',
 '명',
 '후',
 '영화',
 '나중',
 '반전',
 '마지막',
 '장면',
 '반전',
 '감옥',
 '싸움',
 '카메라',
 '앵글',
 '초반',
 '홉스',
 '데커드',
 '싸움',
 '장면',
 '연상',
 '위',
 '장면',
 '감독',
 '일부러',
 '말',
 '역시',
 '기대',
 '저',
 '스토리',
 '전개',
 '약간',
 '어거지',
 '액션',
 '느낌',
 '굿',
 '가족',
 '애',
 '영화',
 '액션',
 '볼',
 '함',
 '시리즈',
 '구입',
 '임',
 '내스퇗',
 '분노의질주',
 '때',
 '이상',
 '분노의질주',
 '마지막',
 '아기',
 '이름',
 '땐',
 '아쉬움',
 '분노',
 '질주',
 '시리즈',
 '매번',
 '기대',
 '저',
 '쇼',
 '아기',
 '구',
 '때',
 '장면',
 '가장',
 '기억',
 '남아',
 '정말',
 '쇼',
 '반했어',
 '역시',
 '분노의질주',
 '액션',
 '최고',
 '스케일',
 '영화',
 '슴',
 '분노의질주',
 '완전',
 '사랑',
 '스릴',
 '만점',
 '시리즈',
 '재미',
 '솔솔',
 '영화',
 '폭력',
 '액션',
 '스트레스',
 '영화',
 '뭐',
 '말',
 '스트레스',
 '영화',
 '이제',
 '분노',
 '질주',
 '시리즈',
 '느낌',
 '영화',
 '그',
 '동안',
 '명성',
 '때',
 '정리',
 '것',
 '가지',
 '장면',
 '제외',
 '감흥',
 '영화',
 '마지막',
 '액션',
 '이건',
 '뭐',
 '폴',
 '워커',
 '빈자리',
 '줄',
 '원래',
 '자동차',
 '씬',
 '출연',
 '진',
 '간의',
 '가족',
 '케미',
 '재미',
 '자동차',
 '남아',
 '허공',
 '느낌',
 '자동차',
 '씬',
 ...]

nltk.Text

nltk.Text()는 문서 하나를 편리하게 탐색할 수 있는 다양한 기능을 제공

토큰화란?

토큰화(tokenization)는 텍스트 문서를 띄어쓰기 공백과 모든 구두점을 제거하여 연속하는 단어의 열(stream of words)로 분할하는 것이다(Hotho et al., 2005)

In [29]:
ko = nltk.Text(tokens_ko, name="분노의 질주")
print(len(ko.tokens))       # tokens의 수
print(len(set(ko.tokens)))  # 유일한 tokens의 수
print(type(ko))             # ko의 자료형 
ko.vocab()  # 단어 빈도     # ko 자료 단어 및 빈도
4286
1381
<class 'nltk.text.Text'>
Out[29]:
FreqDist({'영화': 157, '액션': 149, '시리즈': 70, '분노': 62, '스토리': 57, '질주': 55, '최고': 44, '자동차': 40, '생각': 37, '편': 37, ...})
In [30]:
plt.figure(figsize=(12,6))
ko.plot(50)
plt.show()

불용어 처리

  • 불용어란? : 가용어가 아닌 단어들
In [31]:
### 불용어 처리
stop_words = ['더', '말', '때', '눈', '또', '이', '그', '좀', '점', '것', '돈', '이제', '분노', '질주' ]

#ko = [each_word for each_word in ko if each_word not in stop_words]
# 만약 단어가 불용어 있지 않다면 추가, 있다면 추가하지 않음.
new_ko = []   
for one_word in ko:
    if one_word not in stop_words:
        new_ko.append(one_word)
In [32]:
new_ko = nltk.Text(new_ko, name="분노의 질주")
plt.figure(figsize=(12,6))
new_ko.plot(50)
plt.show()

문서에서 언급된 횟수

In [33]:
new_ko
Out[33]:
<Text: 분노의 질주>
In [34]:
# 몇번이나 문서에서 언급이 되었을까?
new_ko.count("자동차")
Out[34]:
40

dispersion_plot

  • 텍스트를 통해 단어의 분포를 보여주는 플롯을 만든다. pylab을 설치해야합니다.
In [35]:
### 원하는 단어의 문서내 위치를 알 수 있음.
plt.figure(figsize=(15,8))
new_ko.dispersion_plot(["영화", "액션", "시리즈", "대박"])

워드 클라우드 적용

In [36]:
from wordcloud import WordCloud, STOPWORDS

import numpy as np
from PIL import Image

stopwords = set(stop_words)  # 불용어 처리
Car_mask = np.array(Image.open("img/Draw_car1.png"))
In [37]:
data = new_ko.vocab().most_common(150)
In [38]:
# path = "C:/Windows/Fonts/malgun.ttf"
wc = WordCloud(font_path=path, relative_scaling=0.2,
               background_color="white", mask=Car_mask).generate_from_frequencies(dict(data))

plt.figure(figsize=(12,8))
plt.imshow(wc)
plt.axis("off")
plt.show()

REFERENCE

Konlpy 공식 페이지 : http://konlpy.org/ko/latest/api/konlpy.tag/
lucypark 텍스트 마이닝 코스 : https://www.lucypark.kr/courses/2015-dm/text-mining.html
텍스트 마이닝 기본 정리: https://www.slideshare.net/dongjolim7/tf-idf-123609543
워드 클라우드 생성기 : http://wordcloud.kr/