AITech 학습정리-[DAY 16] Introduction to NLP, Bag-of-Words, Word2Vec, GloVe, NaiveBayes Classifier
과거의 것들/AI Tech boostcamp

AITech 학습정리-[DAY 16] Introduction to NLP, Bag-of-Words, Word2Vec, GloVe, NaiveBayes Classifier

============================

학습내용

(1강) Intro to NLP, Bag-of-Words

자연어에서 수행하는 일들

Low-level parsing

단어화가 Tokenization, 단어 의미 자체를 추론하는게 stemming.

Word and phrase level

고유명사 추론 Named entity recognition(NER), 단어가 문장 내에서의 성분이 뭔지를 알아내는 part-of-speech(POS) tagging, 어떤단어가 주어인지, 동사인지, 형용사인지, 형용사라면 어떤걸 꾸며주고 있는건지..

Sentence level

긍정어조, 부정언조인지 판단하는게 Sentiment analysis. 주어진 영어 전체문장을 이해하고 한글로 번역하는게 machine translation

Multi-sentence and paragraph level

두 문장간의 모순관계를 예측하는게 Entailment prediction. 질의응답 형태, 말 그대로 문장으로 물어보면 이해하고 정답을 알려주는거 question answering. 챗봇과 같은 대화 수행이 가능한게 dialog systems. 주어진 문서를 한 줄 요약등 자동요약이 summarization.

 

text mining을 통해 의미있는 정보를 추론해낸다. 제품 후기들을 모아서 본다던지, 확대해서 보면 social science에 응용 가능하다. 검색엔진쪽은 이미 상당히 성숙해서 느리게 발전하지만 어쨌든 발전함.

단어를 어느 한 백터 차원으로 바꾸고, sequence니까 RNN 및 관련된 모델들 (LSTMs, GRUs) 들을 써왔지만 Transformer 모델이 너무 좋아 여러 분야에도 쓰이고 있다.

요새는 이 transformer를 쌓는 방식으로 모델을 만들고, BERT, GPT-3 같은 모델에선 비지도 학습도 하는데 자연어처리에서 비지도 학습이란 문장에서 단어 하나 빼놓고 뭔지 맞추는 거임. 정확하게는 몰라도 문맥상, 문법상 어색하지 않는 정도는 해볼 수 있으니까.

 

Bag-of-Words

문장이 여러개가 있을 때, 각 단어에 대해 사전을 만들어 하나의 차원 one-hot vector를 만든다. 그래서 문장마다 이 벡터들을 더하는 방식으로 문장을 해석함. 그래서 각 단어의 거리는 root(2)가 되고 cosine 유사도는 0.

이렇게 나온 문장이 어느 종류의 문장 (어느 카테고리에 속하는 문장인지) 를 결정해보는게 NaiveBayes Classifier.

문장 d가 있고 만약 현재 정의된 카테고리가 4개다 라고 하면 C가 4임. c는 각각의 클래스가 되겠지.

그래서 문장에 대해 각 class가 어느곳에 속할 확률이 높은지 다 계산해본 다음 제일 높은걸로. 

 

(2강) Word Embedding

word embedding

단어를 좌표공간벡터로 해서 유사도 측정에 쉬워진다. 거리로 판단. love like 벡터유사. 유사한 입력. 긍정이구나.

Word2Vec

단어를 벡터로 해서 거리가 가까울 수록 유사하거나 관계가 깊단 뜻임. 예를들면 the cat 하면 purrs. the cat hunts ㅁ 하면 the cat 의 hunt 동사 뒤에 ㅁ이랑 가장 가까운 벡터는 mice.

sentence에서 window 형식으로 유사도를 측정. input과 output의 demension은 같게하고 중간의 W1과 W2는 hidden layer 차원에 맞게. one-hot vector라서 추출되는 형태로 학습되는데 저 상태로 최대한 맞게 학습된다. 0,0,1 형식으로 나와야 해서 softmax 하기 전 무한대로 수렴함.

https://ronxin.github.io/wevi/

파란색일수록 양수, 핑크색일수록 음수인데 input vector를 보면 juice 와 milk는 똑같이 마시는 액체이기 때문에 유사하고 두개 다 output vector의 drink와 비슷하다. 따라서 이 둘간의 내적값이 최대한 커진다. 두개가 비슷해야 최대로 커진다.

두 백터의 관계가 두 단어 사이의 관계가 됨.

word intrusion detection은 그냥 모든 단어들끼리 서로 거리 재보고 제일 먼 걸 걸러낸다.

 

벡터 위치로 비슷한 단어들끼리 번역한다.

 

 

 

word embedding 방법으로 많이 쓰이는 GloVe가 word2vec와 차이점은, 각 입력 출력 단어 쌍 사이 두 단어가 Pij라고 window를 미리 수행해서 i와j가 동시에 나오는 확률, 경우의 수에 log를 씌운 것이 두 벡터를 내적한 값에 fitting 될 수 있도록 loss function을 적용한다.

word2vec은 입력출력 쌍이 자주 등장했을 때 이 것만 여러번에 걸쳐 학습되서 두 word embedding 의 내적값이 비례해서 커지도록 학습되었다면 glove에선 저런식으로 계산해서 중복된 값을 줄여줄 수 있어서 더 빠르게 되고 작은 데이터에서도 잘 작동한다. 또 선형대수의 관점에서 추천시스템에 많이 활용되는 알고리즘인 co-occurrence matrix의 low rank matrix factorization 의 task로도 이해할 수 있다. 두 개 모두 쌍을 이용해서 학습하고 성능도 비등하게 나온다.

미리 학습해놓은거 슬 수 있다. hidden dimension도 조절해서 학습해놨음.

 

 

1. Naive Bayes

실습 1강: Naive Bayes classifier 구현.

 

 



 
 
 
 
 
 

1. NaiveBayes Classifier

  1. 주어진 데이터를 전처리합니다.
  2. NaiveBayes 분류기 모델을 구현하고 학습 데이터로 이를 학습시킵니다.
  3. 간단한 test case로 결과를 확인합니다.
 
 
 
 
 

필요 패키지 import

 
 
 
 
[-]
 
 
 
!pip install konlpy
 
 
 
 
 
Collecting konlpy ?25l Downloading https://files.pythonhosted.org/packages/85/0e/f385566fec837c0b83f216b2da65db9997b35dd675e107752005b7d392b1/konlpy-0.5.2-py2.py3-none-any.whl (19.4MB) |████████████████████████████████| 19.4MB 34.4MB/s ?25hCollecting colorama Downloading https://files.pythonhosted.org/packages/44/98/5b86278fbbf250d239ae0ecb724f8572af1c91f4a11edf4d36a206189440/colorama-0.4.4-py2.py3-none-any.whl Requirement already satisfied: lxml>=4.1.0 in /usr/local/lib/python3.6/dist-packages (from konlpy) (4.2.6) Collecting beautifulsoup4==4.6.0 ?25l Downloading https://files.pythonhosted.org/packages/9e/d4/10f46e5cfac773e22707237bfcd51bbffeaf0a576b0a847ec7ab15bd7ace/beautifulsoup4-4.6.0-py3-none-any.whl (86kB) |████████████████████████████████| 92kB 3.4MB/s ?25hCollecting tweepy>=3.7.0 Downloading https://files.pythonhosted.org/packages/67/c3/6bed87f3b1e5ed2f34bd58bf7978e308c86e255193916be76e5a5ce5dfca/tweepy-3.10.0-py2.py3-none-any.whl Collecting JPype1>=0.7.0 ?25l Downloading https://files.pythonhosted.org/packages/de/af/93f92b38ec1ff3091cd38982ed19cea2800fefb609b5801c41fc43c0781e/JPype1-1.2.1-cp36-cp36m-manylinux2010_x86_64.whl (457kB) |████████████████████████████████| 460kB 53.6MB/s ?25hRequirement already satisfied: numpy>=1.6 in /usr/local/lib/python3.6/dist-packages (from konlpy) (1.19.5) Requirement already satisfied: requests[socks]>=2.11.1 in /usr/local/lib/python3.6/dist-packages (from tweepy>=3.7.0->konlpy) (2.23.0) Requirement already satisfied: requests-oauthlib>=0.7.0 in /usr/local/lib/python3.6/dist-packages (from tweepy>=3.7.0->konlpy) (1.3.0) Requirement already satisfied: six>=1.10.0 in /usr/local/lib/python3.6/dist-packages (from tweepy>=3.7.0->konlpy) (1.15.0) Requirement already satisfied: typing-extensions; python_version < "3.8" in /usr/local/lib/python3.6/dist-packages (from JPype1>=0.7.0->konlpy) (3.7.4.3) Requirement already satisfied: idna<3,>=2.5 in /usr/local/lib/python3.6/dist-packages (from requests[socks]>=2.11.1->tweepy>=3.7.0->konlpy) (2.10) Requirement already satisfied: chardet<4,>=3.0.2 in /usr/local/lib/python3.6/dist-packages (from requests[socks]>=2.11.1->tweepy>=3.7.0->konlpy) (3.0.4) Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.6/dist-packages (from requests[socks]>=2.11.1->tweepy>=3.7.0->konlpy) (2020.12.5) Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in /usr/local/lib/python3.6/dist-packages (from requests[socks]>=2.11.1->tweepy>=3.7.0->konlpy) (1.24.3) Requirement already satisfied: PySocks!=1.5.7,>=1.5.6; extra == "socks" in /usr/local/lib/python3.6/dist-packages (from requests[socks]>=2.11.1->tweepy>=3.7.0->konlpy) (1.7.1) Requirement already satisfied: oauthlib>=3.0.0 in /usr/local/lib/python3.6/dist-packages (from requests-oauthlib>=0.7.0->tweepy>=3.7.0->konlpy) (3.1.0) Installing collected packages: colorama, beautifulsoup4, tweepy, JPype1, konlpy Found existing installation: beautifulsoup4 4.6.3 Uninstalling beautifulsoup4-4.6.3: Successfully uninstalled beautifulsoup4-4.6.3 Found existing installation: tweepy 3.6.0 Uninstalling tweepy-3.6.0: Successfully uninstalled tweepy-3.6.0 Successfully installed JPype1-1.2.1 beautifulsoup4-4.6.0 colorama-0.4.4 konlpy-0.5.2 tweepy-3.10.0
 
 
 
[-]
 
 
 
from tqdm import tqdm
 
# 다양한 한국어 형태소 분석기가 클래스로 구현되어 있음
from konlpy import tag 
 
from collections import defaultdict
 
import math
 
 
 
 
 
 
 
 
 
 
 

학습 및 테스트 데이터 전처리

 
 
 
 
 

Sample 데이터를 확인합니다.
긍정(11), 부정(00) 2가지 class로 구성되어 있습니다.

 
 
 
 
[-]
 
 
 
train_data = [
  "정말 맛있습니다. 추천합니다.",
  "기대했던 것보단 별로였네요.",
  "다 좋은데 가격이 너무 비싸서 다시 가고 싶다는 생각이 안 드네요.",
  "완전 최고입니다! 재방문 의사 있습니다.",
  "음식도 서비스도 다 만족스러웠습니다.",
  "위생 상태가 좀 별로였습니다. 좀 더 개선되기를 바랍니다.",
  "맛도 좋았고 직원분들 서비스도 너무 친절했습니다.",
  "기념일에 방문했는데 음식도 분위기도 서비스도 다 좋았습니다.",
  "전반적으로 음식이 너무 짰습니다. 저는 별로였네요.",
  "위생에 조금 더 신경 썼으면 좋겠습니다. 조금 불쾌했습니다."
]
train_labels = [1, 0, 0, 1, 1, 0, 1, 1, 0, 0]
 
test_data = [
  "정말 좋았습니다. 또 가고 싶네요.",
  "별로였습니다. 되도록 가지 마세요.",
  "다른 분들께도 추천드릴 수 있을 만큼 만족했습니다.",
  "서비스가 좀 더 개선되었으면 좋겠습니다. 기분이 좀 나빴습니다."
]
 
 
 
 
 
 
 
 
 
 
 

KoNLPy 패키지에서 제공하는 Twitter(Okt) tokenizer를 사용하여 tokenization합니다.

 
 
 
 
[-]
 
 
 
tokenizer = tag.Okt()
 
 
 
 
 
 
 
 
 
 
[-]
 
 
 
def make_tokenized(data):
  tokenized = []  # 단어 단위로 나뉜 리뷰 데이터.
 
  for sent in tqdm(data):
    tokens = tokenizer.morphs(sent)
    tokenized.append(tokens)
 
  return tokenized
 
 
 
 
 
 
 
 
 
 
[-]
 
 
 
train_tokenized = make_tokenized(train_data)
test_tokenized = make_tokenized(test_data)
 
 
 
 
 
 
100%|██████████| 10/10 [00:05<00:00, 1.67it/s] 100%|██████████| 4/4 [00:00<00:00, 114.88it/s]
 
 
 
[-]
 
 
 
train_tokenized
 
 
 
 
 
 
[['정말', '맛있습니다', '.', '추천', '합니다', '.'],
 ['기대했던', '것', '보단', '별로', '였네요', '.'],
 ['다',
  '좋은데',
  '가격',
  '이',
  '너무',
  '비싸서',
  '다시',
  '가고',
  '싶다는',
  '생각',
  '이',
  '안',
  '드네',
  '요',
  '.'],
 ['완전', '최고', '입니다', '!', '재', '방문', '의사', '있습니다', '.'],
 ['음식', '도', '서비스', '도', '다', '만족스러웠습니다', '.'],
 ['위생',
  '상태',
  '가',
  '좀',
  '별로',
  '였습니다',
  '.',
  '좀',
  '더',
  '개선',
  '되',
  '기를',
  '바랍니다',
  '.'],
 ['맛', '도', '좋았고', '직원', '분들', '서비스', '도', '너무', '친절했습니다', '.'],
 ['기념일',
  '에',
  '방문',
  '했는데',
  '음식',
  '도',
  '분위기',
  '도',
  '서비스',
  '도',
  '다',
  '좋았습니다',
  '.'],
 ['전반', '적', '으로', '음식', '이', '너무', '짰습니다', '.', '저', '는', '별로', '였네요', '.'],
 ['위생', '에', '조금', '더', '신경', '썼으면', '좋겠습니다', '.', '조금', '불쾌했습니다', '.']]
 
 
 
 

학습데이터 기준으로 가장 많이 등장한 단어부터 순서대로 vocab에 추가합니다.

 
 
 
 
[-]
 
 
 
word_count = defaultdict(int)  # Key: 단어, Value: 등장 횟수
 
for tokens in tqdm(train_tokenized):
  for token in tokens:
    word_count[token] += 1
 
 
 
 
 
 
100%|██████████| 10/10 [00:00<00:00, 5047.90it/s]
 
 
 
[-]
 
 
 
word_count = sorted(word_count.items(), key=lambda x: x[1], reverse=True)
print(len(word_count))
print(word_count)
 
 
 
 
 
 
66 [('.', 14), ('도', 7), ('별로', 3), ('다', 3), ('이', 3), ('너무', 3), ('음식', 3), ('서비스', 3), ('였네요', 2), ('방문', 2), ('위생', 2), ('좀', 2), ('더', 2), ('에', 2), ('조금', 2), ('정말', 1), ('맛있습니다', 1), ('추천', 1), ('합니다', 1), ('기대했던', 1), ('것', 1), ('보단', 1), ('좋은데', 1), ('가격', 1), ('비싸서', 1), ('다시', 1), ('가고', 1), ('싶다는', 1), ('생각', 1), ('안', 1), ('드네', 1), ('요', 1), ('완전', 1), ('최고', 1), ('입니다', 1), ('!', 1), ('재', 1), ('의사', 1), ('있습니다', 1), ('만족스러웠습니다', 1), ('상태', 1), ('가', 1), ('였습니다', 1), ('개선', 1), ('되', 1), ('기를', 1), ('바랍니다', 1), ('맛', 1), ('좋았고', 1), ('직원', 1), ('분들', 1), ('친절했습니다', 1), ('기념일', 1), ('했는데', 1), ('분위기', 1), ('좋았습니다', 1), ('전반', 1), ('적', 1), ('으로', 1), ('짰습니다', 1), ('저', 1), ('는', 1), ('신경', 1), ('썼으면', 1), ('좋겠습니다', 1), ('불쾌했습니다', 1)]
 
 
 
[-]
 
 
 
w2i = {}  # Key: 단어, Value: 단어의 index
for pair in tqdm(word_count):
  if pair[0] not in w2i:
    w2i[pair[0]] = len(w2i)
 
 
 
 
 
 
100%|██████████| 66/66 [00:00<00:00, 18315.74it/s]
 
 
 
[-]
 
 
 
len(w2i)
 
 
 
 
 
 
66
 
 
 
[-]
 
 
 
w2i
 
 
 
 
 
 
{'!': 35,
 '.': 0,
 '가': 41,
 '가격': 23,
 '가고': 26,
 '개선': 43,
 '것': 20,
 '기념일': 52,
 '기대했던': 19,
 '기를': 45,
 '너무': 5,
 '는': 61,
 '다': 3,
 '다시': 25,
 '더': 12,
 '도': 1,
 '되': 44,
 '드네': 30,
 '만족스러웠습니다': 39,
 '맛': 47,
 '맛있습니다': 16,
 '바랍니다': 46,
 '방문': 9,
 '별로': 2,
 '보단': 21,
 '분들': 50,
 '분위기': 54,
 '불쾌했습니다': 65,
 '비싸서': 24,
 '상태': 40,
 '생각': 28,
 '서비스': 7,
 '신경': 62,
 '싶다는': 27,
 '썼으면': 63,
 '안': 29,
 '에': 13,
 '였네요': 8,
 '였습니다': 42,
 '완전': 32,
 '요': 31,
 '위생': 10,
 '으로': 58,
 '음식': 6,
 '의사': 37,
 '이': 4,
 '입니다': 34,
 '있습니다': 38,
 '재': 36,
 '저': 60,
 '적': 57,
 '전반': 56,
 '정말': 15,
 '조금': 14,
 '좀': 11,
 '좋겠습니다': 64,
 '좋았고': 48,
 '좋았습니다': 55,
 '좋은데': 22,
 '직원': 49,
 '짰습니다': 59,
 '최고': 33,
 '추천': 17,
 '친절했습니다': 51,
 '합니다': 18,
 '했는데': 53}
 
 
 
 

모델 Class 구현

 
 
 
 
 

NaiveBayes Classifier 모델 클래스를 구현합니다.

  • self.k: Smoothing을 위한 상수.
  • self.w2i: 사전에 구한 vocab.
  • self.priors: 각 class의 prior 확률.
  • self.likelihoods: 각 token의 특정 class 조건 내에서의 likelihood.
 
 
 
 
[-]
 
 
 
