diff --git a/Untitled3.ipynb b/Untitled3.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..a0dd5150ff163c288966ddb49d59e78ca713f228
--- /dev/null
+++ b/Untitled3.ipynb
@@ -0,0 +1,848 @@
+{
+ "cells": [
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import requests\n",
+    "from bs4 import BeautifulSoup\n",
+    "import time\n",
+    "import csv\n",
+    "\n",
+    "need_reviews_cnt = 1000\n",
+    "reviews = []\n",
+    "review_data=[]\n",
+    "\n",
+    "#page를 1부터 1씩 증가하며 URL을 다음 페이지로 바꿈 \n",
+    "for page in range(100):\n",
+    "    url = f'https://movie.naver.com/movie/point/af/list.naver?&page={page}'\n",
+    "    #get : request로 url의  html문서의 내용 요청\n",
+    "    html = requests.get(url)\n",
+    "    #html을 받아온 문서를 .content로 지정 후 soup객체로 변환\n",
+    "    soup = BeautifulSoup(html.content,'html.parser')\n",
+    "    #find_all : 지정한 태그의 내용을 모두 찾아 리스트로 반환\n",
+    "    reviews = soup.find_all(\"td\",{\"class\":\"title\"})\n",
+    "    \n",
+    "    #한 페이지의 리뷰 리스트의 리뷰를 하나씩 보면서 데이터 추출\n",
+    "    for review in reviews:\n",
+    "        sentence = review.find(\"a\",{\"class\":\"report\"}).get(\"onclick\").split(\"', '\")[2]\n",
+    "        #만약 리뷰 내용이 비어있다면 데이터를 사용하지 않음\n",
+    "        if sentence != \"\":\n",
+    "            movie = review.find(\"a\",{\"class\":\"movie color_b\"}).get_text()\n",
+    "            score = review.find(\"em\").get_text()\n",
+    "            review_data.append([movie,sentence,int(score)])\n",
+    "            need_reviews_cnt-= 1\n",
+    "    #현재까지 수집된 리뷰가 목표 수집 리뷰보다 많아진 경우 크롤링 중지        \n",
+    "    if need_reviews_cnt < 0:                                         \n",
+    "        break\n",
+    "    #다음 페이지를 조회하기 전 0.5초 시간 차를 두기\n",
+    "    time.sleep(0.5)\n",
+    "     \n",
+    "columns_name = [\"movie\",\"sentence\",\"score\"]\n",
+    "with open ( \"samples.csv\", \"w\", newline =\"\",encoding = 'utf8' ) as f:\n",
+    "    write = csv.writer(f)\n",
+    "    write.writerow(columns_name)\n",
+    "    write.writerows(review_data)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 14,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import pandas as pd\n",
+    "import numpy as np\n",
+    "df = pd.read_csv('samples.csv') "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 15,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "df.head()\n",
+    "df['sentence'] = df['sentence'].str.replace(\"[^ㄱ-ㅎㅏ-ㅣ가-힣 ]\",\"\")\n",
+    "#한글과 공백을 제외한 특수문자 이모티콘 개행문자 제거"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 16,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stderr",
+     "output_type": "stream",
+     "text": [
+      "100%|███████████████████████████████████████████████████████████████████████████████| 952/952 [00:06<00:00, 149.03it/s]\n"
+     ]
+    }
+   ],
+   "source": [
+    "from konlpy.tag import Okt\n",
+    "import pandas as pd\n",
+    "import numpy as np\n",
+    "import matplotlib.pyplot as plt\n",
+    "import re\n",
+    "import urllib.request\n",
+    "from konlpy.tag import Okt\n",
+    "from tqdm import tqdm\n",
+    "from tensorflow.keras.preprocessing.text import Tokenizer\n",
+    "from tensorflow.keras.preprocessing.sequence import pad_sequences\n",
+    "\n",
+    "okt = Okt() # 형태소 분석기 객체 생성\n",
+    "noun_list = []\n",
+    "for content in tqdm(df['sentence']): \n",
+    "    nouns = okt.nouns(content) # 명사만 추출하기, 결과값은 명사 리스트\n",
+    "    noun_list.append(nouns)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 17,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/html": [
+       "<div>\n",
+       "<style scoped>\n",
+       "    .dataframe tbody tr th:only-of-type {\n",
+       "        vertical-align: middle;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe tbody tr th {\n",
+       "        vertical-align: top;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe thead th {\n",
+       "        text-align: right;\n",
+       "    }\n",
+       "</style>\n",
+       "<table border=\"1\" class=\"dataframe\">\n",
+       "  <thead>\n",
+       "    <tr style=\"text-align: right;\">\n",
+       "      <th></th>\n",
+       "      <th>movie</th>\n",
+       "      <th>sentence</th>\n",
+       "      <th>score</th>\n",
+       "      <th>nouns</th>\n",
+       "    </tr>\n",
+       "  </thead>\n",
+       "  <tbody>\n",
+       "    <tr>\n",
+       "      <th>0</th>\n",
+       "      <td>20세기 소녀</td>\n",
+       "      <td>사골도 이런 사골이없다</td>\n",
+       "      <td>2</td>\n",
+       "      <td>[사골, 사골]</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>1</th>\n",
+       "      <td>늑대사냥</td>\n",
+       "      <td>별점도 아깝네요 저 좋은 배우들로 이딴걸만들다니</td>\n",
+       "      <td>1</td>\n",
+       "      <td>[점도, 저, 배우, 걸]</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>2</th>\n",
+       "      <td>늑대사냥</td>\n",
+       "      <td>설마 시즌 나오는건 아니겠지</td>\n",
+       "      <td>5</td>\n",
+       "      <td>[설마, 시즌]</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>3</th>\n",
+       "      <td>캐리비안의 해적 - 세상의 끝에서</td>\n",
+       "      <td>편 중에 평가가 제일 낮지만 난 개인적으로 가장 재미있게 본 편 중간중간 장면들을 ...</td>\n",
+       "      <td>10</td>\n",
+       "      <td>[편, 중, 평가, 제일, 낮, 난, 개인, 가장, 편, 중간, 중간, 장면, 이,...</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>4</th>\n",
+       "      <td>달콤한 인생</td>\n",
+       "      <td>범죄 조직의 보스 강 사장의 연인 희수를 감시하는 임무를 맡은 선우가 한순간의 선택...</td>\n",
+       "      <td>9</td>\n",
+       "      <td>[범죄, 조직, 보스, 강, 사장, 연인, 희수, 감시, 임무, 선우, 한순간, 선...</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>...</th>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>947</th>\n",
+       "      <td>십계</td>\n",
+       "      <td>고대 이집트의 영광과 이스라엘의 신앙이 미국의 기술력과 결합하도다바다여갈라져라</td>\n",
+       "      <td>10</td>\n",
+       "      <td>[고대, 이집트, 영광, 이스라엘, 신앙, 미국, 기술, 결합, 바다]</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>948</th>\n",
+       "      <td>에브리씽 에브리웨어 올 앳 원스</td>\n",
+       "      <td>정신없고 다채로운데 그 와중에 재미와 감동이 있다 전체적인 메시지는 심플하지만 그것...</td>\n",
+       "      <td>10</td>\n",
+       "      <td>[정신, 채, 데, 그, 와중, 재미, 감동, 전체, 메시지, 심플, 그것, 방식,...</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>949</th>\n",
+       "      <td>블랙 아담</td>\n",
+       "      <td>기대 전혀 안했는데 생각보다는 꽤 괜찮은 영화</td>\n",
+       "      <td>6</td>\n",
+       "      <td>[기대, 전혀, 생각, 꽤, 영화]</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>950</th>\n",
+       "      <td>장산범</td>\n",
+       "      <td>그냥 주인공 여자 답답해 죽음 진짜 똑같은 방법으로 몇 번을 속는지 모르겠고 감독도...</td>\n",
+       "      <td>1</td>\n",
+       "      <td>[그냥, 주인공, 여자, 죽음, 진짜, 방법, 몇, 번, 속, 감독, 그냥, 방법,...</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>951</th>\n",
+       "      <td>블랙 스완</td>\n",
+       "      <td>새는 알에서 나오려고 투쟁한다 알은 세계이다 태어나려는 자는 하나의 세계를 깨뜨려야...</td>\n",
+       "      <td>10</td>\n",
+       "      <td>[알, 투쟁, 알, 세계, 하나, 세계, 데미안]</td>\n",
+       "    </tr>\n",
+       "  </tbody>\n",
+       "</table>\n",
+       "<p>952 rows × 4 columns</p>\n",
+       "</div>"
+      ],
+      "text/plain": [
+       "                  movie                                           sentence  \\\n",
+       "0               20세기 소녀                                       사골도 이런 사골이없다   \n",
+       "1                  늑대사냥                         별점도 아깝네요 저 좋은 배우들로 이딴걸만들다니   \n",
+       "2                  늑대사냥                                    설마 시즌 나오는건 아니겠지   \n",
+       "3    캐리비안의 해적 - 세상의 끝에서  편 중에 평가가 제일 낮지만 난 개인적으로 가장 재미있게 본 편 중간중간 장면들을 ...   \n",
+       "4                달콤한 인생  범죄 조직의 보스 강 사장의 연인 희수를 감시하는 임무를 맡은 선우가 한순간의 선택...   \n",
+       "..                  ...                                                ...   \n",
+       "947                  십계        고대 이집트의 영광과 이스라엘의 신앙이 미국의 기술력과 결합하도다바다여갈라져라   \n",
+       "948   에브리씽 에브리웨어 올 앳 원스  정신없고 다채로운데 그 와중에 재미와 감동이 있다 전체적인 메시지는 심플하지만 그것...   \n",
+       "949               블랙 아담                          기대 전혀 안했는데 생각보다는 꽤 괜찮은 영화   \n",
+       "950                 장산범  그냥 주인공 여자 답답해 죽음 진짜 똑같은 방법으로 몇 번을 속는지 모르겠고 감독도...   \n",
+       "951               블랙 스완  새는 알에서 나오려고 투쟁한다 알은 세계이다 태어나려는 자는 하나의 세계를 깨뜨려야...   \n",
+       "\n",
+       "     score                                              nouns  \n",
+       "0        2                                           [사골, 사골]  \n",
+       "1        1                                     [점도, 저, 배우, 걸]  \n",
+       "2        5                                           [설마, 시즌]  \n",
+       "3       10  [편, 중, 평가, 제일, 낮, 난, 개인, 가장, 편, 중간, 중간, 장면, 이,...  \n",
+       "4        9  [범죄, 조직, 보스, 강, 사장, 연인, 희수, 감시, 임무, 선우, 한순간, 선...  \n",
+       "..     ...                                                ...  \n",
+       "947     10            [고대, 이집트, 영광, 이스라엘, 신앙, 미국, 기술, 결합, 바다]  \n",
+       "948     10  [정신, 채, 데, 그, 와중, 재미, 감동, 전체, 메시지, 심플, 그것, 방식,...  \n",
+       "949      6                                [기대, 전혀, 생각, 꽤, 영화]  \n",
+       "950      1  [그냥, 주인공, 여자, 죽음, 진짜, 방법, 몇, 번, 속, 감독, 그냥, 방법,...  \n",
+       "951     10                        [알, 투쟁, 알, 세계, 하나, 세계, 데미안]  \n",
+       "\n",
+       "[952 rows x 4 columns]"
+      ]
+     },
+     "execution_count": 17,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "df['nouns']=noun_list\n",
+    "df\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 18,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "drop_index_list = [] # 지워버릴 index를 담는 리스트\n",
+    "for i, row in df.iterrows():\n",
+    "    temp_nouns = row['nouns']\n",
+    "    if len(temp_nouns) == 0: # 만약 명사리스트가 비어 있다면\n",
+    "        drop_index_list.append(i) # 지울 index 추가\n",
+    "        \n",
+    "df = df.drop(drop_index_list) # 해당 index를 지우기\n",
+    "\n",
+    "# index를 지우면 순회시 index 값이 중간중간 비기 때문에 index를 다시 지정\n",
+    "df.index = range(len(df))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 19,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from sklearn.feature_extraction.text import TfidfVectorizer\n",
+    "from sklearn.preprocessing import MinMaxScaler\n",
+    "\n",
+    "text = [\" \".join(noun) for noun in df['nouns']]\n",
+    "\n",
+    "tfidf_vectorizer = TfidfVectorizer(min_df = 5, ngram_range=(1,5))\n",
+    "tfidf_vectorizer.fit(text)\n",
+    "vector = tfidf_vectorizer.transform(text).toarray()\n",
+    "transformer = MinMaxScaler()\n",
+    "transformer.fit(vector) \n",
+    "vector = transformer.transform(vector)\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 20,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from sklearn.cluster import DBSCAN\n",
+    "import numpy as np\n",
+    "\n",
+    "vector = np.array(vector)\n",
+    "model = DBSCAN(eps=0.3,min_samples=6, metric = \"cosine\")\n",
+    "\n",
+    "result = model.fit_predict(vector)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 21,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "cluster num : 1\n",
+      "스케일이 확 커졌고 편에 이어 여전히 재미있는 명작\n",
+      "스케일이 확 커졌고 편에 이어 여전히 재미있는 명작\n",
+      "인생이담긴 병맛처럼 포장한 보는내내 벅찬 명작영화\n",
+      "잭스나이더만의 현실감 쩌는 슈퍼히어로 영화임에도 유치함도 없는 명작\n",
+      "역시 레전드 명작입니다 \n",
+      "말이 필요없는 명작안본사람이 부러움\n",
+      "\n",
+      "cluster num : 2\n",
+      "좋아요 가을에 어울리는 영화\n",
+      "유쾌하고 따뜻한 영화\n",
+      "좀처럼 영화로는 성공하기 어려운 스티븐 킹의 원작\n",
+      "폰으로 이런영화를 난 이렇게 재미있을줄 몰랐다\n",
+      "오랫만에 느긋히 볼수있는 영화였어요 같이 웃음짓고 미소지을수있는 그런영화\n",
+      "동남아  급영화 같다한국영화라고 하지마라  진심 부끄럽다 \n",
+      "한 소년의 성장 앨범을 영화에 담았네\n",
+      "너므 오랜만에 재밌는영화를본듯 \n",
+      "갱영화 맛집  마틴스콜세지네 식당\n",
+      "어떻게 이런 영화를 만들 수 있는지 어이가 없\n",
+      "더 킹은 영화가 아니다 다큐멘터리다\n",
+      "잘 만든 괜찮은 영화입니다\n",
+      "잘 만든 괜찮은 영화입니다\n",
+      "잘 만든 괜찮은 영화입니다\n",
+      "그럭저럭 괜찮은 영화입니다\n",
+      "뻔할 것 같지만 뻔하지 않은 영화\n",
+      "음향 좋은 곳에서 보면 좋은 영화\n",
+      "재미있는 영화 임 어린시절이 생각남\n",
+      "짬뽕을 시켰는데 먹다보니 짬뽕안에 카레라이스도 들어있고 물회도 들어있고 햄버거 피자도 있더라 그런맛의 영화 웩\n",
+      "더락이 맨날 하던거 하는 영화\n",
+      "재미있네요 ㅋㅋ 보면서 현웃 나오는 영화\n",
+      "뮤지컬 영화라서 좀 특이했고 재밌게 봤습니다\n",
+      "이런 영화도 있어야지 찐금\n",
+      "영화가 잔인한건 모르겠는데 좀 이상해요\n",
+      "육사오 영화 재밌게 잘 봤습니다\n",
+      "영화 재밌게 잘 봤습니다\n",
+      "와 뭐지 이 영화 ㅋㅋㅋ\n",
+      "드웨인존슨 못참지 오랜만에 재밌게본 영화\n",
+      "년전 영화를 보았네요 점 드립니다\n",
+      "이게 영화임ㅋㅋ\n",
+      "\n",
+      "cluster num : 3\n",
+      "재밌게 봤는데 평점이 낮아서 의아하네요\n",
+      "평점 높아서 보다 끔\n",
+      "평점도 몇개 없네 ㅠㅠ화이팅\n",
+      "불쌍한 꼬마가 자신의 운명을 수렁으로 이끄는 온갖 죄악으로 가득한 자신의 환경으로부터 벗어나는 고된여정을 그린 영화 살인마가 아니라 생존자가 합당한 명칭일듯 평점 \n",
+      "이 영화 평점 낮게 주는 성별이 너무 투명하게 보인다 잘 만들어진 영화가 분명하다\n",
+      "평점을 마이너스를 못줘서 안타까운 영화 \n",
+      "오 평점이 낮아 재미없을줄 알았는데 재밌게 봤습니다\n",
+      "\n",
+      "cluster num : 4\n",
+      "가볍고 즐겁게 재밌는데 액션은 또 멋짐\n",
+      "시원 시원한 액션에 빠른 스피드로 오랜만에 눈요기 한 영화였답니다\n",
+      "걍 액션만 보시면 됩니다\n",
+      "액션 좋아하시면 믿고 보실 수 있을거 같아요 액션이 찰지고 닥터 페이트가 멋있어요\n",
+      "액션은 화려하다 스토리가 너무 엉성함\n",
+      "돌비관에서 봐서 그런지 지루하지 않고 호쾌한 액션 끝날 때 까지 익사이팅 했네요\n",
+      "액션이 매우 훌륭했던 영화 기대안하고 갔지만 대만족하고 나왔습니다\n",
+      "고슬링의 액션이 신선했습니다 시원한 액션과 스케일에 만족\n",
+      "군인 차  액션이 이루는 마이클 베이식 불꽃놀이\n",
+      "흔하디 흔한 액션 히어로 영화지만 빠른 전개와 액션신이 대부분이라 지루하지는 않음\n",
+      "스토리도 액션도 너무 재밌게 봤어요\n",
+      "액션감짱 좋네요\n",
+      "화려한 액션 그리고 지루함 대 영화용인것 같음샤잠 보다는 더 낳은것 같음 \n",
+      "\n",
+      "cluster num : 5\n",
+      "편 낼 생각 꿈에도 하지마라\n",
+      "김성수 감독의 아수라 기대합니다\n",
+      "이 감독은 절대 성공할수 없는 감독때리치아라 영화를 이따구로 만드노\n",
+      "생각없이 봤는데 생각보다 잼있음\n",
+      "감독의 색깔이 뚜렷한 영화라 생각\n",
+      "김홍선 감독 시도는 좋았으나너무나도 어설펐습니다\n",
+      "시기상조라고 생각합니다\n",
+      "감독 제작자   마약검사 해봐야함   \n",
+      "어디서부터 잘못된걸까 감독의 메세지가 무엇이었을까 내가 느낀 교훈은 일본놈들 나쁜놈들\n",
+      "생각보다 재밌게 봤음 점프스케어가 좀 있어서 깝놀하는거 싫어하는 분은 거르시는게 좋을듯 웃음이 무섭게 느껴지게 만들어주는 영화\n",
+      "요새 잡생각이 많아서 아무생각안하려 봤다가마지막에 터졌습니다감사합니다열심히 살아가겠습니다\n",
+      "그럴거라고 생각도 못했네너무 슬픔ㅠㅠ\n",
+      "생각보다 재밌었어요\n",
+      "\n",
+      "cluster num : 6\n",
+      "와 진짜 짱무서워요 보는내내 남자친구만 붙잡고 있었음 \n",
+      "내돈 내돈 너무 아까움 별점도 아깝다 진짜\n",
+      "와 진짜 개재미없음 \n",
+      "피처럼 보이는 액체를 톤을 썼다더니 어우 진짜 첨부터 끝까지 피로 대환장파티 \n",
+      "진짜 재밌음\n",
+      "영화 진짜 좋다 만들어줘서 감사해요\n",
+      "진짜 미친 도른자 ㅠ 너무 재밌어요 진짜 최근 이런 영화 잘 없는데 진짜 재밌음 다시 보러 갈거야 엉엉 ㅍ \n",
+      " 진짜 소매가 다 젖을만큼 운듯 최고다\n",
+      "\n",
+      "cluster num : 7\n",
+      "은근 잼남 연기 좋쿠요\n",
+      "김유정 연기 좋네 스토리도 굿굿\n",
+      "잼있게 잘 봤습니다연기가 전체적으로 다 좋기가 쉽지가 않은데 그걸 해냈습니다\n",
+      "왠지 스토리가 부드럽지 않았고 소품이나 연기가 좀 어색\n",
+      "너무 재밌음 연기도 비주얼도\n",
+      "강동원은 볼때마다 연기를 잘하는지 못하는지 잘 모르겠다 \n",
+      "임시완 연기만 건질만하고 나머진 영 구리다\n",
+      "스토리가 아쉽지만 연기는 잘하네여\n",
+      "경쾌한 연기와 음악 속에 눌러 담은 지울 수 없는 삶의 무게와 페이소스\n",
+      "\n",
+      "cluster num : 8\n",
+      "내 인생 영화 진짜 가볍게 힐링하면서 보기도 좋고 집중해서 감상하기도 좋음 \n",
+      "기대를 뛰어넘은 인생영화\n",
+      "매트릭스에 이은 인생영화임에 틀림없다\n",
+      "이거 보고 울었습니다ㅠㅠㅠ  제 인생영화에요\n",
+      "영화관에서 두번 본영화  인생영화입니다\n",
+      "사춘기는 무섭다 그리고 엄마는 더 무섭다 영화 보면서 행복하고 감동 받아서 눈물이 주륵주륵 났지만 지인들에게 인생 영화라고 말해주기가 좀 그렇다 \n",
+      "\n",
+      "cluster num : 9\n",
+      "정말 시간가는 줄 모르고 봤다 봉준호는 정말 보물이다\n",
+      "부모님 모시고 갔는데 정말 웃고 울고 너무너무 좋아하셔서 뿌듯했습니다 \n",
+      "김만철역활은 정말 실패작이며 정말 아쉬워요 확실하게 한방크게 터트릴수있는 역활인데 아쉽네요 ㅜㅜ\n",
+      "정말 보면 안다 니들이 봐봐\n",
+      "정말 점을 줘도 좋을만큼 잘 찍었네요 \n",
+      "조카들과 봤는데 너무 재미있게 보더라구요 정말 보여준 보람 느꼈습니다 ㅋㅋㅋ\n",
+      "너무 재미있었어요  이런 흥미로운 영화는 정말 오랜만에 보는거같아요\n",
+      "정말 좋은 영화에요 꼭 보시길\n",
+      "\n",
+      "cluster num : 10\n",
+      "그냥 보는게 답이다  \n",
+      "그냥 폭력을 보여주기만 헐\n",
+      "그냥그래요\n",
+      "그냥그래요\n",
+      "한줄평 남주 그냥 무능\n",
+      "그냥그랬음 특별하게 재밌지도 엄청 재미없지도 않은 무난한\n",
+      "같이 살고 싶지만 말이 안듣는 육체는 고달프다 그냥 같이 살고싶다\n",
+      "그냥 쏘고 찌르고 죽이고 끝 \n",
+      "뭐 그냥 딱 만화네요 무난해요\n",
+      "그냥 뻔함 엔딩크레딧 두개\n",
+      "\n",
+      "cluster num : 11\n",
+      "공공의적이 다시 돌아왔다\n",
+      "톰그루즈가 탑건에 나온것 처럼 아저씨에서 원빈을 다시 봤으면 합니다 제발 브라운관으로 다시 컴백해주길\n",
+      "도 다시 일어설 수 있다\n",
+      "너무나 휘몰아쳐서 다시봐야겠다\n",
+      "오랜만에 다시보니 반갑네요 \n",
+      "잘보고갑니다다시봐야겠네요\n",
+      "걱정이다 또 다시 걱정된다\n",
+      "\n",
+      "cluster num : 12\n",
+      "토르보다 볼만해요 그리고 앞으로 의 큰 그림 배경 역활을 잘 했어요\n",
+      "볼만해유 피많이나오는거 빼면\n",
+      "재밌고 볼만해요\n",
+      "재밌고 볼만해요\n",
+      "재밌고 볼만해요\n",
+      "재밌고 볼만해요\n",
+      "재밌고 볼만해요\n",
+      "재밌고 볼만해요\n",
+      "재밌고 볼만해요\n",
+      "재밌고 볼만해요\n",
+      "유치한데 재밌듬 볼만해요 \n",
+      "재밌고 볼만해요\n",
+      "재밌고 볼만해요\n",
+      "재밌고 볼만해요\n",
+      "재밌고 볼만해요\n",
+      "재밌고 볼만해요\n",
+      "\n",
+      "cluster num : 13\n",
+      "너무 감동적임 담보도 아저씨노 너무너무근사하고 멋져요\n",
+      "잘봤어요 담보같은 담보같지않은 감동적 스토리네요 \n",
+      "재미있습니다 뒤에 갈수록 감동도 있구요\n",
+      "오랜만에 느껴보는 감동\n",
+      "영화로만 체험할수있는 감동이란 이런것이 아닐까 다채로운 영상미와 스토리 풍부한 상상력이 뭉클한 감동을 만들어낸다 \n",
+      "억지스러운 감동스토리 \n",
+      "\n",
+      "cluster num : 14\n",
+      "재밌읍니다재밌읍니다\n",
+      "재밌읍니다재밌읍니다\n",
+      "재밌읍니다재밌읍니다\n",
+      "재밌읍니다재밌읍니다\n",
+      "재밌읍니다재밌읍니다\n",
+      "재밌읍니다재밌읍니다\n",
+      "재밌읍니다재밌읍니다\n",
+      "재밌읍니다재밌읍니다\n",
+      "재밌읍니다재밌읍니다\n",
+      "재밌읍니다재밌읍니다\n",
+      "재밌읍니다재밌읍니다\n",
+      "재밌읍니다재밌읍니다\n",
+      "\n"
+     ]
+    }
+   ],
+   "source": [
+    "df['result']=result\n",
+    "for cluster_num in set(result):\n",
+    "    \n",
+    "    if(cluster_num == -1 or cluster_num == 0): \n",
+    "        continue\n",
+    "    else:\n",
+    "        print(\"cluster num : {}\".format(cluster_num))\n",
+    "        temp_df = df[df['result'] == cluster_num]\n",
+    "        for review in temp_df['sentence']:\n",
+    "            print(review) \n",
+    "        print()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 22,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/html": [
+       "<div>\n",
+       "<style scoped>\n",
+       "    .dataframe tbody tr th:only-of-type {\n",
+       "        vertical-align: middle;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe tbody tr th {\n",
+       "        vertical-align: top;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe thead th {\n",
+       "        text-align: right;\n",
+       "    }\n",
+       "</style>\n",
+       "<table border=\"1\" class=\"dataframe\">\n",
+       "  <thead>\n",
+       "    <tr style=\"text-align: right;\">\n",
+       "      <th></th>\n",
+       "      <th>movie</th>\n",
+       "      <th>sentence</th>\n",
+       "      <th>score</th>\n",
+       "      <th>nouns</th>\n",
+       "      <th>result</th>\n",
+       "    </tr>\n",
+       "  </thead>\n",
+       "  <tbody>\n",
+       "    <tr>\n",
+       "      <th>0</th>\n",
+       "      <td>20세기 소녀</td>\n",
+       "      <td>사골도 이런 사골이없다</td>\n",
+       "      <td>2</td>\n",
+       "      <td>[사골, 사골]</td>\n",
+       "      <td>-1</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>1</th>\n",
+       "      <td>늑대사냥</td>\n",
+       "      <td>별점도 아깝네요 저 좋은 배우들로 이딴걸만들다니</td>\n",
+       "      <td>1</td>\n",
+       "      <td>[점도, 저, 배우, 걸]</td>\n",
+       "      <td>0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>2</th>\n",
+       "      <td>늑대사냥</td>\n",
+       "      <td>설마 시즌 나오는건 아니겠지</td>\n",
+       "      <td>5</td>\n",
+       "      <td>[설마, 시즌]</td>\n",
+       "      <td>-1</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>3</th>\n",
+       "      <td>캐리비안의 해적 - 세상의 끝에서</td>\n",
+       "      <td>편 중에 평가가 제일 낮지만 난 개인적으로 가장 재미있게 본 편 중간중간 장면들을 ...</td>\n",
+       "      <td>10</td>\n",
+       "      <td>[편, 중, 평가, 제일, 낮, 난, 개인, 가장, 편, 중간, 중간, 장면, 이,...</td>\n",
+       "      <td>-1</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>4</th>\n",
+       "      <td>달콤한 인생</td>\n",
+       "      <td>범죄 조직의 보스 강 사장의 연인 희수를 감시하는 임무를 맡은 선우가 한순간의 선택...</td>\n",
+       "      <td>9</td>\n",
+       "      <td>[범죄, 조직, 보스, 강, 사장, 연인, 희수, 감시, 임무, 선우, 한순간, 선...</td>\n",
+       "      <td>-1</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>...</th>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>924</th>\n",
+       "      <td>십계</td>\n",
+       "      <td>고대 이집트의 영광과 이스라엘의 신앙이 미국의 기술력과 결합하도다바다여갈라져라</td>\n",
+       "      <td>10</td>\n",
+       "      <td>[고대, 이집트, 영광, 이스라엘, 신앙, 미국, 기술, 결합, 바다]</td>\n",
+       "      <td>-1</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>925</th>\n",
+       "      <td>에브리씽 에브리웨어 올 앳 원스</td>\n",
+       "      <td>정신없고 다채로운데 그 와중에 재미와 감동이 있다 전체적인 메시지는 심플하지만 그것...</td>\n",
+       "      <td>10</td>\n",
+       "      <td>[정신, 채, 데, 그, 와중, 재미, 감동, 전체, 메시지, 심플, 그것, 방식,...</td>\n",
+       "      <td>-1</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>926</th>\n",
+       "      <td>블랙 아담</td>\n",
+       "      <td>기대 전혀 안했는데 생각보다는 꽤 괜찮은 영화</td>\n",
+       "      <td>6</td>\n",
+       "      <td>[기대, 전혀, 생각, 꽤, 영화]</td>\n",
+       "      <td>-1</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>927</th>\n",
+       "      <td>장산범</td>\n",
+       "      <td>그냥 주인공 여자 답답해 죽음 진짜 똑같은 방법으로 몇 번을 속는지 모르겠고 감독도...</td>\n",
+       "      <td>1</td>\n",
+       "      <td>[그냥, 주인공, 여자, 죽음, 진짜, 방법, 몇, 번, 속, 감독, 그냥, 방법,...</td>\n",
+       "      <td>-1</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>928</th>\n",
+       "      <td>블랙 스완</td>\n",
+       "      <td>새는 알에서 나오려고 투쟁한다 알은 세계이다 태어나려는 자는 하나의 세계를 깨뜨려야...</td>\n",
+       "      <td>10</td>\n",
+       "      <td>[알, 투쟁, 알, 세계, 하나, 세계, 데미안]</td>\n",
+       "      <td>-1</td>\n",
+       "    </tr>\n",
+       "  </tbody>\n",
+       "</table>\n",
+       "<p>929 rows × 5 columns</p>\n",
+       "</div>"
+      ],
+      "text/plain": [
+       "                  movie                                           sentence  \\\n",
+       "0               20세기 소녀                                       사골도 이런 사골이없다   \n",
+       "1                  늑대사냥                         별점도 아깝네요 저 좋은 배우들로 이딴걸만들다니   \n",
+       "2                  늑대사냥                                    설마 시즌 나오는건 아니겠지   \n",
+       "3    캐리비안의 해적 - 세상의 끝에서  편 중에 평가가 제일 낮지만 난 개인적으로 가장 재미있게 본 편 중간중간 장면들을 ...   \n",
+       "4                달콤한 인생  범죄 조직의 보스 강 사장의 연인 희수를 감시하는 임무를 맡은 선우가 한순간의 선택...   \n",
+       "..                  ...                                                ...   \n",
+       "924                  십계        고대 이집트의 영광과 이스라엘의 신앙이 미국의 기술력과 결합하도다바다여갈라져라   \n",
+       "925   에브리씽 에브리웨어 올 앳 원스  정신없고 다채로운데 그 와중에 재미와 감동이 있다 전체적인 메시지는 심플하지만 그것...   \n",
+       "926               블랙 아담                          기대 전혀 안했는데 생각보다는 꽤 괜찮은 영화   \n",
+       "927                 장산범  그냥 주인공 여자 답답해 죽음 진짜 똑같은 방법으로 몇 번을 속는지 모르겠고 감독도...   \n",
+       "928               블랙 스완  새는 알에서 나오려고 투쟁한다 알은 세계이다 태어나려는 자는 하나의 세계를 깨뜨려야...   \n",
+       "\n",
+       "     score                                              nouns  result  \n",
+       "0        2                                           [사골, 사골]      -1  \n",
+       "1        1                                     [점도, 저, 배우, 걸]       0  \n",
+       "2        5                                           [설마, 시즌]      -1  \n",
+       "3       10  [편, 중, 평가, 제일, 낮, 난, 개인, 가장, 편, 중간, 중간, 장면, 이,...      -1  \n",
+       "4        9  [범죄, 조직, 보스, 강, 사장, 연인, 희수, 감시, 임무, 선우, 한순간, 선...      -1  \n",
+       "..     ...                                                ...     ...  \n",
+       "924     10            [고대, 이집트, 영광, 이스라엘, 신앙, 미국, 기술, 결합, 바다]      -1  \n",
+       "925     10  [정신, 채, 데, 그, 와중, 재미, 감동, 전체, 메시지, 심플, 그것, 방식,...      -1  \n",
+       "926      6                                [기대, 전혀, 생각, 꽤, 영화]      -1  \n",
+       "927      1  [그냥, 주인공, 여자, 죽음, 진짜, 방법, 몇, 번, 속, 감독, 그냥, 방법,...      -1  \n",
+       "928     10                        [알, 투쟁, 알, 세계, 하나, 세계, 데미안]      -1  \n",
+       "\n",
+       "[929 rows x 5 columns]"
+      ]
+     },
+     "execution_count": 22,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "df"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 23,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "코사인 유사도 연산 결과 : (929, 929)\n"
+     ]
+    }
+   ],
+   "source": [
+    "from sklearn.metrics.pairwise import cosine_similarity\n",
+    "\n",
+    "\n",
+    "cosine_sim = cosine_similarity(vector, vector)\n",
+    "print('코사인 유사도 연산 결과 :',cosine_sim.shape)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 24,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "208\n"
+     ]
+    }
+   ],
+   "source": [
+    "title_to_index = dict(zip(df['sentence'], df.index))\n",
+    "\n",
+    "idx = title_to_index['재밌고 감동적인 영화였다']\n",
+    "print(idx)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 25,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def get_recommendations(title, cosine_sim=cosine_sim):\n",
+    "  \n",
+    "    idx = title_to_index[title]\n",
+    "    \n",
+    "    \n",
+    "    sim_scores = list(enumerate(cosine_sim[idx]))\n",
+    "\n",
+    "    \n",
+    "    sim_scores = sorted(sim_scores, key=lambda x: x[1], reverse=True)\n",
+    "    \n",
+    "    \n",
+    "    sim_scores = sim_scores[1:11]\n",
+    "\n",
+    "    \n",
+    "    movie_indices = [idx[0] for idx in sim_scores]\n",
+    "\n",
+    "    \n",
+    "    a= df['sentence'].iloc[movie_indices]\n",
+    "    return df['sentence'].iloc[movie_indices]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 26,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "784                                    마블킹이 질리니깐날드도 그래지네\n",
+       "405                                         마블영화랑 비교가 안됨\n",
+       "312                                 를 보는데 마블을 보고있는 느낌이랄까\n",
+       "74     팝콘무비로 이만한게 없다 마블 전성기보단 빈약하지만 최근 마블보다는 괜찮다 돌비도 ...\n",
+       "356    나름 재밋게 봣음 처음에 나는 이거 마블인줄 알고 갔다가 앞에 나오길래 오시바 이랬...\n",
+       "393                                            마블 전설의 시작\n",
+       "77                                             요즘마블보다훨낫다\n",
+       "180                                    마블 졌다 흥행해라 너무 재밌다\n",
+       "463                                    마블팬이지만 이번껀 인정 잘만듬\n",
+       "203                        가 마블보다 나은점 중 하나는 생각없이 즐기기좋다는갓\n",
+       "Name: sentence, dtype: object"
+      ]
+     },
+     "execution_count": 26,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "get_recommendations('마블킹이 질리니깐날드도 그래지네') # 리뷰를 기반으로한 content based recommendation 추천방식"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 41,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def get_recommend(title):\n",
+    "    idx = title_to_index[title]\n",
+    "    num = df.iloc[idx].result\n",
+    "    recommand_doc = df[df['result']==num]\n",
+    "    return recommand_doc.sentence"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 42,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "9               스케일이 확 커졌고 편에 이어 여전히 재미있는 명작\n",
+       "19              스케일이 확 커졌고 편에 이어 여전히 재미있는 명작\n",
+       "75               인생이담긴 병맛처럼 포장한 보는내내 벅찬 명작영화\n",
+       "445    잭스나이더만의 현실감 쩌는 슈퍼히어로 영화임에도 유치함도 없는 명작\n",
+       "447                            역시 레전드 명작입니다 \n",
+       "696                      말이 필요없는 명작안본사람이 부러움\n",
+       "Name: sentence, dtype: object"
+      ]
+     },
+     "execution_count": 42,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "get_recommend('스케일이 확 커졌고 편에 이어 여전히 재미있는 명작') # 리뷰를 기반으로한 DBSCAN 알고리즘의 같은 클러스터 내의 리뷰 제공\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.8.5"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}