class NaiveBayesClassifier():
  def __init__(self, w2i, k=0.1):
    self.k = k
    self.w2i = w2i
    self.priors = {}
    self.likelihoods = {}
 
  def train(self, train_tokenized, train_labels):
    self.set_priors(train_labels)  # Priors 계산.
    # P(0) = (5/10), P(1) = (5/10)
    self.set_likelihoods(train_tokenized, train_labels)  # Likelihoods 계산.
    # likelihoods. 각 token이 class 내에 등장할 확률
 
  def inference(self, tokens):
    log_prob0 = 0.0
    log_prob1 = 0.0
 
    for token in tokens:
      if token in self.likelihoods:  # 학습 당시 추가했던 단어에 대해서만 고려.
        log_prob0 += math.log(self.likelihoods[token][0])
        log_prob1 += math.log(self.likelihoods[token][1])
 
    # 마지막에 prior를 고려.
    log_prob0 += math.log(self.priors[0])
    log_prob1 += math.log(self.priors[1])
 
    if log_prob0 >= log_prob1:
      return 0
    else:
      return 1
 
  def set_priors(self, train_labels):
    class_counts = defaultdict(int)
    for label in tqdm(train_labels):
      class_counts[label] += 1
    
    for label, count in class_counts.items():
      self.priors[label] = class_counts[label] / len(train_labels)
 
  def set_likelihoods(self, train_tokenized, train_labels):
    token_dists = {}  # 각 단어의 특정 class 조건 하에서의 등장 횟수.
    class_counts = defaultdict(int)  # 특정 class에서 등장한 모든 단어의 등장 횟수.
    
    for i, label in enumerate(tqdm(train_labels)):
      count = 0
      for token in train_tokenized[i]:
        if token in self.w2i:  # 학습 데이터로 구축한 vocab에 있는 token만 고려.
          if token not in token_dists:
            token_dists[token] = {0:0, 1:0}
          token_dists[token][label] += 1
          count += 1
          print("token_dists : " , token_dists)
      class_counts[label] += count
      print("class_counts : ", class_counts)
 
    # likelihoods. 각 token이 class 내에 등장할 확률
    for token, dist in tqdm(token_dists.items()):
      if token not in self.likelihoods:
        self.likelihoods[token] = {
            0:(token_dists[token][0] + self.k) / (class_counts[0] + len(self.w2i)*self.k),
            1:(token_dists[token][1] + self.k) / (class_counts[1] + len(self.w2i)*self.k),
        }
 
 
 
 
 
 
 
 
 
 

모델 학습

 
 
 
 
 

모델 객체를 만들고 학습 데이터로 학습시킵니다.

 
 
 
 
[-]
 
 
 
classifier = NaiveBayesClassifier(w2i)
classifier.train(train_tokenized, train_labels)
 
 
 
 
 
 
100%|██████████| 10/10 [00:00<00:00, 45051.60it/s] 100%|██████████| 10/10 [00:00<00:00, 465.39it/s] 100%|██████████| 66/66 [00:00<00:00, 11834.64it/s]
token_dists : {'정말': {0: 0, 1: 1}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 0, 1: 1}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 0, 1: 1}, '추천': {0: 0, 1: 1}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 0, 1: 1}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 0, 1: 2}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}} class_counts : defaultdict(<class 'int'>, {1: 6}) token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 0, 1: 2}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 0, 1: 2}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 0, 1: 2}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 0, 1: 2}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 1, 1: 0}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 0, 1: 2}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 1, 1: 0}, '였네요': {0: 1, 1: 0}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 1, 1: 2}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 1, 1: 0}, '였네요': {0: 1, 1: 0}} class_counts : defaultdict(<class 'int'>, {1: 6, 0: 6}) token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 1, 1: 2}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 1, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 0}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 1, 1: 2}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 1, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 0}, '좋은데': {0: 1, 1: 0}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 1, 1: 2}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 1, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 0}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 1, 1: 2}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 1, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 0}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 1, 1: 0}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 1, 1: 2}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 1, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 0}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 1, 1: 0}, '너무': {0: 1, 1: 0}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 1, 1: 2}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 1, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 0}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 1, 1: 0}, '너무': {0: 1, 1: 0}, '비싸서': {0: 1, 1: 0}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 1, 1: 2}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 1, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 0}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 1, 1: 0}, '너무': {0: 1, 1: 0}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 1, 1: 2}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 1, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 0}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 1, 1: 0}, '너무': {0: 1, 1: 0}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 1, 1: 2}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 1, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 0}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 1, 1: 0}, '너무': {0: 1, 1: 0}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 1, 1: 2}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 1, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 0}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 1, 1: 0}, '너무': {0: 1, 1: 0}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 1, 1: 2}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 1, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 0}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 2, 1: 0}, '너무': {0: 1, 1: 0}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 1, 1: 2}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 1, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 0}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 2, 1: 0}, '너무': {0: 1, 1: 0}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 1, 1: 2}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 1, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 0}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 2, 1: 0}, '너무': {0: 1, 1: 0}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 1, 1: 2}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 1, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 0}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 2, 1: 0}, '너무': {0: 1, 1: 0}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 2, 1: 2}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 1, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 0}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 2, 1: 0}, '너무': {0: 1, 1: 0}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}} class_counts : defaultdict(<class 'int'>, {1: 6, 0: 21}) token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 2, 1: 2}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 1, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 0}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 2, 1: 0}, '너무': {0: 1, 1: 0}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 2, 1: 2}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 1, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 0}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 2, 1: 0}, '너무': {0: 1, 1: 0}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 2, 1: 2}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 1, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 0}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 2, 1: 0}, '너무': {0: 1, 1: 0}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 2, 1: 2}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 1, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 0}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 2, 1: 0}, '너무': {0: 1, 1: 0}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 2, 1: 2}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 1, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 0}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 2, 1: 0}, '너무': {0: 1, 1: 0}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 2, 1: 2}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 1, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 0}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 2, 1: 0}, '너무': {0: 1, 1: 0}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 1}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 2, 1: 2}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 1, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 0}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 2, 1: 0}, '너무': {0: 1, 1: 0}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 1}, '의사': {0: 0, 1: 1}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 2, 1: 2}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 1, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 0}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 2, 1: 0}, '너무': {0: 1, 1: 0}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 1}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 2, 1: 3}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 1, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 0}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 2, 1: 0}, '너무': {0: 1, 1: 0}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 1}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}} class_counts : defaultdict(<class 'int'>, {1: 15, 0: 21}) token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 2, 1: 3}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 1, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 0}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 2, 1: 0}, '너무': {0: 1, 1: 0}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 1}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 0, 1: 1}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 2, 1: 3}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 1, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 0}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 2, 1: 0}, '너무': {0: 1, 1: 0}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 1}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 0, 1: 1}, '도': {0: 0, 1: 1}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 2, 1: 3}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 1, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 0}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 2, 1: 0}, '너무': {0: 1, 1: 0}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 1}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 0, 1: 1}, '도': {0: 0, 1: 1}, '서비스': {0: 0, 1: 1}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 2, 1: 3}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 1, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 0}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 2, 1: 0}, '너무': {0: 1, 1: 0}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 1}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 0, 1: 1}, '도': {0: 0, 1: 2}, '서비스': {0: 0, 1: 1}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 2, 1: 3}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 1, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 1}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 2, 1: 0}, '너무': {0: 1, 1: 0}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 1}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 0, 1: 1}, '도': {0: 0, 1: 2}, '서비스': {0: 0, 1: 1}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 2, 1: 3}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 1, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 1}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 2, 1: 0}, '너무': {0: 1, 1: 0}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 1}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 0, 1: 1}, '도': {0: 0, 1: 2}, '서비스': {0: 0, 1: 1}, '만족스러웠습니다': {0: 0, 1: 1}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 2, 1: 4}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 1, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 1}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 2, 1: 0}, '너무': {0: 1, 1: 0}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 1}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 0, 1: 1}, '도': {0: 0, 1: 2}, '서비스': {0: 0, 1: 1}, '만족스러웠습니다': {0: 0, 1: 1}} class_counts : defaultdict(<class 'int'>, {1: 22, 0: 21}) token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 2, 1: 4}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 1, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 1}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 2, 1: 0}, '너무': {0: 1, 1: 0}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 1}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 0, 1: 1}, '도': {0: 0, 1: 2}, '서비스': {0: 0, 1: 1}, '만족스러웠습니다': {0: 0, 1: 1}, '위생': {0: 1, 1: 0}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 2, 1: 4}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 1, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 1}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 2, 1: 0}, '너무': {0: 1, 1: 0}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 1}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 0, 1: 1}, '도': {0: 0, 1: 2}, '서비스': {0: 0, 1: 1}, '만족스러웠습니다': {0: 0, 1: 1}, '위생': {0: 1, 1: 0}, '상태': {0: 1, 1: 0}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 2, 1: 4}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 1, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 1}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 2, 1: 0}, '너무': {0: 1, 1: 0}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 1}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 0, 1: 1}, '도': {0: 0, 1: 2}, '서비스': {0: 0, 1: 1}, '만족스러웠습니다': {0: 0, 1: 1}, '위생': {0: 1, 1: 0}, '상태': {0: 1, 1: 0}, '가': {0: 1, 1: 0}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 2, 1: 4}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 1, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 1}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 2, 1: 0}, '너무': {0: 1, 1: 0}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 1}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 0, 1: 1}, '도': {0: 0, 1: 2}, '서비스': {0: 0, 1: 1}, '만족스러웠습니다': {0: 0, 1: 1}, '위생': {0: 1, 1: 0}, '상태': {0: 1, 1: 0}, '가': {0: 1, 1: 0}, '좀': {0: 1, 1: 0}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 2, 1: 4}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 2, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 1}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 2, 1: 0}, '너무': {0: 1, 1: 0}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 1}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 0, 1: 1}, '도': {0: 0, 1: 2}, '서비스': {0: 0, 1: 1}, '만족스러웠습니다': {0: 0, 1: 1}, '위생': {0: 1, 1: 0}, '상태': {0: 1, 1: 0}, '가': {0: 1, 1: 0}, '좀': {0: 1, 1: 0}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 2, 1: 4}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 2, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 1}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 2, 1: 0}, '너무': {0: 1, 1: 0}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 1}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 0, 1: 1}, '도': {0: 0, 1: 2}, '서비스': {0: 0, 1: 1}, '만족스러웠습니다': {0: 0, 1: 1}, '위생': {0: 1, 1: 0}, '상태': {0: 1, 1: 0}, '가': {0: 1, 1: 0}, '좀': {0: 1, 1: 0}, '였습니다': {0: 1, 1: 0}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 3, 1: 4}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 2, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 1}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 2, 1: 0}, '너무': {0: 1, 1: 0}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 1}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 0, 1: 1}, '도': {0: 0, 1: 2}, '서비스': {0: 0, 1: 1}, '만족스러웠습니다': {0: 0, 1: 1}, '위생': {0: 1, 1: 0}, '상태': {0: 1, 1: 0}, '가': {0: 1, 1: 0}, '좀': {0: 1, 1: 0}, '였습니다': {0: 1, 1: 0}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 3, 1: 4}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 2, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 1}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 2, 1: 0}, '너무': {0: 1, 1: 0}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 1}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 0, 1: 1}, '도': {0: 0, 1: 2}, '서비스': {0: 0, 1: 1}, '만족스러웠습니다': {0: 0, 1: 1}, '위생': {0: 1, 1: 0}, '상태': {0: 1, 1: 0}, '가': {0: 1, 1: 0}, '좀': {0: 2, 1: 0}, '였습니다': {0: 1, 1: 0}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 3, 1: 4}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 2, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 1}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 2, 1: 0}, '너무': {0: 1, 1: 0}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 1}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 0, 1: 1}, '도': {0: 0, 1: 2}, '서비스': {0: 0, 1: 1}, '만족스러웠습니다': {0: 0, 1: 1}, '위생': {0: 1, 1: 0}, '상태': {0: 1, 1: 0}, '가': {0: 1, 1: 0}, '좀': {0: 2, 1: 0}, '였습니다': {0: 1, 1: 0}, '더': {0: 1, 1: 0}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 3, 1: 4}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 2, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 1}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 2, 1: 0}, '너무': {0: 1, 1: 0}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 1}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 0, 1: 1}, '도': {0: 0, 1: 2}, '서비스': {0: 0, 1: 1}, '만족스러웠습니다': {0: 0, 1: 1}, '위생': {0: 1, 1: 0}, '상태': {0: 1, 1: 0}, '가': {0: 1, 1: 0}, '좀': {0: 2, 1: 0}, '였습니다': {0: 1, 1: 0}, '더': {0: 1, 1: 0}, '개선': {0: 1, 1: 0}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 3, 1: 4}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 2, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 1}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 2, 1: 0}, '너무': {0: 1, 1: 0}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 1}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 0, 1: 1}, '도': {0: 0, 1: 2}, '서비스': {0: 0, 1: 1}, '만족스러웠습니다': {0: 0, 1: 1}, '위생': {0: 1, 1: 0}, '상태': {0: 1, 1: 0}, '가': {0: 1, 1: 0}, '좀': {0: 2, 1: 0}, '였습니다': {0: 1, 1: 0}, '더': {0: 1, 1: 0}, '개선': {0: 1, 1: 0}, '되': {0: 1, 1: 0}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 3, 1: 4}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 2, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 1}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 2, 1: 0}, '너무': {0: 1, 1: 0}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 1}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 0, 1: 1}, '도': {0: 0, 1: 2}, '서비스': {0: 0, 1: 1}, '만족스러웠습니다': {0: 0, 1: 1}, '위생': {0: 1, 1: 0}, '상태': {0: 1, 1: 0}, '가': {0: 1, 1: 0}, '좀': {0: 2, 1: 0}, '였습니다': {0: 1, 1: 0}, '더': {0: 1, 1: 0}, '개선': {0: 1, 1: 0}, '되': {0: 1, 1: 0}, '기를': {0: 1, 1: 0}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 3, 1: 4}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 2, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 1}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 2, 1: 0}, '너무': {0: 1, 1: 0}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 1}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 0, 1: 1}, '도': {0: 0, 1: 2}, '서비스': {0: 0, 1: 1}, '만족스러웠습니다': {0: 0, 1: 1}, '위생': {0: 1, 1: 0}, '상태': {0: 1, 1: 0}, '가': {0: 1, 1: 0}, '좀': {0: 2, 1: 0}, '였습니다': {0: 1, 1: 0}, '더': {0: 1, 1: 0}, '개선': {0: 1, 1: 0}, '되': {0: 1, 1: 0}, '기를': {0: 1, 1: 0}, '바랍니다': {0: 1, 1: 0}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 4, 1: 4}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 2, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 1}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 2, 1: 0}, '너무': {0: 1, 1: 0}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 1}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 0, 1: 1}, '도': {0: 0, 1: 2}, '서비스': {0: 0, 1: 1}, '만족스러웠습니다': {0: 0, 1: 1}, '위생': {0: 1, 1: 0}, '상태': {0: 1, 1: 0}, '가': {0: 1, 1: 0}, '좀': {0: 2, 1: 0}, '였습니다': {0: 1, 1: 0}, '더': {0: 1, 1: 0}, '개선': {0: 1, 1: 0}, '되': {0: 1, 1: 0}, '기를': {0: 1, 1: 0}, '바랍니다': {0: 1, 1: 0}} class_counts : defaultdict(<class 'int'>, {1: 22, 0: 35}) token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 4, 1: 4}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 2, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 1}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 2, 1: 0}, '너무': {0: 1, 1: 0}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 1}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 0, 1: 1}, '도': {0: 0, 1: 2}, '서비스': {0: 0, 1: 1}, '만족스러웠습니다': {0: 0, 1: 1}, '위생': {0: 1, 1: 0}, '상태': {0: 1, 1: 0}, '가': {0: 1, 1: 0}, '좀': {0: 2, 1: 0}, '였습니다': {0: 1, 1: 0}, '더': {0: 1, 1: 0}, '개선': {0: 1, 1: 0}, '되': {0: 1, 1: 0}, '기를': {0: 1, 1: 0}, '바랍니다': {0: 1, 1: 0}, '맛': {0: 0, 1: 1}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 4, 1: 4}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 2, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 1}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 2, 1: 0}, '너무': {0: 1, 1: 0}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 1}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 0, 1: 1}, '도': {0: 0, 1: 3}, '서비스': {0: 0, 1: 1}, '만족스러웠습니다': {0: 0, 1: 1}, '위생': {0: 1, 1: 0}, '상태': {0: 1, 1: 0}, '가': {0: 1, 1: 0}, '좀': {0: 2, 1: 0}, '였습니다': {0: 1, 1: 0}, '더': {0: 1, 1: 0}, '개선': {0: 1, 1: 0}, '되': {0: 1, 1: 0}, '기를': {0: 1, 1: 0}, '바랍니다': {0: 1, 1: 0}, '맛': {0: 0, 1: 1}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 4, 1: 4}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 2, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 1}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 2, 1: 0}, '너무': {0: 1, 1: 0}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 1}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 0, 1: 1}, '도': {0: 0, 1: 3}, '서비스': {0: 0, 1: 1}, '만족스러웠습니다': {0: 0, 1: 1}, '위생': {0: 1, 1: 0}, '상태': {0: 1, 1: 0}, '가': {0: 1, 1: 0}, '좀': {0: 2, 1: 0}, '였습니다': {0: 1, 1: 0}, '더': {0: 1, 1: 0}, '개선': {0: 1, 1: 0}, '되': {0: 1, 1: 0}, '기를': {0: 1, 1: 0}, '바랍니다': {0: 1, 1: 0}, '맛': {0: 0, 1: 1}, '좋았고': {0: 0, 1: 1}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 4, 1: 4}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 2, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 1}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 2, 1: 0}, '너무': {0: 1, 1: 0}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 1}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 0, 1: 1}, '도': {0: 0, 1: 3}, '서비스': {0: 0, 1: 1}, '만족스러웠습니다': {0: 0, 1: 1}, '위생': {0: 1, 1: 0}, '상태': {0: 1, 1: 0}, '가': {0: 1, 1: 0}, '좀': {0: 2, 1: 0}, '였습니다': {0: 1, 1: 0}, '더': {0: 1, 1: 0}, '개선': {0: 1, 1: 0}, '되': {0: 1, 1: 0}, '기를': {0: 1, 1: 0}, '바랍니다': {0: 1, 1: 0}, '맛': {0: 0, 1: 1}, '좋았고': {0: 0, 1: 1}, '직원': {0: 0, 1: 1}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 4, 1: 4}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 2, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 1}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 2, 1: 0}, '너무': {0: 1, 1: 0}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 1}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 0, 1: 1}, '도': {0: 0, 1: 3}, '서비스': {0: 0, 1: 1}, '만족스러웠습니다': {0: 0, 1: 1}, '위생': {0: 1, 1: 0}, '상태': {0: 1, 1: 0}, '가': {0: 1, 1: 0}, '좀': {0: 2, 1: 0}, '였습니다': {0: 1, 1: 0}, '더': {0: 1, 1: 0}, '개선': {0: 1, 1: 0}, '되': {0: 1, 1: 0}, '기를': {0: 1, 1: 0}, '바랍니다': {0: 1, 1: 0}, '맛': {0: 0, 1: 1}, '좋았고': {0: 0, 1: 1}, '직원': {0: 0, 1: 1}, '분들': {0: 0, 1: 1}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 4, 1: 4}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 2, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 1}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 2, 1: 0}, '너무': {0: 1, 1: 0}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 1}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 0, 1: 1}, '도': {0: 0, 1: 3}, '서비스': {0: 0, 1: 2}, '만족스러웠습니다': {0: 0, 1: 1}, '위생': {0: 1, 1: 0}, '상태': {0: 1, 1: 0}, '가': {0: 1, 1: 0}, '좀': {0: 2, 1: 0}, '였습니다': {0: 1, 1: 0}, '더': {0: 1, 1: 0}, '개선': {0: 1, 1: 0}, '되': {0: 1, 1: 0}, '기를': {0: 1, 1: 0}, '바랍니다': {0: 1, 1: 0}, '맛': {0: 0, 1: 1}, '좋았고': {0: 0, 1: 1}, '직원': {0: 0, 1: 1}, '분들': {0: 0, 1: 1}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 4, 1: 4}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 2, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 1}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 2, 1: 0}, '너무': {0: 1, 1: 0}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 1}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 0, 1: 1}, '도': {0: 0, 1: 4}, '서비스': {0: 0, 1: 2}, '만족스러웠습니다': {0: 0, 1: 1}, '위생': {0: 1, 1: 0}, '상태': {0: 1, 1: 0}, '가': {0: 1, 1: 0}, '좀': {0: 2, 1: 0}, '였습니다': {0: 1, 1: 0}, '더': {0: 1, 1: 0}, '개선': {0: 1, 1: 0}, '되': {0: 1, 1: 0}, '기를': {0: 1, 1: 0}, '바랍니다': {0: 1, 1: 0}, '맛': {0: 0, 1: 1}, '좋았고': {0: 0, 1: 1}, '직원': {0: 0, 1: 1}, '분들': {0: 0, 1: 1}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 4, 1: 4}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 2, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 1}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 2, 1: 0}, '너무': {0: 1, 1: 1}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 1}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 0, 1: 1}, '도': {0: 0, 1: 4}, '서비스': {0: 0, 1: 2}, '만족스러웠습니다': {0: 0, 1: 1}, '위생': {0: 1, 1: 0}, '상태': {0: 1, 1: 0}, '가': {0: 1, 1: 0}, '좀': {0: 2, 1: 0}, '였습니다': {0: 1, 1: 0}, '더': {0: 1, 1: 0}, '개선': {0: 1, 1: 0}, '되': {0: 1, 1: 0}, '기를': {0: 1, 1: 0}, '바랍니다': {0: 1, 1: 0}, '맛': {0: 0, 1: 1}, '좋았고': {0: 0, 1: 1}, '직원': {0: 0, 1: 1}, '분들': {0: 0, 1: 1}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 4, 1: 4}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 2, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 1}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 2, 1: 0}, '너무': {0: 1, 1: 1}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 1}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 0, 1: 1}, '도': {0: 0, 1: 4}, '서비스': {0: 0, 1: 2}, '만족스러웠습니다': {0: 0, 1: 1}, '위생': {0: 1, 1: 0}, '상태': {0: 1, 1: 0}, '가': {0: 1, 1: 0}, '좀': {0: 2, 1: 0}, '였습니다': {0: 1, 1: 0}, '더': {0: 1, 1: 0}, '개선': {0: 1, 1: 0}, '되': {0: 1, 1: 0}, '기를': {0: 1, 1: 0}, '바랍니다': {0: 1, 1: 0}, '맛': {0: 0, 1: 1}, '좋았고': {0: 0, 1: 1}, '직원': {0: 0, 1: 1}, '분들': {0: 0, 1: 1}, '친절했습니다': {0: 0, 1: 1}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 4, 1: 5}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 2, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 1}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 2, 1: 0}, '너무': {0: 1, 1: 1}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 1}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 0, 1: 1}, '도': {0: 0, 1: 4}, '서비스': {0: 0, 1: 2}, '만족스러웠습니다': {0: 0, 1: 1}, '위생': {0: 1, 1: 0}, '상태': {0: 1, 1: 0}, '가': {0: 1, 1: 0}, '좀': {0: 2, 1: 0}, '였습니다': {0: 1, 1: 0}, '더': {0: 1, 1: 0}, '개선': {0: 1, 1: 0}, '되': {0: 1, 1: 0}, '기를': {0: 1, 1: 0}, '바랍니다': {0: 1, 1: 0}, '맛': {0: 0, 1: 1}, '좋았고': {0: 0, 1: 1}, '직원': {0: 0, 1: 1}, '분들': {0: 0, 1: 1}, '친절했습니다': {0: 0, 1: 1}} class_counts : defaultdict(<class 'int'>, {1: 32, 0: 35}) token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 4, 1: 5}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 2, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 1}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 2, 1: 0}, '너무': {0: 1, 1: 1}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 1}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 0, 1: 1}, '도': {0: 0, 1: 4}, '서비스': {0: 0, 1: 2}, '만족스러웠습니다': {0: 0, 1: 1}, '위생': {0: 1, 1: 0}, '상태': {0: 1, 1: 0}, '가': {0: 1, 1: 0}, '좀': {0: 2, 1: 0}, '였습니다': {0: 1, 1: 0}, '더': {0: 1, 1: 0}, '개선': {0: 1, 1: 0}, '되': {0: 1, 1: 0}, '기를': {0: 1, 1: 0}, '바랍니다': {0: 1, 1: 0}, '맛': {0: 0, 1: 1}, '좋았고': {0: 0, 1: 1}, '직원': {0: 0, 1: 1}, '분들': {0: 0, 1: 1}, '친절했습니다': {0: 0, 1: 1}, '기념일': {0: 0, 1: 1}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 4, 1: 5}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 2, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 1}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 2, 1: 0}, '너무': {0: 1, 1: 1}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 1}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 0, 1: 1}, '도': {0: 0, 1: 4}, '서비스': {0: 0, 1: 2}, '만족스러웠습니다': {0: 0, 1: 1}, '위생': {0: 1, 1: 0}, '상태': {0: 1, 1: 0}, '가': {0: 1, 1: 0}, '좀': {0: 2, 1: 0}, '였습니다': {0: 1, 1: 0}, '더': {0: 1, 1: 0}, '개선': {0: 1, 1: 0}, '되': {0: 1, 1: 0}, '기를': {0: 1, 1: 0}, '바랍니다': {0: 1, 1: 0}, '맛': {0: 0, 1: 1}, '좋았고': {0: 0, 1: 1}, '직원': {0: 0, 1: 1}, '분들': {0: 0, 1: 1}, '친절했습니다': {0: 0, 1: 1}, '기념일': {0: 0, 1: 1}, '에': {0: 0, 1: 1}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 4, 1: 5}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 2, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 1}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 2, 1: 0}, '너무': {0: 1, 1: 1}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 2}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 0, 1: 1}, '도': {0: 0, 1: 4}, '서비스': {0: 0, 1: 2}, '만족스러웠습니다': {0: 0, 1: 1}, '위생': {0: 1, 1: 0}, '상태': {0: 1, 1: 0}, '가': {0: 1, 1: 0}, '좀': {0: 2, 1: 0}, '였습니다': {0: 1, 1: 0}, '더': {0: 1, 1: 0}, '개선': {0: 1, 1: 0}, '되': {0: 1, 1: 0}, '기를': {0: 1, 1: 0}, '바랍니다': {0: 1, 1: 0}, '맛': {0: 0, 1: 1}, '좋았고': {0: 0, 1: 1}, '직원': {0: 0, 1: 1}, '분들': {0: 0, 1: 1}, '친절했습니다': {0: 0, 1: 1}, '기념일': {0: 0, 1: 1}, '에': {0: 0, 1: 1}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 4, 1: 5}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 2, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 1}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 2, 1: 0}, '너무': {0: 1, 1: 1}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 2}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 0, 1: 1}, '도': {0: 0, 1: 4}, '서비스': {0: 0, 1: 2}, '만족스러웠습니다': {0: 0, 1: 1}, '위생': {0: 1, 1: 0}, '상태': {0: 1, 1: 0}, '가': {0: 1, 1: 0}, '좀': {0: 2, 1: 0}, '였습니다': {0: 1, 1: 0}, '더': {0: 1, 1: 0}, '개선': {0: 1, 1: 0}, '되': {0: 1, 1: 0}, '기를': {0: 1, 1: 0}, '바랍니다': {0: 1, 1: 0}, '맛': {0: 0, 1: 1}, '좋았고': {0: 0, 1: 1}, '직원': {0: 0, 1: 1}, '분들': {0: 0, 1: 1}, '친절했습니다': {0: 0, 1: 1}, '기념일': {0: 0, 1: 1}, '에': {0: 0, 1: 1}, '했는데': {0: 0, 1: 1}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 4, 1: 5}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 2, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 1}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 2, 1: 0}, '너무': {0: 1, 1: 1}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 2}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 0, 1: 2}, '도': {0: 0, 1: 4}, '서비스': {0: 0, 1: 2}, '만족스러웠습니다': {0: 0, 1: 1}, '위생': {0: 1, 1: 0}, '상태': {0: 1, 1: 0}, '가': {0: 1, 1: 0}, '좀': {0: 2, 1: 0}, '였습니다': {0: 1, 1: 0}, '더': {0: 1, 1: 0}, '개선': {0: 1, 1: 0}, '되': {0: 1, 1: 0}, '기를': {0: 1, 1: 0}, '바랍니다': {0: 1, 1: 0}, '맛': {0: 0, 1: 1}, '좋았고': {0: 0, 1: 1}, '직원': {0: 0, 1: 1}, '분들': {0: 0, 1: 1}, '친절했습니다': {0: 0, 1: 1}, '기념일': {0: 0, 1: 1}, '에': {0: 0, 1: 1}, '했는데': {0: 0, 1: 1}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 4, 1: 5}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 2, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 1}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 2, 1: 0}, '너무': {0: 1, 1: 1}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 2}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 0, 1: 2}, '도': {0: 0, 1: 5}, '서비스': {0: 0, 1: 2}, '만족스러웠습니다': {0: 0, 1: 1}, '위생': {0: 1, 1: 0}, '상태': {0: 1, 1: 0}, '가': {0: 1, 1: 0}, '좀': {0: 2, 1: 0}, '였습니다': {0: 1, 1: 0}, '더': {0: 1, 1: 0}, '개선': {0: 1, 1: 0}, '되': {0: 1, 1: 0}, '기를': {0: 1, 1: 0}, '바랍니다': {0: 1, 1: 0}, '맛': {0: 0, 1: 1}, '좋았고': {0: 0, 1: 1}, '직원': {0: 0, 1: 1}, '분들': {0: 0, 1: 1}, '친절했습니다': {0: 0, 1: 1}, '기념일': {0: 0, 1: 1}, '에': {0: 0, 1: 1}, '했는데': {0: 0, 1: 1}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 4, 1: 5}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 2, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 1}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 2, 1: 0}, '너무': {0: 1, 1: 1}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 2}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 0, 1: 2}, '도': {0: 0, 1: 5}, '서비스': {0: 0, 1: 2}, '만족스러웠습니다': {0: 0, 1: 1}, '위생': {0: 1, 1: 0}, '상태': {0: 1, 1: 0}, '가': {0: 1, 1: 0}, '좀': {0: 2, 1: 0}, '였습니다': {0: 1, 1: 0}, '더': {0: 1, 1: 0}, '개선': {0: 1, 1: 0}, '되': {0: 1, 1: 0}, '기를': {0: 1, 1: 0}, '바랍니다': {0: 1, 1: 0}, '맛': {0: 0, 1: 1}, '좋았고': {0: 0, 1: 1}, '직원': {0: 0, 1: 1}, '분들': {0: 0, 1: 1}, '친절했습니다': {0: 0, 1: 1}, '기념일': {0: 0, 1: 1}, '에': {0: 0, 1: 1}, '했는데': {0: 0, 1: 1}, '분위기': {0: 0, 1: 1}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 4, 1: 5}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 2, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 1}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 2, 1: 0}, '너무': {0: 1, 1: 1}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 2}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 0, 1: 2}, '도': {0: 0, 1: 6}, '서비스': {0: 0, 1: 2}, '만족스러웠습니다': {0: 0, 1: 1}, '위생': {0: 1, 1: 0}, '상태': {0: 1, 1: 0}, '가': {0: 1, 1: 0}, '좀': {0: 2, 1: 0}, '였습니다': {0: 1, 1: 0}, '더': {0: 1, 1: 0}, '개선': {0: 1, 1: 0}, '되': {0: 1, 1: 0}, '기를': {0: 1, 1: 0}, '바랍니다': {0: 1, 1: 0}, '맛': {0: 0, 1: 1}, '좋았고': {0: 0, 1: 1}, '직원': {0: 0, 1: 1}, '분들': {0: 0, 1: 1}, '친절했습니다': {0: 0, 1: 1}, '기념일': {0: 0, 1: 1}, '에': {0: 0, 1: 1}, '했는데': {0: 0, 1: 1}, '분위기': {0: 0, 1: 1}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 4, 1: 5}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 2, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 1}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 2, 1: 0}, '너무': {0: 1, 1: 1}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 2}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 0, 1: 2}, '도': {0: 0, 1: 6}, '서비스': {0: 0, 1: 3}, '만족스러웠습니다': {0: 0, 1: 1}, '위생': {0: 1, 1: 0}, '상태': {0: 1, 1: 0}, '가': {0: 1, 1: 0}, '좀': {0: 2, 1: 0}, '였습니다': {0: 1, 1: 0}, '더': {0: 1, 1: 0}, '개선': {0: 1, 1: 0}, '되': {0: 1, 1: 0}, '기를': {0: 1, 1: 0}, '바랍니다': {0: 1, 1: 0}, '맛': {0: 0, 1: 1}, '좋았고': {0: 0, 1: 1}, '직원': {0: 0, 1: 1}, '분들': {0: 0, 1: 1}, '친절했습니다': {0: 0, 1: 1}, '기념일': {0: 0, 1: 1}, '에': {0: 0, 1: 1}, '했는데': {0: 0, 1: 1}, '분위기': {0: 0, 1: 1}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 4, 1: 5}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 2, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 1}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 2, 1: 0}, '너무': {0: 1, 1: 1}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 2}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 0, 1: 2}, '도': {0: 0, 1: 7}, '서비스': {0: 0, 1: 3}, '만족스러웠습니다': {0: 0, 1: 1}, '위생': {0: 1, 1: 0}, '상태': {0: 1, 1: 0}, '가': {0: 1, 1: 0}, '좀': {0: 2, 1: 0}, '였습니다': {0: 1, 1: 0}, '더': {0: 1, 1: 0}, '개선': {0: 1, 1: 0}, '되': {0: 1, 1: 0}, '기를': {0: 1, 1: 0}, '바랍니다': {0: 1, 1: 0}, '맛': {0: 0, 1: 1}, '좋았고': {0: 0, 1: 1}, '직원': {0: 0, 1: 1}, '분들': {0: 0, 1: 1}, '친절했습니다': {0: 0, 1: 1}, '기념일': {0: 0, 1: 1}, '에': {0: 0, 1: 1}, '했는데': {0: 0, 1: 1}, '분위기': {0: 0, 1: 1}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 4, 1: 5}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 2, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 2}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 2, 1: 0}, '너무': {0: 1, 1: 1}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 2}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 0, 1: 2}, '도': {0: 0, 1: 7}, '서비스': {0: 0, 1: 3}, '만족스러웠습니다': {0: 0, 1: 1}, '위생': {0: 1, 1: 0}, '상태': {0: 1, 1: 0}, '가': {0: 1, 1: 0}, '좀': {0: 2, 1: 0}, '였습니다': {0: 1, 1: 0}, '더': {0: 1, 1: 0}, '개선': {0: 1, 1: 0}, '되': {0: 1, 1: 0}, '기를': {0: 1, 1: 0}, '바랍니다': {0: 1, 1: 0}, '맛': {0: 0, 1: 1}, '좋았고': {0: 0, 1: 1}, '직원': {0: 0, 1: 1}, '분들': {0: 0, 1: 1}, '친절했습니다': {0: 0, 1: 1}, '기념일': {0: 0, 1: 1}, '에': {0: 0, 1: 1}, '했는데': {0: 0, 1: 1}, '분위기': {0: 0, 1: 1}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 4, 1: 5}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 2, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 2}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 2, 1: 0}, '너무': {0: 1, 1: 1}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 2}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 0, 1: 2}, '도': {0: 0, 1: 7}, '서비스': {0: 0, 1: 3}, '만족스러웠습니다': {0: 0, 1: 1}, '위생': {0: 1, 1: 0}, '상태': {0: 1, 1: 0}, '가': {0: 1, 1: 0}, '좀': {0: 2, 1: 0}, '였습니다': {0: 1, 1: 0}, '더': {0: 1, 1: 0}, '개선': {0: 1, 1: 0}, '되': {0: 1, 1: 0}, '기를': {0: 1, 1: 0}, '바랍니다': {0: 1, 1: 0}, '맛': {0: 0, 1: 1}, '좋았고': {0: 0, 1: 1}, '직원': {0: 0, 1: 1}, '분들': {0: 0, 1: 1}, '친절했습니다': {0: 0, 1: 1}, '기념일': {0: 0, 1: 1}, '에': {0: 0, 1: 1}, '했는데': {0: 0, 1: 1}, '분위기': {0: 0, 1: 1}, '좋았습니다': {0: 0, 1: 1}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 4, 1: 6}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 2, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 2}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 2, 1: 0}, '너무': {0: 1, 1: 1}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 2}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 0, 1: 2}, '도': {0: 0, 1: 7}, '서비스': {0: 0, 1: 3}, '만족스러웠습니다': {0: 0, 1: 1}, '위생': {0: 1, 1: 0}, '상태': {0: 1, 1: 0}, '가': {0: 1, 1: 0}, '좀': {0: 2, 1: 0}, '였습니다': {0: 1, 1: 0}, '더': {0: 1, 1: 0}, '개선': {0: 1, 1: 0}, '되': {0: 1, 1: 0}, '기를': {0: 1, 1: 0}, '바랍니다': {0: 1, 1: 0}, '맛': {0: 0, 1: 1}, '좋았고': {0: 0, 1: 1}, '직원': {0: 0, 1: 1}, '분들': {0: 0, 1: 1}, '친절했습니다': {0: 0, 1: 1}, '기념일': {0: 0, 1: 1}, '에': {0: 0, 1: 1}, '했는데': {0: 0, 1: 1}, '분위기': {0: 0, 1: 1}, '좋았습니다': {0: 0, 1: 1}} class_counts : defaultdict(<class 'int'>, {1: 45, 0: 35}) token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 4, 1: 6}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 2, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 2}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 2, 1: 0}, '너무': {0: 1, 1: 1}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 2}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 0, 1: 2}, '도': {0: 0, 1: 7}, '서비스': {0: 0, 1: 3}, '만족스러웠습니다': {0: 0, 1: 1}, '위생': {0: 1, 1: 0}, '상태': {0: 1, 1: 0}, '가': {0: 1, 1: 0}, '좀': {0: 2, 1: 0}, '였습니다': {0: 1, 1: 0}, '더': {0: 1, 1: 0}, '개선': {0: 1, 1: 0}, '되': {0: 1, 1: 0}, '기를': {0: 1, 1: 0}, '바랍니다': {0: 1, 1: 0}, '맛': {0: 0, 1: 1}, '좋았고': {0: 0, 1: 1}, '직원': {0: 0, 1: 1}, '분들': {0: 0, 1: 1}, '친절했습니다': {0: 0, 1: 1}, '기념일': {0: 0, 1: 1}, '에': {0: 0, 1: 1}, '했는데': {0: 0, 1: 1}, '분위기': {0: 0, 1: 1}, '좋았습니다': {0: 0, 1: 1}, '전반': {0: 1, 1: 0}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 4, 1: 6}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 2, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 2}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 2, 1: 0}, '너무': {0: 1, 1: 1}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 2}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 0, 1: 2}, '도': {0: 0, 1: 7}, '서비스': {0: 0, 1: 3}, '만족스러웠습니다': {0: 0, 1: 1}, '위생': {0: 1, 1: 0}, '상태': {0: 1, 1: 0}, '가': {0: 1, 1: 0}, '좀': {0: 2, 1: 0}, '였습니다': {0: 1, 1: 0}, '더': {0: 1, 1: 0}, '개선': {0: 1, 1: 0}, '되': {0: 1, 1: 0}, '기를': {0: 1, 1: 0}, '바랍니다': {0: 1, 1: 0}, '맛': {0: 0, 1: 1}, '좋았고': {0: 0, 1: 1}, '직원': {0: 0, 1: 1}, '분들': {0: 0, 1: 1}, '친절했습니다': {0: 0, 1: 1}, '기념일': {0: 0, 1: 1}, '에': {0: 0, 1: 1}, '했는데': {0: 0, 1: 1}, '분위기': {0: 0, 1: 1}, '좋았습니다': {0: 0, 1: 1}, '전반': {0: 1, 1: 0}, '적': {0: 1, 1: 0}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 4, 1: 6}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 2, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 2}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 2, 1: 0}, '너무': {0: 1, 1: 1}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 2}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 0, 1: 2}, '도': {0: 0, 1: 7}, '서비스': {0: 0, 1: 3}, '만족스러웠습니다': {0: 0, 1: 1}, '위생': {0: 1, 1: 0}, '상태': {0: 1, 1: 0}, '가': {0: 1, 1: 0}, '좀': {0: 2, 1: 0}, '였습니다': {0: 1, 1: 0}, '더': {0: 1, 1: 0}, '개선': {0: 1, 1: 0}, '되': {0: 1, 1: 0}, '기를': {0: 1, 1: 0}, '바랍니다': {0: 1, 1: 0}, '맛': {0: 0, 1: 1}, '좋았고': {0: 0, 1: 1}, '직원': {0: 0, 1: 1}, '분들': {0: 0, 1: 1}, '친절했습니다': {0: 0, 1: 1}, '기념일': {0: 0, 1: 1}, '에': {0: 0, 1: 1}, '했는데': {0: 0, 1: 1}, '분위기': {0: 0, 1: 1}, '좋았습니다': {0: 0, 1: 1}, '전반': {0: 1, 1: 0}, '적': {0: 1, 1: 0}, '으로': {0: 1, 1: 0}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 4, 1: 6}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 2, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 2}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 2, 1: 0}, '너무': {0: 1, 1: 1}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 2}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 1, 1: 2}, '도': {0: 0, 1: 7}, '서비스': {0: 0, 1: 3}, '만족스러웠습니다': {0: 0, 1: 1}, '위생': {0: 1, 1: 0}, '상태': {0: 1, 1: 0}, '가': {0: 1, 1: 0}, '좀': {0: 2, 1: 0}, '였습니다': {0: 1, 1: 0}, '더': {0: 1, 1: 0}, '개선': {0: 1, 1: 0}, '되': {0: 1, 1: 0}, '기를': {0: 1, 1: 0}, '바랍니다': {0: 1, 1: 0}, '맛': {0: 0, 1: 1}, '좋았고': {0: 0, 1: 1}, '직원': {0: 0, 1: 1}, '분들': {0: 0, 1: 1}, '친절했습니다': {0: 0, 1: 1}, '기념일': {0: 0, 1: 1}, '에': {0: 0, 1: 1}, '했는데': {0: 0, 1: 1}, '분위기': {0: 0, 1: 1}, '좋았습니다': {0: 0, 1: 1}, '전반': {0: 1, 1: 0}, '적': {0: 1, 1: 0}, '으로': {0: 1, 1: 0}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 4, 1: 6}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 2, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 2}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 3, 1: 0}, '너무': {0: 1, 1: 1}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 2}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 1, 1: 2}, '도': {0: 0, 1: 7}, '서비스': {0: 0, 1: 3}, '만족스러웠습니다': {0: 0, 1: 1}, '위생': {0: 1, 1: 0}, '상태': {0: 1, 1: 0}, '가': {0: 1, 1: 0}, '좀': {0: 2, 1: 0}, '였습니다': {0: 1, 1: 0}, '더': {0: 1, 1: 0}, '개선': {0: 1, 1: 0}, '되': {0: 1, 1: 0}, '기를': {0: 1, 1: 0}, '바랍니다': {0: 1, 1: 0}, '맛': {0: 0, 1: 1}, '좋았고': {0: 0, 1: 1}, '직원': {0: 0, 1: 1}, '분들': {0: 0, 1: 1}, '친절했습니다': {0: 0, 1: 1}, '기념일': {0: 0, 1: 1}, '에': {0: 0, 1: 1}, '했는데': {0: 0, 1: 1}, '분위기': {0: 0, 1: 1}, '좋았습니다': {0: 0, 1: 1}, '전반': {0: 1, 1: 0}, '적': {0: 1, 1: 0}, '으로': {0: 1, 1: 0}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 4, 1: 6}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 2, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 2}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 3, 1: 0}, '너무': {0: 2, 1: 1}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 2}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 1, 1: 2}, '도': {0: 0, 1: 7}, '서비스': {0: 0, 1: 3}, '만족스러웠습니다': {0: 0, 1: 1}, '위생': {0: 1, 1: 0}, '상태': {0: 1, 1: 0}, '가': {0: 1, 1: 0}, '좀': {0: 2, 1: 0}, '였습니다': {0: 1, 1: 0}, '더': {0: 1, 1: 0}, '개선': {0: 1, 1: 0}, '되': {0: 1, 1: 0}, '기를': {0: 1, 1: 0}, '바랍니다': {0: 1, 1: 0}, '맛': {0: 0, 1: 1}, '좋았고': {0: 0, 1: 1}, '직원': {0: 0, 1: 1}, '분들': {0: 0, 1: 1}, '친절했습니다': {0: 0, 1: 1}, '기념일': {0: 0, 1: 1}, '에': {0: 0, 1: 1}, '했는데': {0: 0, 1: 1}, '분위기': {0: 0, 1: 1}, '좋았습니다': {0: 0, 1: 1}, '전반': {0: 1, 1: 0}, '적': {0: 1, 1: 0}, '으로': {0: 1, 1: 0}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 4, 1: 6}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 2, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 2}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 3, 1: 0}, '너무': {0: 2, 1: 1}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 2}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 1, 1: 2}, '도': {0: 0, 1: 7}, '서비스': {0: 0, 1: 3}, '만족스러웠습니다': {0: 0, 1: 1}, '위생': {0: 1, 1: 0}, '상태': {0: 1, 1: 0}, '가': {0: 1, 1: 0}, '좀': {0: 2, 1: 0}, '였습니다': {0: 1, 1: 0}, '더': {0: 1, 1: 0}, '개선': {0: 1, 1: 0}, '되': {0: 1, 1: 0}, '기를': {0: 1, 1: 0}, '바랍니다': {0: 1, 1: 0}, '맛': {0: 0, 1: 1}, '좋았고': {0: 0, 1: 1}, '직원': {0: 0, 1: 1}, '분들': {0: 0, 1: 1}, '친절했습니다': {0: 0, 1: 1}, '기념일': {0: 0, 1: 1}, '에': {0: 0, 1: 1}, '했는데': {0: 0, 1: 1}, '분위기': {0: 0, 1: 1}, '좋았습니다': {0: 0, 1: 1}, '전반': {0: 1, 1: 0}, '적': {0: 1, 1: 0}, '으로': {0: 1, 1: 0}, '짰습니다': {0: 1, 1: 0}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 5, 1: 6}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 2, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 2}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 3, 1: 0}, '너무': {0: 2, 1: 1}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 2}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 1, 1: 2}, '도': {0: 0, 1: 7}, '서비스': {0: 0, 1: 3}, '만족스러웠습니다': {0: 0, 1: 1}, '위생': {0: 1, 1: 0}, '상태': {0: 1, 1: 0}, '가': {0: 1, 1: 0}, '좀': {0: 2, 1: 0}, '였습니다': {0: 1, 1: 0}, '더': {0: 1, 1: 0}, '개선': {0: 1, 1: 0}, '되': {0: 1, 1: 0}, '기를': {0: 1, 1: 0}, '바랍니다': {0: 1, 1: 0}, '맛': {0: 0, 1: 1}, '좋았고': {0: 0, 1: 1}, '직원': {0: 0, 1: 1}, '분들': {0: 0, 1: 1}, '친절했습니다': {0: 0, 1: 1}, '기념일': {0: 0, 1: 1}, '에': {0: 0, 1: 1}, '했는데': {0: 0, 1: 1}, '분위기': {0: 0, 1: 1}, '좋았습니다': {0: 0, 1: 1}, '전반': {0: 1, 1: 0}, '적': {0: 1, 1: 0}, '으로': {0: 1, 1: 0}, '짰습니다': {0: 1, 1: 0}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 5, 1: 6}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 2, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 2}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 3, 1: 0}, '너무': {0: 2, 1: 1}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 2}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 1, 1: 2}, '도': {0: 0, 1: 7}, '서비스': {0: 0, 1: 3}, '만족스러웠습니다': {0: 0, 1: 1}, '위생': {0: 1, 1: 0}, '상태': {0: 1, 1: 0}, '가': {0: 1, 1: 0}, '좀': {0: 2, 1: 0}, '였습니다': {0: 1, 1: 0}, '더': {0: 1, 1: 0}, '개선': {0: 1, 1: 0}, '되': {0: 1, 1: 0}, '기를': {0: 1, 1: 0}, '바랍니다': {0: 1, 1: 0}, '맛': {0: 0, 1: 1}, '좋았고': {0: 0, 1: 1}, '직원': {0: 0, 1: 1}, '분들': {0: 0, 1: 1}, '친절했습니다': {0: 0, 1: 1}, '기념일': {0: 0, 1: 1}, '에': {0: 0, 1: 1}, '했는데': {0: 0, 1: 1}, '분위기': {0: 0, 1: 1}, '좋았습니다': {0: 0, 1: 1}, '전반': {0: 1, 1: 0}, '적': {0: 1, 1: 0}, '으로': {0: 1, 1: 0}, '짰습니다': {0: 1, 1: 0}, '저': {0: 1, 1: 0}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 5, 1: 6}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 2, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 2}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 3, 1: 0}, '너무': {0: 2, 1: 1}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 2}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 1, 1: 2}, '도': {0: 0, 1: 7}, '서비스': {0: 0, 1: 3}, '만족스러웠습니다': {0: 0, 1: 1}, '위생': {0: 1, 1: 0}, '상태': {0: 1, 1: 0}, '가': {0: 1, 1: 0}, '좀': {0: 2, 1: 0}, '였습니다': {0: 1, 1: 0}, '더': {0: 1, 1: 0}, '개선': {0: 1, 1: 0}, '되': {0: 1, 1: 0}, '기를': {0: 1, 1: 0}, '바랍니다': {0: 1, 1: 0}, '맛': {0: 0, 1: 1}, '좋았고': {0: 0, 1: 1}, '직원': {0: 0, 1: 1}, '분들': {0: 0, 1: 1}, '친절했습니다': {0: 0, 1: 1}, '기념일': {0: 0, 1: 1}, '에': {0: 0, 1: 1}, '했는데': {0: 0, 1: 1}, '분위기': {0: 0, 1: 1}, '좋았습니다': {0: 0, 1: 1}, '전반': {0: 1, 1: 0}, '적': {0: 1, 1: 0}, '으로': {0: 1, 1: 0}, '짰습니다': {0: 1, 1: 0}, '저': {0: 1, 1: 0}, '는': {0: 1, 1: 0}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 5, 1: 6}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 3, 1: 0}, '였네요': {0: 1, 1: 0}, '다': {0: 1, 1: 2}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 3, 1: 0}, '너무': {0: 2, 1: 1}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 2}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 1, 1: 2}, '도': {0: 0, 1: 7}, '서비스': {0: 0, 1: 3}, '만족스러웠습니다': {0: 0, 1: 1}, '위생': {0: 1, 1: 0}, '상태': {0: 1, 1: 0}, '가': {0: 1, 1: 0}, '좀': {0: 2, 1: 0}, '였습니다': {0: 1, 1: 0}, '더': {0: 1, 1: 0}, '개선': {0: 1, 1: 0}, '되': {0: 1, 1: 0}, '기를': {0: 1, 1: 0}, '바랍니다': {0: 1, 1: 0}, '맛': {0: 0, 1: 1}, '좋았고': {0: 0, 1: 1}, '직원': {0: 0, 1: 1}, '분들': {0: 0, 1: 1}, '친절했습니다': {0: 0, 1: 1}, '기념일': {0: 0, 1: 1}, '에': {0: 0, 1: 1}, '했는데': {0: 0, 1: 1}, '분위기': {0: 0, 1: 1}, '좋았습니다': {0: 0, 1: 1}, '전반': {0: 1, 1: 0}, '적': {0: 1, 1: 0}, '으로': {0: 1, 1: 0}, '짰습니다': {0: 1, 1: 0}, '저': {0: 1, 1: 0}, '는': {0: 1, 1: 0}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 5, 1: 6}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 3, 1: 0}, '였네요': {0: 2, 1: 0}, '다': {0: 1, 1: 2}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 3, 1: 0}, '너무': {0: 2, 1: 1}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 2}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 1, 1: 2}, '도': {0: 0, 1: 7}, '서비스': {0: 0, 1: 3}, '만족스러웠습니다': {0: 0, 1: 1}, '위생': {0: 1, 1: 0}, '상태': {0: 1, 1: 0}, '가': {0: 1, 1: 0}, '좀': {0: 2, 1: 0}, '였습니다': {0: 1, 1: 0}, '더': {0: 1, 1: 0}, '개선': {0: 1, 1: 0}, '되': {0: 1, 1: 0}, '기를': {0: 1, 1: 0}, '바랍니다': {0: 1, 1: 0}, '맛': {0: 0, 1: 1}, '좋았고': {0: 0, 1: 1}, '직원': {0: 0, 1: 1}, '분들': {0: 0, 1: 1}, '친절했습니다': {0: 0, 1: 1}, '기념일': {0: 0, 1: 1}, '에': {0: 0, 1: 1}, '했는데': {0: 0, 1: 1}, '분위기': {0: 0, 1: 1}, '좋았습니다': {0: 0, 1: 1}, '전반': {0: 1, 1: 0}, '적': {0: 1, 1: 0}, '으로': {0: 1, 1: 0}, '짰습니다': {0: 1, 1: 0}, '저': {0: 1, 1: 0}, '는': {0: 1, 1: 0}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 6, 1: 6}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 3, 1: 0}, '였네요': {0: 2, 1: 0}, '다': {0: 1, 1: 2}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 3, 1: 0}, '너무': {0: 2, 1: 1}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 2}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 1, 1: 2}, '도': {0: 0, 1: 7}, '서비스': {0: 0, 1: 3}, '만족스러웠습니다': {0: 0, 1: 1}, '위생': {0: 1, 1: 0}, '상태': {0: 1, 1: 0}, '가': {0: 1, 1: 0}, '좀': {0: 2, 1: 0}, '였습니다': {0: 1, 1: 0}, '더': {0: 1, 1: 0}, '개선': {0: 1, 1: 0}, '되': {0: 1, 1: 0}, '기를': {0: 1, 1: 0}, '바랍니다': {0: 1, 1: 0}, '맛': {0: 0, 1: 1}, '좋았고': {0: 0, 1: 1}, '직원': {0: 0, 1: 1}, '분들': {0: 0, 1: 1}, '친절했습니다': {0: 0, 1: 1}, '기념일': {0: 0, 1: 1}, '에': {0: 0, 1: 1}, '했는데': {0: 0, 1: 1}, '분위기': {0: 0, 1: 1}, '좋았습니다': {0: 0, 1: 1}, '전반': {0: 1, 1: 0}, '적': {0: 1, 1: 0}, '으로': {0: 1, 1: 0}, '짰습니다': {0: 1, 1: 0}, '저': {0: 1, 1: 0}, '는': {0: 1, 1: 0}} class_counts : defaultdict(<class 'int'>, {1: 45, 0: 48}) token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 6, 1: 6}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 3, 1: 0}, '였네요': {0: 2, 1: 0}, '다': {0: 1, 1: 2}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 3, 1: 0}, '너무': {0: 2, 1: 1}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 2}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 1, 1: 2}, '도': {0: 0, 1: 7}, '서비스': {0: 0, 1: 3}, '만족스러웠습니다': {0: 0, 1: 1}, '위생': {0: 2, 1: 0}, '상태': {0: 1, 1: 0}, '가': {0: 1, 1: 0}, '좀': {0: 2, 1: 0}, '였습니다': {0: 1, 1: 0}, '더': {0: 1, 1: 0}, '개선': {0: 1, 1: 0}, '되': {0: 1, 1: 0}, '기를': {0: 1, 1: 0}, '바랍니다': {0: 1, 1: 0}, '맛': {0: 0, 1: 1}, '좋았고': {0: 0, 1: 1}, '직원': {0: 0, 1: 1}, '분들': {0: 0, 1: 1}, '친절했습니다': {0: 0, 1: 1}, '기념일': {0: 0, 1: 1}, '에': {0: 0, 1: 1}, '했는데': {0: 0, 1: 1}, '분위기': {0: 0, 1: 1}, '좋았습니다': {0: 0, 1: 1}, '전반': {0: 1, 1: 0}, '적': {0: 1, 1: 0}, '으로': {0: 1, 1: 0}, '짰습니다': {0: 1, 1: 0}, '저': {0: 1, 1: 0}, '는': {0: 1, 1: 0}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 6, 1: 6}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 3, 1: 0}, '였네요': {0: 2, 1: 0}, '다': {0: 1, 1: 2}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 3, 1: 0}, '너무': {0: 2, 1: 1}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 2}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 1, 1: 2}, '도': {0: 0, 1: 7}, '서비스': {0: 0, 1: 3}, '만족스러웠습니다': {0: 0, 1: 1}, '위생': {0: 2, 1: 0}, '상태': {0: 1, 1: 0}, '가': {0: 1, 1: 0}, '좀': {0: 2, 1: 0}, '였습니다': {0: 1, 1: 0}, '더': {0: 1, 1: 0}, '개선': {0: 1, 1: 0}, '되': {0: 1, 1: 0}, '기를': {0: 1, 1: 0}, '바랍니다': {0: 1, 1: 0}, '맛': {0: 0, 1: 1}, '좋았고': {0: 0, 1: 1}, '직원': {0: 0, 1: 1}, '분들': {0: 0, 1: 1}, '친절했습니다': {0: 0, 1: 1}, '기념일': {0: 0, 1: 1}, '에': {0: 1, 1: 1}, '했는데': {0: 0, 1: 1}, '분위기': {0: 0, 1: 1}, '좋았습니다': {0: 0, 1: 1}, '전반': {0: 1, 1: 0}, '적': {0: 1, 1: 0}, '으로': {0: 1, 1: 0}, '짰습니다': {0: 1, 1: 0}, '저': {0: 1, 1: 0}, '는': {0: 1, 1: 0}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 6, 1: 6}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 3, 1: 0}, '였네요': {0: 2, 1: 0}, '다': {0: 1, 1: 2}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 3, 1: 0}, '너무': {0: 2, 1: 1}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 2}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 1, 1: 2}, '도': {0: 0, 1: 7}, '서비스': {0: 0, 1: 3}, '만족스러웠습니다': {0: 0, 1: 1}, '위생': {0: 2, 1: 0}, '상태': {0: 1, 1: 0}, '가': {0: 1, 1: 0}, '좀': {0: 2, 1: 0}, '였습니다': {0: 1, 1: 0}, '더': {0: 1, 1: 0}, '개선': {0: 1, 1: 0}, '되': {0: 1, 1: 0}, '기를': {0: 1, 1: 0}, '바랍니다': {0: 1, 1: 0}, '맛': {0: 0, 1: 1}, '좋았고': {0: 0, 1: 1}, '직원': {0: 0, 1: 1}, '분들': {0: 0, 1: 1}, '친절했습니다': {0: 0, 1: 1}, '기념일': {0: 0, 1: 1}, '에': {0: 1, 1: 1}, '했는데': {0: 0, 1: 1}, '분위기': {0: 0, 1: 1}, '좋았습니다': {0: 0, 1: 1}, '전반': {0: 1, 1: 0}, '적': {0: 1, 1: 0}, '으로': {0: 1, 1: 0}, '짰습니다': {0: 1, 1: 0}, '저': {0: 1, 1: 0}, '는': {0: 1, 1: 0}, '조금': {0: 1, 1: 0}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 6, 1: 6}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 3, 1: 0}, '였네요': {0: 2, 1: 0}, '다': {0: 1, 1: 2}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 3, 1: 0}, '너무': {0: 2, 1: 1}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 2}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 1, 1: 2}, '도': {0: 0, 1: 7}, '서비스': {0: 0, 1: 3}, '만족스러웠습니다': {0: 0, 1: 1}, '위생': {0: 2, 1: 0}, '상태': {0: 1, 1: 0}, '가': {0: 1, 1: 0}, '좀': {0: 2, 1: 0}, '였습니다': {0: 1, 1: 0}, '더': {0: 2, 1: 0}, '개선': {0: 1, 1: 0}, '되': {0: 1, 1: 0}, '기를': {0: 1, 1: 0}, '바랍니다': {0: 1, 1: 0}, '맛': {0: 0, 1: 1}, '좋았고': {0: 0, 1: 1}, '직원': {0: 0, 1: 1}, '분들': {0: 0, 1: 1}, '친절했습니다': {0: 0, 1: 1}, '기념일': {0: 0, 1: 1}, '에': {0: 1, 1: 1}, '했는데': {0: 0, 1: 1}, '분위기': {0: 0, 1: 1}, '좋았습니다': {0: 0, 1: 1}, '전반': {0: 1, 1: 0}, '적': {0: 1, 1: 0}, '으로': {0: 1, 1: 0}, '짰습니다': {0: 1, 1: 0}, '저': {0: 1, 1: 0}, '는': {0: 1, 1: 0}, '조금': {0: 1, 1: 0}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 6, 1: 6}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 3, 1: 0}, '였네요': {0: 2, 1: 0}, '다': {0: 1, 1: 2}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 3, 1: 0}, '너무': {0: 2, 1: 1}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 2}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 1, 1: 2}, '도': {0: 0, 1: 7}, '서비스': {0: 0, 1: 3}, '만족스러웠습니다': {0: 0, 1: 1}, '위생': {0: 2, 1: 0}, '상태': {0: 1, 1: 0}, '가': {0: 1, 1: 0}, '좀': {0: 2, 1: 0}, '였습니다': {0: 1, 1: 0}, '더': {0: 2, 1: 0}, '개선': {0: 1, 1: 0}, '되': {0: 1, 1: 0}, '기를': {0: 1, 1: 0}, '바랍니다': {0: 1, 1: 0}, '맛': {0: 0, 1: 1}, '좋았고': {0: 0, 1: 1}, '직원': {0: 0, 1: 1}, '분들': {0: 0, 1: 1}, '친절했습니다': {0: 0, 1: 1}, '기념일': {0: 0, 1: 1}, '에': {0: 1, 1: 1}, '했는데': {0: 0, 1: 1}, '분위기': {0: 0, 1: 1}, '좋았습니다': {0: 0, 1: 1}, '전반': {0: 1, 1: 0}, '적': {0: 1, 1: 0}, '으로': {0: 1, 1: 0}, '짰습니다': {0: 1, 1: 0}, '저': {0: 1, 1: 0}, '는': {0: 1, 1: 0}, '조금': {0: 1, 1: 0}, '신경': {0: 1, 1: 0}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 6, 1: 6}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 3, 1: 0}, '였네요': {0: 2, 1: 0}, '다': {0: 1, 1: 2}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 3, 1: 0}, '너무': {0: 2, 1: 1}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 2}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 1, 1: 2}, '도': {0: 0, 1: 7}, '서비스': {0: 0, 1: 3}, '만족스러웠습니다': {0: 0, 1: 1}, '위생': {0: 2, 1: 0}, '상태': {0: 1, 1: 0}, '가': {0: 1, 1: 0}, '좀': {0: 2, 1: 0}, '였습니다': {0: 1, 1: 0}, '더': {0: 2, 1: 0}, '개선': {0: 1, 1: 0}, '되': {0: 1, 1: 0}, '기를': {0: 1, 1: 0}, '바랍니다': {0: 1, 1: 0}, '맛': {0: 0, 1: 1}, '좋았고': {0: 0, 1: 1}, '직원': {0: 0, 1: 1}, '분들': {0: 0, 1: 1}, '친절했습니다': {0: 0, 1: 1}, '기념일': {0: 0, 1: 1}, '에': {0: 1, 1: 1}, '했는데': {0: 0, 1: 1}, '분위기': {0: 0, 1: 1}, '좋았습니다': {0: 0, 1: 1}, '전반': {0: 1, 1: 0}, '적': {0: 1, 1: 0}, '으로': {0: 1, 1: 0}, '짰습니다': {0: 1, 1: 0}, '저': {0: 1, 1: 0}, '는': {0: 1, 1: 0}, '조금': {0: 1, 1: 0}, '신경': {0: 1, 1: 0}, '썼으면': {0: 1, 1: 0}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 6, 1: 6}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 3, 1: 0}, '였네요': {0: 2, 1: 0}, '다': {0: 1, 1: 2}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 3, 1: 0}, '너무': {0: 2, 1: 1}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 2}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 1, 1: 2}, '도': {0: 0, 1: 7}, '서비스': {0: 0, 1: 3}, '만족스러웠습니다': {0: 0, 1: 1}, '위생': {0: 2, 1: 0}, '상태': {0: 1, 1: 0}, '가': {0: 1, 1: 0}, '좀': {0: 2, 1: 0}, '였습니다': {0: 1, 1: 0}, '더': {0: 2, 1: 0}, '개선': {0: 1, 1: 0}, '되': {0: 1, 1: 0}, '기를': {0: 1, 1: 0}, '바랍니다': {0: 1, 1: 0}, '맛': {0: 0, 1: 1}, '좋았고': {0: 0, 1: 1}, '직원': {0: 0, 1: 1}, '분들': {0: 0, 1: 1}, '친절했습니다': {0: 0, 1: 1}, '기념일': {0: 0, 1: 1}, '에': {0: 1, 1: 1}, '했는데': {0: 0, 1: 1}, '분위기': {0: 0, 1: 1}, '좋았습니다': {0: 0, 1: 1}, '전반': {0: 1, 1: 0}, '적': {0: 1, 1: 0}, '으로': {0: 1, 1: 0}, '짰습니다': {0: 1, 1: 0}, '저': {0: 1, 1: 0}, '는': {0: 1, 1: 0}, '조금': {0: 1, 1: 0}, '신경': {0: 1, 1: 0}, '썼으면': {0: 1, 1: 0}, '좋겠습니다': {0: 1, 1: 0}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 7, 1: 6}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 3, 1: 0}, '였네요': {0: 2, 1: 0}, '다': {0: 1, 1: 2}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 3, 1: 0}, '너무': {0: 2, 1: 1}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 2}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 1, 1: 2}, '도': {0: 0, 1: 7}, '서비스': {0: 0, 1: 3}, '만족스러웠습니다': {0: 0, 1: 1}, '위생': {0: 2, 1: 0}, '상태': {0: 1, 1: 0}, '가': {0: 1, 1: 0}, '좀': {0: 2, 1: 0}, '였습니다': {0: 1, 1: 0}, '더': {0: 2, 1: 0}, '개선': {0: 1, 1: 0}, '되': {0: 1, 1: 0}, '기를': {0: 1, 1: 0}, '바랍니다': {0: 1, 1: 0}, '맛': {0: 0, 1: 1}, '좋았고': {0: 0, 1: 1}, '직원': {0: 0, 1: 1}, '분들': {0: 0, 1: 1}, '친절했습니다': {0: 0, 1: 1}, '기념일': {0: 0, 1: 1}, '에': {0: 1, 1: 1}, '했는데': {0: 0, 1: 1}, '분위기': {0: 0, 1: 1}, '좋았습니다': {0: 0, 1: 1}, '전반': {0: 1, 1: 0}, '적': {0: 1, 1: 0}, '으로': {0: 1, 1: 0}, '짰습니다': {0: 1, 1: 0}, '저': {0: 1, 1: 0}, '는': {0: 1, 1: 0}, '조금': {0: 1, 1: 0}, '신경': {0: 1, 1: 0}, '썼으면': {0: 1, 1: 0}, '좋겠습니다': {0: 1, 1: 0}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 7, 1: 6}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 3, 1: 0}, '였네요': {0: 2, 1: 0}, '다': {0: 1, 1: 2}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 3, 1: 0}, '너무': {0: 2, 1: 1}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 2}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 1, 1: 2}, '도': {0: 0, 1: 7}, '서비스': {0: 0, 1: 3}, '만족스러웠습니다': {0: 0, 1: 1}, '위생': {0: 2, 1: 0}, '상태': {0: 1, 1: 0}, '가': {0: 1, 1: 0}, '좀': {0: 2, 1: 0}, '였습니다': {0: 1, 1: 0}, '더': {0: 2, 1: 0}, '개선': {0: 1, 1: 0}, '되': {0: 1, 1: 0}, '기를': {0: 1, 1: 0}, '바랍니다': {0: 1, 1: 0}, '맛': {0: 0, 1: 1}, '좋았고': {0: 0, 1: 1}, '직원': {0: 0, 1: 1}, '분들': {0: 0, 1: 1}, '친절했습니다': {0: 0, 1: 1}, '기념일': {0: 0, 1: 1}, '에': {0: 1, 1: 1}, '했는데': {0: 0, 1: 1}, '분위기': {0: 0, 1: 1}, '좋았습니다': {0: 0, 1: 1}, '전반': {0: 1, 1: 0}, '적': {0: 1, 1: 0}, '으로': {0: 1, 1: 0}, '짰습니다': {0: 1, 1: 0}, '저': {0: 1, 1: 0}, '는': {0: 1, 1: 0}, '조금': {0: 2, 1: 0}, '신경': {0: 1, 1: 0}, '썼으면': {0: 1, 1: 0}, '좋겠습니다': {0: 1, 1: 0}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 7, 1: 6}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 3, 1: 0}, '였네요': {0: 2, 1: 0}, '다': {0: 1, 1: 2}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 3, 1: 0}, '너무': {0: 2, 1: 1}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 2}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 1, 1: 2}, '도': {0: 0, 1: 7}, '서비스': {0: 0, 1: 3}, '만족스러웠습니다': {0: 0, 1: 1}, '위생': {0: 2, 1: 0}, '상태': {0: 1, 1: 0}, '가': {0: 1, 1: 0}, '좀': {0: 2, 1: 0}, '였습니다': {0: 1, 1: 0}, '더': {0: 2, 1: 0}, '개선': {0: 1, 1: 0}, '되': {0: 1, 1: 0}, '기를': {0: 1, 1: 0}, '바랍니다': {0: 1, 1: 0}, '맛': {0: 0, 1: 1}, '좋았고': {0: 0, 1: 1}, '직원': {0: 0, 1: 1}, '분들': {0: 0, 1: 1}, '친절했습니다': {0: 0, 1: 1}, '기념일': {0: 0, 1: 1}, '에': {0: 1, 1: 1}, '했는데': {0: 0, 1: 1}, '분위기': {0: 0, 1: 1}, '좋았습니다': {0: 0, 1: 1}, '전반': {0: 1, 1: 0}, '적': {0: 1, 1: 0}, '으로': {0: 1, 1: 0}, '짰습니다': {0: 1, 1: 0}, '저': {0: 1, 1: 0}, '는': {0: 1, 1: 0}, '조금': {0: 2, 1: 0}, '신경': {0: 1, 1: 0}, '썼으면': {0: 1, 1: 0}, '좋겠습니다': {0: 1, 1: 0}, '불쾌했습니다': {0: 1, 1: 0}} token_dists : {'정말': {0: 0, 1: 1}, '맛있습니다': {0: 0, 1: 1}, '.': {0: 8, 1: 6}, '추천': {0: 0, 1: 1}, '합니다': {0: 0, 1: 1}, '기대했던': {0: 1, 1: 0}, '것': {0: 1, 1: 0}, '보단': {0: 1, 1: 0}, '별로': {0: 3, 1: 0}, '였네요': {0: 2, 1: 0}, '다': {0: 1, 1: 2}, '좋은데': {0: 1, 1: 0}, '가격': {0: 1, 1: 0}, '이': {0: 3, 1: 0}, '너무': {0: 2, 1: 1}, '비싸서': {0: 1, 1: 0}, '다시': {0: 1, 1: 0}, '가고': {0: 1, 1: 0}, '싶다는': {0: 1, 1: 0}, '생각': {0: 1, 1: 0}, '안': {0: 1, 1: 0}, '드네': {0: 1, 1: 0}, '요': {0: 1, 1: 0}, '완전': {0: 0, 1: 1}, '최고': {0: 0, 1: 1}, '입니다': {0: 0, 1: 1}, '!': {0: 0, 1: 1}, '재': {0: 0, 1: 1}, '방문': {0: 0, 1: 2}, '의사': {0: 0, 1: 1}, '있습니다': {0: 0, 1: 1}, '음식': {0: 1, 1: 2}, '도': {0: 0, 1: 7}, '서비스': {0: 0, 1: 3}, '만족스러웠습니다': {0: 0, 1: 1}, '위생': {0: 2, 1: 0}, '상태': {0: 1, 1: 0}, '가': {0: 1, 1: 0}, '좀': {0: 2, 1: 0}, '였습니다': {0: 1, 1: 0}, '더': {0: 2, 1: 0}, '개선': {0: 1, 1: 0}, '되': {0: 1, 1: 0}, '기를': {0: 1, 1: 0}, '바랍니다': {0: 1, 1: 0}, '맛': {0: 0, 1: 1}, '좋았고': {0: 0, 1: 1}, '직원': {0: 0, 1: 1}, '분들': {0: 0, 1: 1}, '친절했습니다': {0: 0, 1: 1}, '기념일': {0: 0, 1: 1}, '에': {0: 1, 1: 1}, '했는데': {0: 0, 1: 1}, '분위기': {0: 0, 1: 1}, '좋았습니다': {0: 0, 1: 1}, '전반': {0: 1, 1: 0}, '적': {0: 1, 1: 0}, '으로': {0: 1, 1: 0}, '짰습니다': {0: 1, 1: 0}, '저': {0: 1, 1: 0}, '는': {0: 1, 1: 0}, '조금': {0: 2, 1: 0}, '신경': {0: 1, 1: 0}, '썼으면': {0: 1, 1: 0}, '좋겠습니다': {0: 1, 1: 0}, '불쾌했습니다': {0: 1, 1: 0}} class_counts : defaultdict(<class 'int'>, {1: 45, 0: 59})
 
 
 
 
 

테스트

 
 
 
 
 

Test sample에 대한 결과는 다음과 같습니다.

 
 
 
 
[-]
 
 
 
preds = []
for test_tokens in tqdm(test_tokenized):
  pred = classifier.inference(test_tokens)
  preds.append(pred)
 
 
 
 
 
100%|██████████| 4/4 [00:00<00:00, 12633.45it/s]
 
 
 
[-]
 
 
 
preds
 
 
 
 
 
[1, 0, 1, 0]
 
 
[-]
 
 
 
 
 
 
 
 



 

 

실습 2강: Word2Vec 구현

CBOW(Continuous Bag-of-Words) 랑 Skip-gram

 

 

 

 

 

##2. Word2Vec 1. 주어진 단어들을 word2vec 모델에 들어갈 수 있는 형태로 만듭니다. 2. CBOW, Skip-gram 모델을 각각 구현합니다. 3. 모델을 실제로 학습해보고 결과를 확인합니다.

 
 
 
 
 

필요 패키지 import

 
 
 
 
[-]
 
 
 
!pip install konlpy
 
 
 
 
 
Collecting konlpy ?25l Downloading https://files.pythonhosted.org/packages/85/0e/f385566fec837c0b83f216b2da65db9997b35dd675e107752005b7d392b1/konlpy-0.5.2-py2.py3-none-any.whl (19.4MB) |████████████████████████████████| 19.4MB 1.2MB/s ?25hCollecting beautifulsoup4==4.6.0 ?25l Downloading https://files.pythonhosted.org/packages/9e/d4/10f46e5cfac773e22707237bfcd51bbffeaf0a576b0a847ec7ab15bd7ace/beautifulsoup4-4.6.0-py3-none-any.whl (86kB) |████████████████████████████████| 92kB 3.9MB/s ?25hRequirement already satisfied: lxml>=4.1.0 in /usr/local/lib/python3.6/dist-packages (from konlpy) (4.2.6) Collecting colorama Downloading https://files.pythonhosted.org/packages/44/98/5b86278fbbf250d239ae0ecb724f8572af1c91f4a11edf4d36a206189440/colorama-0.4.4-py2.py3-none-any.whl Requirement already satisfied: numpy>=1.6 in /usr/local/lib/python3.6/dist-packages (from konlpy) (1.19.5) Collecting JPype1>=0.7.0 ?25l Downloading https://files.pythonhosted.org/packages/de/af/93f92b38ec1ff3091cd38982ed19cea2800fefb609b5801c41fc43c0781e/JPype1-1.2.1-cp36-cp36m-manylinux2010_x86_64.whl (457kB) |████████████████████████████████| 460kB 42.4MB/s ?25hCollecting tweepy>=3.7.0 Downloading https://files.pythonhosted.org/packages/67/c3/6bed87f3b1e5ed2f34bd58bf7978e308c86e255193916be76e5a5ce5dfca/tweepy-3.10.0-py2.py3-none-any.whl Requirement already satisfied: typing-extensions; python_version < "3.8" in /usr/local/lib/python3.6/dist-packages (from JPype1>=0.7.0->konlpy) (3.7.4.3) Requirement already satisfied: requests-oauthlib>=0.7.0 in /usr/local/lib/python3.6/dist-packages (from tweepy>=3.7.0->konlpy) (1.3.0) Requirement already satisfied: requests[socks]>=2.11.1 in /usr/local/lib/python3.6/dist-packages (from tweepy>=3.7.0->konlpy) (2.23.0) Requirement already satisfied: six>=1.10.0 in /usr/local/lib/python3.6/dist-packages (from tweepy>=3.7.0->konlpy) (1.15.0) Requirement already satisfied: oauthlib>=3.0.0 in /usr/local/lib/python3.6/dist-packages (from requests-oauthlib>=0.7.0->tweepy>=3.7.0->konlpy) (3.1.0) Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in /usr/local/lib/python3.6/dist-packages (from requests[socks]>=2.11.1->tweepy>=3.7.0->konlpy) (1.24.3) Requirement already satisfied: idna<3,>=2.5 in /usr/local/lib/python3.6/dist-packages (from requests[socks]>=2.11.1->tweepy>=3.7.0->konlpy) (2.10) Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.6/dist-packages (from requests[socks]>=2.11.1->tweepy>=3.7.0->konlpy) (2020.12.5) Requirement already satisfied: chardet<4,>=3.0.2 in /usr/local/lib/python3.6/dist-packages (from requests[socks]>=2.11.1->tweepy>=3.7.0->konlpy) (3.0.4) Requirement already satisfied: PySocks!=1.5.7,>=1.5.6; extra == "socks" in /usr/local/lib/python3.6/dist-packages (from requests[socks]>=2.11.1->tweepy>=3.7.0->konlpy) (1.7.1) Installing collected packages: beautifulsoup4, colorama, JPype1, tweepy, konlpy Found existing installation: beautifulsoup4 4.6.3 Uninstalling beautifulsoup4-4.6.3: Successfully uninstalled beautifulsoup4-4.6.3 Found existing installation: tweepy 3.6.0 Uninstalling tweepy-3.6.0: Successfully uninstalled tweepy-3.6.0 Successfully installed JPype1-1.2.1 beautifulsoup4-4.6.0 colorama-0.4.4 konlpy-0.5.2 tweepy-3.10.0
 
 
 
[-]
 
 
 
from tqdm import tqdm
from konlpy.tag import Okt
from torch import nn
from torch.nn import functional as F
from torch.utils.data import Dataset, DataLoader
from collections import defaultdict
 
import torch
import copy
import numpy as np
 
 
 
 
 
 
 
 
 
 
 

데이터 전처리

 
 
 
 
 

데이터를 확인하고 Word2Vec 형식에 맞게 전처리합니다.
학습 데이터는 1번 실습과 동일하고, 테스트를 위한 단어를 아래와 같이 가정해봅시다.

 
 
 
 
[-]
 
 
 
train_data = [
  "정말 맛있습니다. 추천합니다.",
  "기대했던 것보단 별로였네요.",
  "다 좋은데 가격이 너무 비싸서 다시 가고 싶다는 생각이 안 드네요.",
  "완전 최고입니다! 재방문 의사 있습니다.",
  "음식도 서비스도 다 만족스러웠습니다.",
  "위생 상태가 좀 별로였습니다. 좀 더 개선되기를 바랍니다.",
  "맛도 좋았고 직원분들 서비스도 너무 친절했습니다.",
  "기념일에 방문했는데 음식도 분위기도 서비스도 다 좋았습니다.",
  "전반적으로 음식이 너무 짰습니다. 저는 별로였네요.",
  "위생에 조금 더 신경 썼으면 좋겠습니다. 조금 불쾌했습니다."       
]
 
test_words = ["음식", "맛", "서비스", "위생", "가격"]
 
 
 
 
 
 
 
 
 
 
 

Tokenization과 vocab을 만드는 과정은 이전 실습과 유사합니다.

 
 
 
 
[-]
 
 
 
tokenizer = Okt()
 
 
 
 
 
 
 
 
 
 
[-]
 
 
 
def make_tokenized(data):
  tokenized = []
  for sent in tqdm(data):
    tokens = tokenizer.morphs(sent, stem=True)
    tokenized.append(tokens)
 
  return tokenized
 
 
 
 
 
 
 
 
 
 
[-]
 
 
 
train_tokenized = make_tokenized(train_data)
 
 
 
 
 
 
100%|██████████| 10/10 [00:06<00:00, 1.65it/s]
 
 
 
[-]
 
 
 
word_count = defaultdict(int)
 
for tokens in tqdm(train_tokenized):
  for token in tokens:
    word_count[token] += 1
 
 
 
 
 
 
100%|██████████| 10/10 [00:00<00:00, 12587.95it/s]
 
 
 
[-]
 
 
 
word_count = sorted(word_count.items(), key=lambda x: x[1], reverse=True)
print(list(word_count))
 
 
 
 
 
 
[('.', 14), ('도', 7), ('이다', 4), ('좋다', 4), ('별로', 3), ('다', 3), ('이', 3), ('너무', 3), ('음식', 3), ('서비스', 3), ('하다', 2), ('방문', 2), ('위생', 2), ('좀', 2), ('더', 2), ('에', 2), ('조금', 2), ('정말', 1), ('맛있다', 1), ('추천', 1), ('기대하다', 1), ('것', 1), ('보단', 1), ('가격', 1), ('비싸다', 1), ('다시', 1), ('가다', 1), ('싶다', 1), ('생각', 1), ('안', 1), ('드네', 1), ('요', 1), ('완전', 1), ('최고', 1), ('!', 1), ('재', 1), ('의사', 1), ('있다', 1), ('만족스럽다', 1), ('상태', 1), ('가', 1), ('개선', 1), ('되다', 1), ('기르다', 1), ('바라다', 1), ('맛', 1), ('직원', 1), ('분들', 1), ('친절하다', 1), ('기념일', 1), ('분위기', 1), ('전반', 1), ('적', 1), ('으로', 1), ('짜다', 1), ('저', 1), ('는', 1), ('신경', 1), ('써다', 1), ('불쾌하다', 1)]
 
 
 
[-]
 
 
 
w2i = {}
for pair in tqdm(word_count):
  if pair[0] not in w2i:
    w2i[pair[0]] = len(w2i)
 
 
 
 
 
 
100%|██████████| 60/60 [00:00<00:00, 147340.89it/s]
 
 
 
[-]
 
 
 
print(train_tokenized)
print(w2i)
 
 
 
 
 
 
[['정말', '맛있다', '.', '추천', '하다', '.'], ['기대하다', '것', '보단', '별로', '이다', '.'], ['다', '좋다', '가격', '이', '너무', '비싸다', '다시', '가다', '싶다', '생각', '이', '안', '드네', '요', '.'], ['완전', '최고', '이다', '!', '재', '방문', '의사', '있다', '.'], ['음식', '도', '서비스', '도', '다', '만족스럽다', '.'], ['위생', '상태', '가', '좀', '별로', '이다', '.', '좀', '더', '개선', '되다', '기르다', '바라다', '.'], ['맛', '도', '좋다', '직원', '분들', '서비스', '도', '너무', '친절하다', '.'], ['기념일', '에', '방문', '하다', '음식', '도', '분위기', '도', '서비스', '도', '다', '좋다', '.'], ['전반', '적', '으로', '음식', '이', '너무', '짜다', '.', '저', '는', '별로', '이다', '.'], ['위생', '에', '조금', '더', '신경', '써다', '좋다', '.', '조금', '불쾌하다', '.']] {'.': 0, '도': 1, '이다': 2, '좋다': 3, '별로': 4, '다': 5, '이': 6, '너무': 7, '음식': 8, '서비스': 9, '하다': 10, '방문': 11, '위생': 12, '좀': 13, '더': 14, '에': 15, '조금': 16, '정말': 17, '맛있다': 18, '추천': 19, '기대하다': 20, '것': 21, '보단': 22, '가격': 23, '비싸다': 24, '다시': 25, '가다': 26, '싶다': 27, '생각': 28, '안': 29, '드네': 30, '요': 31, '완전': 32, '최고': 33, '!': 34, '재': 35, '의사': 36, '있다': 37, '만족스럽다': 38, '상태': 39, '가': 40, '개선': 41, '되다': 42, '기르다': 43, '바라다': 44, '맛': 45, '직원': 46, '분들': 47, '친절하다': 48, '기념일': 49, '분위기': 50, '전반': 51, '적': 52, '으로': 53, '짜다': 54, '저': 55, '는': 56, '신경': 57, '써다': 58, '불쾌하다': 59}
 
 
 
 

실제 모델에 들어가기 위한 input을 만들기 위해 Dataset 클래스를 정의합니다.

 
 
 
 
[-]
 
 
 
class CBOWDataset(Dataset):
  def __init__(self, train_tokenized, window_size=2):
    self.x = []
    self.y = []
 
    for tokens in tqdm(train_tokenized):
      token_ids = [w2i[token] for token in tokens]
      for i, id in enumerate(token_ids):
        if i-window_size >= 0 and i+window_size < len(token_ids):
          self.x.append(token_ids[i-window_size:i] + token_ids[i+1:i+window_size+1])
          self.y.append(id)
 
    self.x = torch.LongTensor(self.x)  # (전체 데이터 개수, 2 * window_size)
    self.y = torch.LongTensor(self.y)  # (전체 데이터 개수)
 
  def __len__(self):
    return self.x.shape[0]
 
  def __getitem__(self, idx):
    return self.x[idx], self.y[idx]
 
 
 
 
 
 
 
 
 
 
[-]
 
 
 
class SkipGramDataset(Dataset):
  def __init__(self, train_tokenized, window_size=2):
    self.x = []
    self.y = []
 
    for tokens in tqdm(train_tokenized):
      token_ids = [w2i[token] for token in tokens]
      for i, id in enumerate(token_ids):
        if i-window_size >= 0 and i+window_size < len(token_ids):
          self.y += (token_ids[i-window_size:i] + token_ids[i+1:i+window_size+1])
          self.x += [id] * 2 * window_size
 
    self.x = torch.LongTensor(self.x)  # (전체 데이터 개수)
    self.y = torch.LongTensor(self.y)  # (전체 데이터 개수)
 
  def __len__(self):
    return self.x.shape[0]
 
  def __getitem__(self, idx):
    return self.x[idx], self.y[idx]
 
 
 
 
 
 
 
 
 
 

각 모델에 맞는 Dataset 객체를 생성합니다.

 
 
 
 
[-]
 
 
 
cbow_set = CBOWDataset(train_tokenized)
skipgram_set = SkipGramDataset(train_tokenized)
print(list(skipgram_set))
 
 
 
 
 
100%|██████████| 10/10 [00:00<00:00, 32768.00it/s] 100%|██████████| 10/10 [00:00<00:00, 18766.46it/s]
[(tensor(0), tensor(17)), (tensor(0), tensor(18)), (tensor(0), tensor(19)), (tensor(0), tensor(10)), (tensor(19), tensor(18)), (tensor(19), tensor(0)), (tensor(19), tensor(10)), (tensor(19), tensor(0)), (tensor(22), tensor(20)), (tensor(22), tensor(21)), (tensor(22), tensor(4)), (tensor(22), tensor(2)), (tensor(4), tensor(21)), (tensor(4), tensor(22)), (tensor(4), tensor(2)), (tensor(4), tensor(0)), (tensor(23), tensor(5)), (tensor(23), tensor(3)), (tensor(23), tensor(6)), (tensor(23), tensor(7)), (tensor(6), tensor(3)), (tensor(6), tensor(23)), (tensor(6), tensor(7)), (tensor(6), tensor(24)), (tensor(7), tensor(23)), (tensor(7), tensor(6)), (tensor(7), tensor(24)), (tensor(7), tensor(25)), (tensor(24), tensor(6)), (tensor(24), tensor(7)), (tensor(24), tensor(25)), (tensor(24), tensor(26)), (tensor(25), tensor(7)), (tensor(25), tensor(24)), (tensor(25), tensor(26)), (tensor(25), tensor(27)), (tensor(26), tensor(24)), (tensor(26), tensor(25)), (tensor(26), tensor(27)), (tensor(26), tensor(28)), (tensor(27), tensor(25)), (tensor(27), tensor(26)), (tensor(27), tensor(28)), (tensor(27), tensor(6)), (tensor(28), tensor(26)), (tensor(28), tensor(27)), (tensor(28), tensor(6)), (tensor(28), tensor(29)), (tensor(6), tensor(27)), (tensor(6), tensor(28)), (tensor(6), tensor(29)), (tensor(6), tensor(30)), (tensor(29), tensor(28)), (tensor(29), tensor(6)), (tensor(29), tensor(30)), (tensor(29), tensor(31)), (tensor(30), tensor(6)), (tensor(30), tensor(29)), (tensor(30), tensor(31)), (tensor(30), tensor(0)), (tensor(2), tensor(32)), (tensor(2), tensor(33)), (tensor(2), tensor(34)), (tensor(2), tensor(35)), (tensor(34), tensor(33)), (tensor(34), tensor(2)), (tensor(34), tensor(35)), (tensor(34), tensor(11)), (tensor(35), tensor(2)), (tensor(35), tensor(34)), (tensor(35), tensor(11)), (tensor(35), tensor(36)), (tensor(11), tensor(34)), (tensor(11), tensor(35)), (tensor(11), tensor(36)), (tensor(11), tensor(37)), (tensor(36), tensor(35)), (tensor(36), tensor(11)), (tensor(36), tensor(37)), (tensor(36), tensor(0)), (tensor(9), tensor(8)), (tensor(9), tensor(1)), (tensor(9), tensor(1)), (tensor(9), tensor(5)), (tensor(1), tensor(1)), (tensor(1), tensor(9)), (tensor(1), tensor(5)), (tensor(1), tensor(38)), (tensor(5), tensor(9)), (tensor(5), tensor(1)), (tensor(5), tensor(38)), (tensor(5), tensor(0)), (tensor(40), tensor(12)), (tensor(40), tensor(39)), (tensor(40), tensor(13)), (tensor(40), tensor(4)), (tensor(13), tensor(39)), (tensor(13), tensor(40)), (tensor(13), tensor(4)), (tensor(13), tensor(2)), (tensor(4), tensor(40)), (tensor(4), tensor(13)), (tensor(4), tensor(2)), (tensor(4), tensor(0)), (tensor(2), tensor(13)), (tensor(2), tensor(4)), (tensor(2), tensor(0)), (tensor(2), tensor(13)), (tensor(0), tensor(4)), (tensor(0), tensor(2)), (tensor(0), tensor(13)), (tensor(0), tensor(14)), (tensor(13), tensor(2)), (tensor(13), tensor(0)), (tensor(13), tensor(14)), (tensor(13), tensor(41)), (tensor(14), tensor(0)), (tensor(14), tensor(13)), (tensor(14), tensor(41)), (tensor(14), tensor(42)), (tensor(41), tensor(13)), (tensor(41), tensor(14)), (tensor(41), tensor(42)), (tensor(41), tensor(43)), (tensor(42), tensor(14)), (tensor(42), tensor(41)), (tensor(42), tensor(43)), (tensor(42), tensor(44)), (tensor(43), tensor(41)), (tensor(43), tensor(42)), (tensor(43), tensor(44)), (tensor(43), tensor(0)), (tensor(3), tensor(45)), (tensor(3), tensor(1)), (tensor(3), tensor(46)), (tensor(3), tensor(47)), (tensor(46), tensor(1)), (tensor(46), tensor(3)), (tensor(46), tensor(47)), (tensor(46), tensor(9)), (tensor(47), tensor(3)), (tensor(47), tensor(46)), (tensor(47), tensor(9)), (tensor(47), tensor(1)), (tensor(9), tensor(46)), (tensor(9), tensor(47)), (tensor(9), tensor(1)), (tensor(9), tensor(7)), (tensor(1), tensor(47)), (tensor(1), tensor(9)), (tensor(1), tensor(7)), (tensor(1), tensor(48)), (tensor(7), tensor(9)), (tensor(7), tensor(1)), (tensor(7), tensor(48)), (tensor(7), tensor(0)), (tensor(11), tensor(49)), (tensor(11), tensor(15)), (tensor(11), tensor(10)), (tensor(11), tensor(8)), (tensor(10), tensor(15)), (tensor(10), tensor(11)), (tensor(10), tensor(8)), (tensor(10), tensor(1)), (tensor(8), tensor(11)), (tensor(8), tensor(10)), (tensor(8), tensor(1)), (tensor(8), tensor(50)), (tensor(1), tensor(10)), (tensor(1), tensor(8)), (tensor(1), tensor(50)), (tensor(1), tensor(1)), (tensor(50), tensor(8)), (tensor(50), tensor(1)), (tensor(50), tensor(1)), (tensor(50), tensor(9)), (tensor(1), tensor(1)), (tensor(1), tensor(50)), (tensor(1), tensor(9)), (tensor(1), tensor(1)), (tensor(9), tensor(50)), (tensor(9), tensor(1)), (tensor(9), tensor(1)), (tensor(9), tensor(5)), (tensor(1), tensor(1)), (tensor(1), tensor(9)), (tensor(1), tensor(5)), (tensor(1), tensor(3)), (tensor(5), tensor(9)), (tensor(5), tensor(1)), (tensor(5), tensor(3)), (tensor(5), tensor(0)), (tensor(53), tensor(51)), (tensor(53), tensor(52)), (tensor(53), tensor(8)), (tensor(53), tensor(6)), (tensor(8), tensor(52)), (tensor(8), tensor(53)), (tensor(8), tensor(6)), (tensor(8), tensor(7)), (tensor(6), tensor(53)), (tensor(6), tensor(8)), (tensor(6), tensor(7)), (tensor(6), tensor(54)), (tensor(7), tensor(8)), (tensor(7), tensor(6)), (tensor(7), tensor(54)), (tensor(7), tensor(0)), (tensor(54), tensor(6)), (tensor(54), tensor(7)), (tensor(54), tensor(0)), (tensor(54), tensor(55)), (tensor(0), tensor(7)), (tensor(0), tensor(54)), (tensor(0), tensor(55)), (tensor(0), tensor(56)), (tensor(55), tensor(54)), (tensor(55), tensor(0)), (tensor(55), tensor(56)), (tensor(55), tensor(4)), (tensor(56), tensor(0)), (tensor(56), tensor(55)), (tensor(56), tensor(4)), (tensor(56), tensor(2)), (tensor(4), tensor(55)), (tensor(4), tensor(56)), (tensor(4), tensor(2)), (tensor(4), tensor(0)), (tensor(16), tensor(12)), (tensor(16), tensor(15)), (tensor(16), tensor(14)), (tensor(16), tensor(57)), (tensor(14), tensor(15)), (tensor(14), tensor(16)), (tensor(14), tensor(57)), (tensor(14), tensor(58)), (tensor(57), tensor(16)), (tensor(57), tensor(14)), (tensor(57), tensor(58)), (tensor(57), tensor(3)), (tensor(58), tensor(14)), (tensor(58), tensor(57)), (tensor(58), tensor(3)), (tensor(58), tensor(0)), (tensor(3), tensor(57)), (tensor(3), tensor(58)), (tensor(3), tensor(0)), (tensor(3), tensor(16)), (tensor(0), tensor(58)), (tensor(0), tensor(3)), (tensor(0), tensor(16)), (tensor(0), tensor(59)), (tensor(16), tensor(3)), (tensor(16), tensor(0)), (tensor(16), tensor(59)), (tensor(16), tensor(0))]
 
 
 
 
 

모델 Class 구현

 
 
 
 
 

차례대로 두 가지 Word2Vec 모델을 구현합니다.

  • self.embedding: vocab_size 크기의 one-hot vector를 특정 크기의 dim 차원으로 embedding 시키는 layer.
  • self.linear: 변환된 embedding vector를 다시 원래 vocab_size로 바꾸는 layer.
 
 
 
 
[-]
 
 
 
class CBOW(nn.Module):
  def __init__(self, vocab_size, dim):
    super(CBOW, self).__init__()
    self.embedding = nn.Embedding(vocab_size, dim, sparse=True)
    self.linear = nn.Linear(dim, vocab_size)
 
  # B: batch size, W: window size, d_w: word embedding size, V: vocab size
  def forward(self, x):  # x: (B, 2W)
    embeddings = self.embedding(x)  # (B, 2W, d_w)
    embeddings = torch.sum(embeddings, dim=1)  # (B, d_w)
    output = self.linear(embeddings)  # (B, V)
    return output
 
 
 
 
 
 
 
 
 
[-]
 
 
 
class SkipGram(nn.Module):
  def __init__(self, vocab_size, dim):
    super(SkipGram, self).__init__()
    self.embedding = nn.Embedding(vocab_size, dim, sparse=True)
    self.linear = nn.Linear(dim, vocab_size)
 
  # B: batch size, W: window size, d_w: word embedding size, V: vocab size
  def forward(self, x): # x: (B)
    embeddings = self.embedding(x)  # (B, d_w)
    output = self.linear(embeddings)  # (B, V)
    return output
 
 
 
 
 
 
 
 
 
 
 

두 가지 모델을 생성합니다.

 
 
 
 
[-]
 
 
 
cbow = CBOW(vocab_size=len(w2i), dim=256)
skipgram = SkipGram(vocab_size=len(w2i), dim=256)
 
 
 
 
 
 
 
 
 
 
 

모델 학습

 
 
 
 
 

다음과 같이 hyperparamter를 세팅하고 DataLoader 객체를 만듭니다.

 
 
 
 
[-]
 
 
 
batch_size=4
learning_rate = 5e-4
num_epochs = 5
device = torch.device('cuda') if torch.cuda.is_available() else torch.device('cpu')
 
cbow_loader = DataLoader(cbow_set, batch_size=batch_size)
skipgram_loader = DataLoader(skipgram_set, batch_size=batch_size)
 
 
 
 
 
 
 
 
 
 
 

첫번째로 CBOW 모델 학습입니다.

 
 
 
 
[-]
 
 
 
cbow.train()
cbow = cbow.to(device)
optim = torch.optim.SGD(cbow.parameters(), lr=learning_rate)
loss_function = nn.CrossEntropyLoss()
 
for e in range(1, num_epochs+1):
  print("#" * 50)
  print(f"Epoch: {e}")
  for batch in tqdm(cbow_loader):
    x, y = batch
    x, y = x.to(device), y.to(device) # (B, W), (B)
    output = cbow(x)  # (B, V)
 
    optim.zero_grad()
    loss = loss_function(output, y)
    loss.backward()
    optim.step()
 
    print(f"Train loss: {loss.item()}")
 
print("Finished.")
 
 
 
 
 
100%|██████████| 16/16 [00:00<00:00, 120.98it/s] 100%|██████████| 16/16 [00:00<00:00, 557.60it/s] 0%| | 0/16 [00:00<?, ?it/s]
################################################## Epoch: 1 Train loss: 4.297280788421631 Train loss: 4.729864120483398 Train loss: 5.374359607696533 Train loss: 4.867860794067383 Train loss: 4.6159563064575195 Train loss: 4.911556243896484 Train loss: 5.22588586807251 Train loss: 5.800774097442627 Train loss: 5.028513431549072 Train loss: 4.802209854125977 Train loss: 5.307229042053223 Train loss: 4.313600540161133 Train loss: 3.8307032585144043 Train loss: 4.335086345672607 Train loss: 5.522749900817871 Train loss: 4.849429130554199 ################################################## Epoch: 2 Train loss: 4.123970031738281 Train loss: 4.609380722045898 Train loss: 5.247824192047119 Train loss: 4.738308906555176 Train loss: 4.478948593139648 Train loss: 4.593076705932617 Train loss: 5.02129602432251 Train loss: 5.647274971008301 Train loss: 4.870308876037598 Train loss: 4.561524868011475 Train loss: 5.066004753112793 Train loss: 3.8739893436431885 Train loss: 3.6941893100738525 Train loss: 4.230743408203125 Train loss: 5.329159259796143 Train loss: 4.676291465759277 ################################################## Epoch: 3
100%|██████████| 16/16 [00:00<00:00, 534.83it/s] 100%|██████████| 16/16 [00:00<00:00, 613.94it/s] 100%|██████████| 16/16 [00:00<00:00, 598.10it/s]
Train loss: 3.9546220302581787 Train loss: 4.489847183227539 Train loss: 5.122530937194824 Train loss: 4.610262870788574 Train loss: 4.343705177307129 Train loss: 4.283929824829102 Train loss: 4.821906089782715 Train loss: 5.496441841125488 Train loss: 4.71958589553833 Train loss: 4.3275909423828125 Train loss: 4.838871479034424 Train loss: 3.458439350128174 Train loss: 3.5605764389038086 Train loss: 4.129044055938721 Train loss: 5.1399993896484375 Train loss: 4.5087690353393555 ################################################## Epoch: 4 Train loss: 3.789461851119995 Train loss: 4.371332168579102 Train loss: 4.998523235321045 Train loss: 4.48371696472168 Train loss: 4.2102460861206055 Train loss: 3.9860000610351562 Train loss: 4.628012657165527 Train loss: 5.348199844360352 Train loss: 4.576006889343262 Train loss: 4.101442813873291 Train loss: 4.625872611999512 Train loss: 3.0727128982543945 Train loss: 3.429940938949585 Train loss: 4.029915809631348 Train loss: 4.955425262451172 Train loss: 4.346712112426758 ################################################## Epoch: 5 Train loss: 3.62872052192688 Train loss: 4.253903865814209 Train loss: 4.875847816467285 Train loss: 4.35866641998291 Train loss: 4.078592300415039 Train loss: 3.701704740524292 Train loss: 4.439926624298096 Train loss: 5.202491283416748 Train loss: 4.439289093017578 Train loss: 3.884333372116089 Train loss: 4.4278035163879395 Train loss: 2.723599672317505 Train loss: 3.3023500442504883 Train loss: 3.933281421661377 Train loss: 4.775664806365967 Train loss: 4.189968109130859 Finished.
 
 
 
 
 

다음으로 Skip-gram 모델 학습입니다.

 
 
 
 
[-]
 
 
 
skipgram.train()
skipgram = skipgram.to(device)
optim = torch.optim.SGD(skipgram.parameters(), lr=learning_rate)
loss_function = nn.CrossEntropyLoss()
 
for e in range(1, num_epochs+1):
  print("#" * 50)
  print(f"Epoch: {e}")
  for batch in tqdm(skipgram_loader):
    x, y = batch
    x, y = x.to(device), y.to(device) # (B, W), (B)
    output = skipgram(x)  # (B, V)
 
    optim.zero_grad()
    loss = loss_function(output, y)
    loss.backward()
    optim.step()
 
    print(f"Train loss: {loss.item()}")
 
print("Finished.")
 
 
 
 
 
100%|██████████| 64/64 [00:00<00:00, 598.74it/s] 0%| | 0/64 [00:00<?, ?it/s]
################################################## Epoch: 1 Train loss: 3.8384199142456055 Train loss: 5.212664604187012 Train loss: 4.192468166351318 Train loss: 3.924748182296753 Train loss: 4.180654048919678 Train loss: 4.431178092956543 Train loss: 4.562439441680908 Train loss: 4.2784223556518555 Train loss: 4.411847114562988 Train loss: 4.388906478881836 Train loss: 3.8521981239318848 Train loss: 3.889497756958008 Train loss: 4.340659141540527 Train loss: 4.189478874206543 Train loss: 4.235395431518555 Train loss: 4.310013294219971 Train loss: 4.099724292755127 Train loss: 4.29006290435791 Train loss: 4.759505271911621 Train loss: 4.2873430252075195 Train loss: 3.950301170349121 Train loss: 3.9867653846740723 Train loss: 4.478280544281006 Train loss: 4.409287452697754 Train loss: 4.507840156555176 Train loss: 4.110485553741455 Train loss: 3.874032974243164 Train loss: 3.8919148445129395 Train loss: 4.319389343261719 Train loss: 4.187311172485352 Train loss: 4.086994647979736 Train loss: 4.356240749359131 Train loss: 4.105666637420654 Train loss: 4.1766862869262695 Train loss: 4.012052536010742 Train loss: 3.8789236545562744 Train loss: 4.5535478591918945 Train loss: 4.329890251159668 Train loss: 3.6463098526000977 Train loss: 4.359411239624023 Train loss: 4.355517387390137 Train loss: 4.180891036987305 Train loss: 3.990386486053467 Train loss: 4.601827621459961 Train loss: 3.6949143409729004 Train loss: 3.7617859840393066 Train loss: 4.150641441345215 Train loss: 4.124523639678955 Train loss: 4.02547550201416 Train loss: 3.980844497680664 Train loss: 4.125075340270996 Train loss: 4.013236045837402 Train loss: 3.771592140197754 Train loss: 4.64588737487793 Train loss: 4.599160671234131 Train loss: 4.2882280349731445 Train loss: 3.7696704864501953 Train loss: 4.104971408843994 Train loss: 4.489346981048584 Train loss: 4.597044467926025 Train loss: 4.20258903503418 Train loss: 3.9162909984588623 Train loss: 3.979168653488159 Train loss: 4.508050918579102 ################################################## Epoch: 2 Train loss: 3.8175911903381348 Train loss: 5.1589131355285645 Train loss: 4.16267728805542 Train loss: 3.872591972351074 Train loss: 4.145674705505371 Train loss: 4.390829086303711 Train loss: 4.5292816162109375 Train loss: 4.249494552612305 Train loss: 4.380071640014648 Train loss: 4.356088638305664 Train loss: 3.8250436782836914 Train loss: 3.8541653156280518 Train loss: 4.313096046447754 Train loss: 4.160789489746094 Train loss: 4.200711727142334 Train loss: 4.277615070343018 Train loss: 4.071531295776367 Train loss: 4.2674102783203125 Train loss: 4.723397731781006 Train loss: 4.257928848266602 Train loss: 3.8284287452697754 Train loss: 3.9025187492370605 Train loss: 4.428570747375488 Train loss: 4.377500057220459 Train loss: 4.462404251098633 Train loss: 4.057027339935303 Train loss: 3.8263022899627686 Train loss: 3.868835926055908 Train loss: 4.277206897735596 Train loss: 4.16380500793457 Train loss: 4.0583906173706055 Train loss: 4.320611953735352 Train loss: 4.077747344970703 Train loss: 4.145723342895508 Train loss: 3.972745656967163 Train loss: 3.8574752807617188 Train loss: 4.478192329406738 Train loss: 4.283147811889648 Train loss: 3.6109437942504883 Train loss: 4.3209357261657715 Train loss: 4.326137065887451 Train loss: 4.151703834533691 Train loss: 3.9277238845825195 Train loss: 4.558198928833008 Train loss: 3.5831704139709473 Train loss: 3.6444644927978516 Train loss: 4.0666184425354 Train loss: 4.075168132781982 Train loss: 3.9992432594299316 Train loss: 3.954000473022461 Train loss: 4.088382244110107 Train loss: 3.9753992557525635 Train loss: 3.7362864017486572 Train loss: 4.616837024688721 Train loss: 4.56742525100708 Train loss: 4.2659382820129395 Train loss: 3.719043254852295 Train loss: 4.079831123352051
100%|██████████| 64/64 [00:00<00:00, 627.83it/s] 100%|██████████| 64/64 [00:00<00:00, 657.60it/s] 0%| | 0/64 [00:00<?, ?it/s]
Train loss: 4.4650797843933105 Train loss: 4.562090873718262 Train loss: 4.163383483886719 Train loss: 3.891213893890381 Train loss: 3.955331325531006 Train loss: 4.46464729309082 ################################################## Epoch: 3 Train loss: 3.7973976135253906 Train loss: 5.105313777923584 Train loss: 4.133083343505859 Train loss: 3.821226119995117 Train loss: 4.110927104949951 Train loss: 4.351035118103027 Train loss: 4.496639728546143 Train loss: 4.220747947692871 Train loss: 4.348428726196289 Train loss: 4.323434829711914 Train loss: 3.7980661392211914 Train loss: 3.81907320022583 Train loss: 4.285991191864014 Train loss: 4.132233619689941 Train loss: 4.166227340698242 Train loss: 4.245691299438477 Train loss: 4.043497085571289 Train loss: 4.244868278503418 Train loss: 4.687600135803223 Train loss: 4.228672504425049 Train loss: 3.7087388038635254 Train loss: 3.820625066757202 Train loss: 4.379393100738525 Train loss: 4.345852851867676 Train loss: 4.417347431182861 Train loss: 4.0043535232543945 Train loss: 3.7792530059814453 Train loss: 3.846421718597412 Train loss: 4.235393524169922 Train loss: 4.140458106994629 Train loss: 4.029953956604004 Train loss: 4.285160064697266 Train loss: 4.049971580505371 Train loss: 4.115046501159668 Train loss: 3.933784008026123 Train loss: 3.836073875427246 Train loss: 4.40452766418457 Train loss: 4.2382097244262695 Train loss: 3.5764129161834717 Train loss: 4.282857418060303 Train loss: 4.296844482421875 Train loss: 4.122851371765137 Train loss: 3.867196559906006 Train loss: 4.514745712280273 Train loss: 3.4745004177093506 Train loss: 3.5295023918151855 Train loss: 3.985042095184326 Train loss: 4.026394844055176 Train loss: 3.9731507301330566 Train loss: 3.9274423122406006 Train loss: 4.052285194396973 Train loss: 3.938204526901245 Train loss: 3.7012887001037598 Train loss: 4.588348388671875 Train loss: 4.5358686447143555 Train loss: 4.243724822998047 Train loss: 3.6692326068878174 Train loss: 4.054922103881836 Train loss: 4.4409637451171875 Train loss: 4.527283191680908 Train loss: 4.124517440795898 Train loss: 3.866426944732666 Train loss: 3.932128667831421 Train loss: 4.421494483947754 ################################################## Epoch: 4 Train loss: 3.777804374694824 Train loss: 5.051872253417969 Train loss: 4.10368537902832 Train loss: 3.770681619644165 Train loss: 4.076414585113525 Train loss: 4.311802387237549 Train loss: 4.464509010314941 Train loss: 4.192182540893555 Train loss: 4.316919803619385 Train loss: 4.290947914123535 Train loss: 3.7712669372558594 Train loss: 3.784228801727295 Train loss: 4.259343147277832 Train loss: 4.103813171386719 Train loss: 4.1319451332092285 Train loss: 4.2142462730407715 Train loss: 4.015622615814209 Train loss: 4.22243595123291 Train loss: 4.6521148681640625 Train loss: 4.199576377868652 Train loss: 3.5915260314941406 Train loss: 3.741236686706543 Train loss: 4.3307671546936035 Train loss: 4.314348220825195 Train loss: 4.372677803039551 Train loss: 3.95249605178833 Train loss: 3.7329015731811523 Train loss: 3.8246428966522217 Train loss: 4.193958282470703 Train loss: 4.117270469665527 Train loss: 4.001684188842773 Train loss: 4.249889373779297 Train loss: 4.022341251373291 Train loss: 4.084664344787598 Train loss: 3.89517879486084 Train loss: 3.8147215843200684 Train loss: 4.332770347595215 Train loss: 4.195155143737793 Train loss: 3.542731761932373 Train loss: 4.245179176330566 Train loss: 4.267641067504883 Train loss: 4.094333171844482 Train loss: 3.8089122772216797 Train loss: 4.471460342407227 Train loss: 3.369122266769409 Train loss: 3.4172110557556152 Train loss: 3.9060661792755127 Train loss: 3.978222608566284 Train loss: 3.9471983909606934 Train loss: 3.901170253753662 Train loss: 4.016789436340332 Train loss: 3.9016523361206055 Train loss: 3.6666059494018555 Train loss: 4.560394287109375 Train loss: 4.504493713378906 Train loss: 4.221587181091309 Train loss: 3.620269775390625 Train loss: 4.030246734619141
100%|██████████| 64/64 [00:00<00:00, 651.51it/s] 100%|██████████| 64/64 [00:00<00:00, 681.41it/s]
Train loss: 4.416999816894531 Train loss: 4.4926252365112305 Train loss: 4.085996150970459 Train loss: 3.841931104660034 Train loss: 3.909532070159912 Train loss: 4.378600120544434 ################################################## Epoch: 5 Train loss: 3.758781671524048 Train loss: 4.998595237731934 Train loss: 4.0744853019714355 Train loss: 3.7209901809692383 Train loss: 4.042139530181885 Train loss: 4.273138999938965 Train loss: 4.432886123657227 Train loss: 4.163797855377197 Train loss: 4.285547256469727 Train loss: 4.25862979888916 Train loss: 3.744647979736328 Train loss: 3.7496352195739746 Train loss: 4.233151435852051 Train loss: 4.075531482696533 Train loss: 4.097867012023926 Train loss: 4.183282852172852 Train loss: 3.987910270690918 Train loss: 4.200115203857422 Train loss: 4.616942882537842 Train loss: 4.17064094543457 Train loss: 3.4771180152893066 Train loss: 3.6645047664642334 Train loss: 4.282710552215576 Train loss: 4.282989501953125 Train loss: 4.328404903411865 Train loss: 3.9014880657196045 Train loss: 3.6872634887695312 Train loss: 3.8034725189208984 Train loss: 4.152909278869629 Train loss: 4.094243049621582 Train loss: 3.9735844135284424 Train loss: 4.214800834655762 Train loss: 3.9948549270629883 Train loss: 4.054582595825195 Train loss: 3.856943368911743 Train loss: 3.7934207916259766 Train loss: 4.263162136077881 Train loss: 4.154057025909424 Train loss: 3.509913921356201 Train loss: 4.2079033851623535 Train loss: 4.238531112670898 Train loss: 4.066148281097412 Train loss: 3.752974510192871 Train loss: 4.42833948135376 Train loss: 3.2672553062438965 Train loss: 3.3079349994659424 Train loss: 3.8298420906066895 Train loss: 3.9306700229644775 Train loss: 3.9213876724243164 Train loss: 3.8751847743988037 Train loss: 3.981898784637451 Train loss: 3.8657426834106445 Train loss: 3.6322426795959473 Train loss: 4.532952308654785 Train loss: 4.473299980163574 Train loss: 4.199526309967041 Train loss: 3.57218599319458 Train loss: 4.0058088302612305 Train loss: 4.3931884765625 Train loss: 4.458118438720703 Train loss: 4.047821998596191 Train loss: 3.8177268505096436 Train loss: 3.8875174522399902 Train loss: 4.335970878601074 Finished.
 
 
 
 
 

테스트

 
 
 
 
 

학습된 각 모델을 이용하여 test 단어들의 word embedding을 확인합니다.

 
 
 
 
[-]
 
 
 
for word in test_words:
  input_id = torch.LongTensor([w2i[word]]).to(device)
  emb = cbow.embedding(input_id)
 
  print(f"Word: {word}")
  print(emb.squeeze(0))
 
 
 
 
 
 
Word: 음식 tensor([ 0.0770, 0.4028, 3.0270, -1.4315, 1.9937, 1.9035, -0.3945, -1.1214, 1.8607, -0.0245, 2.3736, -1.2413, -0.2151, -0.2600, 0.1059, 0.6962, -0.3324, 0.3500, -0.5809, 0.4289, 0.8010, -1.0797, -1.8177, -0.1410, -0.3096, -0.8890, -0.2145, -0.0498, 0.0589, 0.8724, 1.8069, 0.5039, -0.8848, -1.6378, 0.9117, 0.7441, 1.3005, -2.1118, -0.6466, -0.1993, -1.6252, -1.5150, -0.4987, 0.5051, 2.1790, 0.6818, -0.1482, 0.9649, 0.1217, -0.4859, -0.1830, -0.0834, -0.1020, 0.8460, 0.3833, 2.8839, -0.4185, 0.3685, -0.5269, -1.0064, 0.9178, 0.9811, -0.6638, 0.6100, -0.4799, 1.2343, -1.2136, 0.6422, 0.7429, 0.4420, -1.2215, -0.4083, -0.8325, -0.6576, 0.2512, -0.6085, 0.1092, -1.8268, 1.3599, 1.2443, -0.8883, 1.1801, -1.8986, -0.6674, -1.2125, 0.9390, 0.8438, 0.0548, -0.6014, -0.0297, -1.7178, -0.6630, 0.1338, -0.7603, -0.5865, -0.7592, 0.7938, -0.7978, 0.7357, -1.1081, -0.5354, -1.8839, 1.8353, -0.6568, -0.4870, 0.9384, -0.4895, 0.6594, -0.2371, 1.3845, -0.3800, 1.8920, -0.3000, -0.7336, 2.2806, -0.6526, 1.9331, 0.1024, -1.1963, -0.7042, -0.7605, 0.5404, 2.2561, -0.6910, -0.0287, -0.0305, -1.5796, 1.2674, -0.6744, 1.0171, 0.8899, -1.5418, -0.1898, -0.5221, 0.6177, -1.5710, 1.4112, -1.2161, -0.3675, 1.3363, -0.0587, 0.0783, 1.4891, -0.5596, -1.0842, -0.2585, 0.9439, 0.1604, 0.0310, -1.2827, -1.4048, -0.2974, 0.1833, 0.6177, -1.9053, 1.0550, -0.9356, -0.1744, -0.9902, -0.9606, -0.1241, 0.3523, 1.3031, -2.5111, -0.5188, -1.4721, 2.1613, 2.1726, 1.8255, 1.7843, -0.6582, -0.5423, -0.8682, -0.0768, 0.2451, 0.6357, -2.0110, -0.9475, -0.5615, -1.2239, 0.9986, 0.3609, 1.1838, -0.7712, 0.2875, -0.4984, 0.4547, 0.6085, -0.0560, -0.6657, 0.4659, -0.3371, 0.6381, -1.3573, 0.3893, 1.8157, 1.5903, 0.9670, 0.0103, -0.3478, -1.0569, 0.1823, -0.6681, -0.1107, 0.0116, 0.6981, -0.4280, 0.8302, 2.0375, 1.0821, 0.7577, 0.4174, 0.7994, 0.8467, -0.0913, 1.6386, 0.4755, 2.0821, 0.5949, 0.7048, -0.6576, 0.0080, -1.2553, 1.1822, 1.7370, -0.9128, -2.1701, -0.2659, 1.0699, 2.0089, 0.3443, 1.9250, -1.7374, -0.0881, 0.8116, -0.9015, -0.4472, -0.1210, -0.0343, 0.7014, -0.6411, 1.4906, -1.4365, 0.3301, 0.8149, -1.8088, 0.5948, 0.5132, -1.8997, 0.4701, -0.4214, 0.4741, -0.4395, -0.5636, 0.9475, -0.1828], device='cuda:0', grad_fn=<SqueezeBackward1>) Word: 맛 tensor([-1.0414e+00, -3.8544e-01, 1.0228e+00, 4.0802e-01, 1.1047e+00, -1.3469e+00, -1.8285e+00, 5.6549e-02, 1.7495e+00, -5.9683e-02, -4.8316e-01, 7.6761e-01, 2.0454e+00, -1.7000e-01, 4.7998e-01, 8.2096e-01, 6.2430e-02, 6.8561e-01, -1.0036e+00, -3.2412e-01, 1.9093e+00, 4.8464e-01, 6.8786e-01, -1.0154e+00, 7.6139e-01, -1.8692e+00, 1.3146e+00, -6.8610e-01, 7.9932e-01, 1.6905e-01, 3.2390e-02, -7.8690e-01, 1.2781e+00, 1.0475e-01, -2.1728e-03, 7.3013e-01, -4.5115e-01, 6.5381e-02, 1.6577e-01, -8.2247e-01, 6.2375e-01, 7.8034e-01, -7.9988e-01, -1.1774e+00, 6.8386e-01, 4.9654e-01, 1.4956e+00, -3.3589e-02, -1.0166e+00, -4.4297e-01, 1.2979e+00, -6.0240e-01, 8.3222e-01, -1.4862e+00, -9.4233e-01, -7.5509e-01, 7.5698e-01, -2.1378e-01, 8.7947e-01, 1.6345e+00, 1.2840e+00, -1.6231e+00, 2.1288e-01, -3.5329e-02, 9.5900e-01, -8.3374e-01, -7.8639e-01, 7.9057e-01, 1.0697e+00, 1.4526e+00, 1.0488e-02, -1.7859e-01, -8.8663e-01, -7.9630e-01, 8.7462e-01, -8.0867e-01, -8.3449e-01, -1.4752e+00, -2.6743e-01, -2.4805e-01, 1.3219e+00, 6.3183e-02, -4.5511e-01, -2.6845e-01, -1.5838e+00, 1.3084e+00, -2.9080e-01, 2.1972e+00, -7.9568e-01, 5.4447e-01, -2.4616e+00, 1.1678e+00, -3.9900e-01, 2.2460e+00, 5.5938e-01, 4.2252e-01, 9.1599e-01, -5.9178e-01, 5.3144e-01, 9.7046e-01, 2.9674e+00, -9.5261e-01, -1.9397e-01, 1.1926e+00, 2.7426e-01, 2.5830e-01, -6.6908e-01, -1.2018e+00, -1.3532e-01, -1.5622e+00, -1.4482e-01, -4.1910e-01, -1.1586e+00, -2.1163e+00, -4.8143e-01, -1.3598e+00, -9.4482e-01, -2.3240e-01, 1.0864e+00, -4.9773e-01, -2.0780e+00, -1.3615e+00, 1.0944e-01, -8.1015e-01, -9.0273e-01, 7.4721e-01, -1.8428e+00, 9.7574e-01, -2.0736e+00, 4.8152e-01, -2.9152e-01, -1.3380e+00, 1.7059e+00, 1.4243e-01, -1.5216e+00, 1.1989e-01, -6.6314e-01, 5.1479e-01, 1.9773e+00, 3.1804e-01, 1.3033e+00, -6.8622e-01, -5.7728e-01, 2.9712e-01, -5.7751e-01, 4.5493e-01, -2.5941e+00, 1.4557e+00, 4.8445e-03, -7.6917e-01, 2.0032e-02, -3.8600e-01, -1.7178e+00, -8.1605e-01, 1.4885e+00, -5.9708e-01, 2.1384e+00, 3.8138e-01, -8.2983e-01, -6.1579e-01, -1.2638e+00, 1.1622e-01, -2.8513e-01, 2.4737e-01, 4.8312e-01, -2.6591e-01, 1.2675e-01, 8.8097e-01, 3.3596e-01, 2.6746e-01, -3.9691e-01, -3.6772e-01, -3.1754e-01, -3.8493e+00, 2.0569e-01, 2.6643e-01, -1.3023e+00, -3.7621e-01, -1.7662e-01, -1.4530e-01, -1.5944e+00, -1.6903e+00, 1.6752e+00, 1.3927e+00, -4.8353e-01, 1.2953e+00, 6.2851e-01, 2.7968e-01, 7.9758e-01, -8.2469e-02, -1.8792e-02, -8.1393e-01, -1.6356e-01, 4.6160e-02, -1.6603e+00, 1.9054e+00, -1.4360e+00, 1.6539e+00, -5.5862e-01, -1.2851e+00, 6.4242e-01, 1.0063e+00, 4.2746e-01, 4.3238e-01, -4.9363e-01, -3.9131e-01, 1.4169e+00, -4.8168e-01, -2.9677e-01, 1.5425e+00, 4.9100e-01, -3.5071e-01, -2.6622e+00, -1.6902e-02, 1.0002e+00, 8.2396e-01, -1.1292e+00, -5.1191e-01, 4.4575e-01, 1.8927e+00, -1.0374e-01, -6.7500e-01, 9.2120e-01, -9.4810e-01, -1.0901e+00, 4.2755e-01, -1.9597e-01, -7.9154e-01, 3.0553e-02, 3.7633e-01, 4.2275e-01, 6.7270e-01, -1.3053e+00, 9.5343e-01, -2.5019e+00, 9.0995e-01, 1.0932e+00, -5.9225e-01, 6.6807e-01, -9.1156e-02, -8.6307e-01, 1.3848e+00, -1.5485e+00, -2.1182e+00, 2.4990e-01, 6.7717e-01, 2.9414e-01, 1.3309e+00, -2.7649e-01, 7.6303e-01, 2.3666e+00, 1.2225e+00, -9.1187e-01, -7.3116e-01, 2.4358e-01, -2.7687e-01], device='cuda:0', grad_fn=<SqueezeBackward1>) Word: 서비스 tensor([ 0.9215, 1.0410, -2.2453, 1.9284, 2.6482, 0.3980, 0.2350, -0.3647, -1.0702, -0.3987, -0.7472, -1.0981, 2.0686, 1.3259, 1.1556, 1.0832, 1.0142, -0.1863, 0.8983, 0.5635, -0.1430, 0.3113, -1.3805, 0.3885, 0.7818, -0.1664, -0.3462, -0.7453, -0.1358, 0.1484, -0.8883, -0.7711, 0.8562, -0.7830, 2.2884, 0.1425, 0.3289, 1.8589, 0.2496, 0.5791, 0.6465, -0.0181, -0.7254, -0.8178, 0.7507, 0.2278, 1.3651, -2.3150, 0.8196, 0.0482, 1.7302, -2.3313, 1.1373, 0.5511, -0.5662, 0.0067, -0.2690, -0.1077, 0.2806, -0.8309, -0.1014, -1.6750, 0.4647, 1.7490, -0.2829, 1.2001, 0.3949, -0.9854, -2.1255, 0.1364, -1.4753, -0.0221, 0.9243, 0.9231, 1.2973, -0.1367, 0.8731, 1.1021, 0.2687, 0.5530, -0.2727, 0.9077, 1.2941, 1.1147, 0.9239, -1.2609, 1.3335, -0.6213, -0.0685, -1.3158, 1.1105, -0.4439, 0.6629, 0.7149, -0.7864, 1.7800, 0.2645, -2.5288, 0.8077, -0.1162, -1.3974, -0.8163, -0.1544, 0.7038, -0.1421, 0.4054, 0.6869, 1.0378, 0.4924, 0.8274, -0.0226, -0.9637, -1.8393, -1.1736, -0.4260, -0.3536, 1.4677, -1.4588, -1.1202, -1.0964, -0.5988, 0.4563, 0.0535, -1.2354, 0.4360, 0.6823, -0.8126, 0.4779, 0.6869, -0.5989, 0.1811, 0.7607, -0.0258, -1.3743, 0.6793, 0.5962, 0.6033, 0.0195, 1.8003, 0.3046, -0.9405, 0.8392, 0.6761, -1.4889, 0.4222, 0.2811, 0.3928, 0.8314, -1.2582, -2.2413, 1.3006, -0.7701, 2.1982, -0.2230, 0.1632, 0.8816, 0.5172, -1.8244, -1.0356, 1.2558, -0.6989, 0.8351, 1.1106, 1.4796, -0.2747, 0.4724, 0.5735, -0.2961, -0.7919, -1.0236, 0.0439, 1.4042, -0.2171, -0.6648, -0.2883, 3.0065, 1.2553, -1.1755, 0.0354, -0.7262, 0.0250, 0.8529, 0.8713, 0.9179, -0.4326, -0.3911, 0.4406, -0.8003, -1.3554, -0.0344, 0.4964, -2.0510, -0.4568, 0.2061, -0.5992, 1.5928, -0.6143, 3.0012, 0.6105, 0.2561, -1.0024, -2.2391, 1.0376, -0.0577, -1.5303, -1.0355, -2.3769, -0.5102, 0.8851, -0.9424, -0.4662, -2.3952, -0.0794, 1.2390, 0.7890, 0.4208, -2.2746, -1.5006, 1.6224, 1.2576, -1.5034, -1.5659, -2.1970, -0.0905, -1.0884, 1.2786, -0.4395, 0.9613, -0.5868, 1.1751, 0.5295, 1.0266, 0.0354, 0.1044, -1.1575, 1.2974, 1.0529, -0.8210, -1.7239, -0.5386, 0.7248, -0.9080, 1.5436, -1.2018, -1.0985, -1.1899, -2.2340, 0.2490, 0.3941, -0.3445, 1.0878, -0.5598, 1.3202, -0.2257, 1.2802, 0.3861], device='cuda:0', grad_fn=<SqueezeBackward1>) Word: 위생 tensor([ 0.6043, 0.0892, -0.9123, -1.2428, -0.3380, 0.4292, 0.0409, -1.2087, -0.8595, -1.7768, 1.0128, -0.9289, 2.7694, -0.3449, -1.5295, 0.5423, 1.3791, 1.4889, -0.3880, 0.4626, 0.0984, -0.8939, 0.5436, 0.2417, -0.0506, 1.5764, 0.5897, -1.8435, 1.0895, -1.4701, -0.7339, 1.7989, -0.9643, 0.2431, -0.1178, 0.1161, -2.0071, 1.4299, -0.9253, -2.2861, 1.0843, -1.2128, -0.3323, -1.0759, 0.8555, 0.0583, -0.9058, -1.1742, 1.0165, 2.0041, -2.4760, 0.6201, -0.8511, -1.1725, -0.0139, -1.0863, 0.9329, 0.1298, -1.1973, 0.3625, 1.2769, -1.4359, 1.4952, -0.6819, -1.4932, 1.4755, 0.1217, -1.3097, -0.6007, -0.2980, -1.1293, 0.2425, -0.0035, 1.3180, 0.0588, -0.6091, 1.0672, -0.1044, -0.6480, 1.4448, 0.0453, 2.0043, 0.7409, -1.2298, -0.2716, 1.8071, 0.6843, 0.3011, -0.3340, -1.3347, -0.3832, -0.3023, 0.5696, 0.5849, 0.3544, -1.5978, 0.0486, -0.4656, 0.9934, 0.0930, -0.2931, -1.7733, 1.5426, 1.6112, -1.0544, 1.9299, -0.5885, 0.0151, 2.4385, 0.9999, 0.3269, -0.4669, -1.3330, -0.9122, -1.1762, -1.7108, -0.5755, -0.7050, 2.2567, -0.0641, 1.1669, -1.3278, -0.1407, 0.2964, 0.0358, 0.4554, 0.1180, -1.2391, -0.4290, 0.7402, -1.4150, 2.0659, 0.7435, -0.5344, -1.6763, -0.9688, -0.6769, 0.0202, -0.9944, 0.4195, 1.0967, 0.1206, -1.8371, -0.9116, -1.2712, -0.4103, 0.5726, -0.9871, 0.5062, -1.2498, 0.3803, 0.8948, 0.7132, -2.6311, 1.5590, -0.4762, -0.5537, 1.0052, 0.5055, -0.6690, -0.4199, 0.1469, 1.8922, 0.5241, -0.4919, -1.2094, 2.0129, 1.7603, 0.0207, 0.0153, 0.1457, 1.1218, -1.7745, 1.2534, -1.4713, -0.8102, -0.1015, -0.4509, 0.0144, -0.5071, -0.3943, 1.0603, -0.3996, -0.8369, -0.3683, 0.7109, -0.6555, -0.0744, 0.4722, -0.0689, 0.5095, -0.3632, 0.3135, -1.9937, 0.3885, -2.3550, 0.2368, 0.9862, 0.0582, 0.5747, -1.5349, -0.5423, -0.1871, 1.6864, 0.8009, -0.7367, -1.0278, -0.4644, 0.2852, -0.6268, 0.0797, -0.3269, 0.4818, 1.6162, 1.0621, -0.3148, 0.0264, 0.4423, -0.1714, 0.3526, -0.6545, 1.4438, -0.8437, -0.2313, 1.7675, 1.3346, -0.6534, 0.5466, -0.5798, -0.2439, -0.0165, 0.6159, -0.7650, 0.7165, -0.0211, -1.0617, 0.1895, 0.7645, 0.0956, 0.6044, 0.4223, -1.1680, -0.4706, 0.2713, 0.6736, -0.8182, 0.2524, 0.1709, -0.4410, -0.0209, -0.2859, 1.8284, 0.5954, -0.6624, -0.5011, 1.8026], device='cuda:0', grad_fn=<SqueezeBackward1>) Word: 가격 tensor([ 0.3012, -1.5042, -0.1722, -1.8672, -1.7899, -0.6085, 0.6552, -0.5296, -0.4705, 0.6446, -0.6449, 0.8217, 0.5554, -0.0201, 0.7582, -1.1252, -0.9889, -0.5716, 1.1433, 0.0227, 1.8905, -0.6516, 0.2073, -0.0605, 0.3072, 0.0830, -1.4768, -0.4086, 0.0523, 0.2791, -0.5093, -0.6964, -0.2189, -0.6857, 0.5703, 1.7501, 0.2679, -0.1947, -0.8351, -0.6344, -1.3508, -0.4025, -0.5057, 1.3803, -1.1519, 1.1395, -0.6188, -0.0818, 2.2957, 0.2057, 0.5211, -0.2985, -1.9917, 1.4349, 2.1860, 0.0708, 0.7500, 0.2972, -1.0123, 0.7647, -0.8205, -1.2108, 0.7698, -0.2753, 0.2617, -0.2009, -0.6643, -1.1585, -0.4728, -0.6152, -0.2068, -0.4283, -2.4365, 0.7853, -1.8544, 0.2047, 0.3333, -1.9758, -1.7730, 0.6162, -1.3387, 0.5271, -0.8241, -1.0932, -0.1263, 0.1716, 0.6593, 1.0508, 1.0878, 0.1348, 0.3838, 1.7269, 0.1443, 0.6094, 2.0458, 0.1385, -0.8349, -0.8584, -0.8407, 1.0584, -0.0078, 0.3471, 0.4667, 1.5919, -1.0211, -1.9232, 1.4164, 0.0210, 0.1475, 0.1830, -0.6484, -0.9457, 0.3559, 0.5296, 0.3420, 0.6947, -0.4890, 1.5767, 0.3715, 1.0377, 0.1512, 0.0502, -0.6034, -0.3915, -0.4747, 0.2241, -0.5410, 0.9454, -0.7754, 1.0669, 1.6983, 1.0172, 0.0168, 0.8575, 1.0156, 0.0373, -1.0389, 1.5934, 0.9612, 0.2038, 0.6591, -0.7061, 0.1245, 0.2520, -0.2144, 1.5236, 0.4630, 2.3413, -0.7197, 1.0405, -0.5257, 0.2430, -0.7700, 0.5831, -1.2803, 0.3089, -0.1543, 0.3996, 1.2911, -0.7933, -1.2196, 0.3352, 1.8195, -0.2783, -1.1412, 0.1512, 1.8637, -0.0269, -0.3136, 0.6030, -0.2992, 3.3176, -0.9007, -0.1429, -0.7003, 0.7029, -0.6196, 0.7166, 0.1258, -1.0670, -1.7434, -0.4934, -0.5810, 0.2575, 0.1559, -1.4514, 1.1896, 0.1709, 0.8057, -1.2008, 0.1799, -1.2504, -0.8200, -0.8563, 0.0260, -1.7009, 0.0856, 0.5295, -0.0561, -0.8807, -0.4068, 0.2860, 0.1297, -1.1763, 1.1306, 0.3767, 0.0397, 0.1192, -1.1489, -0.7009, -0.3174, 0.0360, 1.1676, 1.4208, -0.2806, 0.8983, -1.9411, -1.6421, -1.1627, 1.0814, -1.5616, 0.3396, 0.7201, -0.8584, -0.6827, 0.3134, 0.1790, 1.6754, 1.2742, 0.2723, 0.1670, -0.6512, -1.4309, -0.6296, -0.0126, 0.5636, -0.1696, -1.7206, -0.5787, 1.4313, 2.3929, 0.1521, 0.6567, -0.9286, 1.0929, 0.0139, -0.9664, -0.5419, 0.5681, -0.6909, 0.8851, -1.3792, 2.5723, 0.7439, -0.0605, 0.9162], device='cuda:0', grad_fn=<SqueezeBackward1>)
 
 
 
[-]
 
 
 
for word in test_words:
  input_id = torch.LongTensor([w2i[word]]).to(device)
  emb = skipgram.embedding(input_id)
 
  print(f"Word: {word}")
  print(max(emb.squeeze(0)))
 
 
 
 
 
Word: 음식 tensor(2.6628, device='cuda:0', grad_fn=<UnbindBackward>) Word: 맛 tensor(3.7128, device='cuda:0', grad_fn=<UnbindBackward>) Word: 서비스 tensor(2.4566, device='cuda:0', grad_fn=<UnbindBackward>) Word: 위생 tensor(2.2528, device='cuda:0', grad_fn=<UnbindBackward>) Word: 가격 tensor(2.2812, device='cuda:0', grad_fn=<UnbindBackward>)
 
 
[-]
 

 

 

 

 

========================

퀴즈 / 과제

nlp 에서 token 에 is_stop boolean 메소드를 지원하는데, 불어면 true 아니면 false다. 왜 is_stop이라는 이름으로 지었는지 모르겠음.

 

===========================

피어세션

kaggle 하면서 실습하며 전체적인 프로젝트 방법도 해보고, 필요하다면 라이브러리 request도 해보고.. 하며 자기 전문 실력 늘리는거다. 수업 듣는것만으로는 절때 소용없다.

 

농협은 중앙회로 들어가라. 계열사는 우대사항조차 전혀없고 밥통도 아니다. 다른은행 다 별로다. 행원 안해도 되고 코드는 외주맡기고. 설계만 하고 외주 던져주는 방법으로. 그래서 필기를 보는구나.

 

=============================

후기

 

오늘은 나름 쉬운것 같아 다행이다.
오늘부터라도 kaggle로 능력을 키우고 원하는 분야를 찾아야 겠다.