【Text Mining 실습】 – 호텔 리뷰 데이터: 감성 분류 & 긍정/부정 키워드 분석
- 0. 개요
- 1. Library & Data Import
- 2. 데이터셋 살펴보기
- 3. 한국어 텍스트 데이터 전처리
- 4. 감성 분류 – Logistic Regression
- 5. 긍정 / 부정 키워드 분석
0. 개요
제주 호텔의 리뷰 데이터(평가 점수 + 평가 내용)을 활용해 다음 2가지 분석을 진행합니다:
-
리뷰속에 담긴 사람의 긍정 / 부정 감성을 파악하여 분류할 수 있는 감성 분류 예측 모델을 만든다
-
만든 모델을 활용해 긍정 / 부정 키워드를 출력해, 이용객들이 느낀 제주 호텔의 장,단점을 파악한다
1. Library & Data Import
>> 사용할 Library
1 | %matplotlib inline |
>> 사용할 데이터셋
Tripadvisor 여행사이트에서 "제주 호텔"로 검색해서 나온 리뷰들을 활용합니다. (평점 & 평가 내용 포함)
1 | df = pd.read_csv("https://raw.githubusercontent.com/yoonkt200/FastCampusDataset/master/tripadviser_review.csv") |
1 | df.head() |
| rating | text | |
|---|---|---|
| 0 | 4 | 여행에 집중할수 있게 편안한 휴식을 제공하는 호텔이었습니다. 위치선정 또한 적당한 ... |
| 1 | 4 | 2일 이상 연박시 침대, 이불, 베게등 침구류 교체 및 어메니티 보강이 필요해 보입... |
| 2 | 4 | 지인에소개로온 호텔 깨끗하고 좋은거같아요 처음에는 없는게 많아 많이 당황했는데 ... |
| 3 | 5 | 방에 딱 들어서자마자 눈이 휘둥그레질정도로 이렇게 넓은 호텔 처음 와본 것 같아요!... |
| 4 | 5 | 저녁에 맥주한잔 하는게 좋아서 렌트 안하고 뚜벅이 하기로 했는데 호텔 바로 앞에 버... |
>> Feature Description
-
rating: 이용자 리뷰의 평가 점수 (1~5)
-
text: 이용자 리뷰 평가 내용
2. 데이터셋 살펴보기
1 | # dimension |
(1001, 2)
1 | # 결측치 |
rating 0
text 0
dtype: int64
1 | # information |
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1001 entries, 0 to 1000
Data columns (total 2 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 rating 1001 non-null int64
1 text 1001 non-null object
dtypes: int64(1), object(1)
memory usage: 15.8+ KB
1 | # text 변수 확인 |
'여행에 집중할수 있게 편안한 휴식을 제공하는 호텔이었습니다. 위치선정 또한 적당한 편이었고 청소나 청결상태도 좋았습니다.'
1 | df['text'][100] |
'올 봄에 벚꽃기간에 방문, 협재를 바라보는 바다뷰가 좋고 대로변이라 렌트해서 가기도 좋음. 조식은 이용안했는데 근처 옹포밥집까지 아침 산책겸 걸어가서 하고옴. 루프탑 수영장과 바가 있었는데 내가 갔을때는 밤에 비바람이 너무 불어서 이용못하고옴 ㅠㅠ 단점으로는 모 유명 여행블로거 리뷰처럼 화장실 물떄가... 그거빼곤 다 만족'
“text” 내용을 확인해보면, 소량의 "특수 문자"와 "모음"이 존재하는 경우가 있습니다. 이들은 Text Mining을 적용할 의미가 없기 때문에 정규표현식을 이용해서 제거해보도록 할게요.
3. 한국어 텍스트 데이터 전처리
기계가 텍스트 형식으로 되어 있는 리뷰 데이터를 이해하려면, 텍스트 데이터를 단어 단위로 분리하는 전처리 괴정이 필요합니다. 여기서 분리된 단어들은 Bag of Words로 Count 기반으로 나타날 수도 있고, TF-IDF를 통해서 점수로 나타날 수도 있습니다.
먼저 리뷰의 평가 내용을 단어화해서 형태소를 추출하고, 그 다음 Bag of Words를 생성하여 TF-IDF 변환을 진행하겠습니다.
3-0. konlpy 설치
영문이 아닌 한글을 처리해야 하기 때문에 "konlpy"이라는 library를 사용합니다.
참고 자료:
1 | !pip install konlpy==0.5.2 jpype1 Jpype1-py3 |
Requirement already satisfied: konlpy==0.5.2 in d:\anaconda\lib\site-packages (0.5.2)
Requirement already satisfied: jpype1 in d:\anaconda\lib\site-packages (1.0.2)
Requirement already satisfied: Jpype1-py3 in d:\anaconda\lib\site-packages (0.5.5.4)
Requirement already satisfied: tweepy>=3.7.0 in d:\anaconda\lib\site-packages (from konlpy==0.5.2) (3.9.0)
Requirement already satisfied: lxml>=4.1.0 in d:\anaconda\lib\site-packages (from konlpy==0.5.2) (4.5.0)
Requirement already satisfied: colorama in d:\anaconda\lib\site-packages (from konlpy==0.5.2) (0.4.3)
Requirement already satisfied: numpy>=1.6 in d:\anaconda\lib\site-packages (from konlpy==0.5.2) (1.18.1)
Requirement already satisfied: beautifulsoup4==4.6.0 in d:\anaconda\lib\site-packages (from konlpy==0.5.2) (4.6.0)
Requirement already satisfied: typing-extensions; python_version < "3.8" in d:\anaconda\lib\site-packages (from jpype1) (3.7.4.1)
Requirement already satisfied: requests[socks]>=2.11.1 in d:\anaconda\lib\site-packages (from tweepy>=3.7.0->konlpy==0.5.2) (2.23.0)
Requirement already satisfied: requests-oauthlib>=0.7.0 in d:\anaconda\lib\site-packages (from tweepy>=3.7.0->konlpy==0.5.2) (1.3.0)
Requirement already satisfied: six>=1.10.0 in d:\anaconda\lib\site-packages (from tweepy>=3.7.0->konlpy==0.5.2) (1.14.0)
Requirement already satisfied: chardet<4,>=3.0.2 in d:\anaconda\lib\site-packages (from requests[socks]>=2.11.1->tweepy>=3.7.0->konlpy==0.5.2) (3.0.4)
Requirement already satisfied: certifi>=2017.4.17 in d:\anaconda\lib\site-packages (from requests[socks]>=2.11.1->tweepy>=3.7.0->konlpy==0.5.2) (2020.6.20)
Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in d:\anaconda\lib\site-packages (from requests[socks]>=2.11.1->tweepy>=3.7.0->konlpy==0.5.2) (1.25.8)
Requirement already satisfied: idna<3,>=2.5 in d:\anaconda\lib\site-packages (from requests[socks]>=2.11.1->tweepy>=3.7.0->konlpy==0.5.2) (2.9)
Requirement already satisfied: PySocks!=1.5.7,>=1.5.6; extra == "socks" in d:\anaconda\lib\site-packages (from requests[socks]>=2.11.1->tweepy>=3.7.0->konlpy==0.5.2) (1.7.1)
Requirement already satisfied: oauthlib>=3.0.0 in d:\anaconda\lib\site-packages (from requests-oauthlib>=0.7.0->tweepy>=3.7.0->konlpy==0.5.2) (3.1.0)
3-1. 정규 표현식 적용
1 | # 정규 표현식 함수 정의 |
만들어 놓은 정규 표현식을 "text"의 첫 행에 적용해서 결과 한번 확인해볼게요.
1 | df['text'][0] |
'여행에 집중할수 있게 편안한 휴식을 제공하는 호텔이었습니다. 위치선정 또한 적당한 편이었고 청소나 청결상태도 좋았습니다.'
1 | apply_regular_expression(df['text'][0]) |
'여행에 집중할수 있게 편안한 휴식을 제공하는 호텔이었습니다 위치선정 또한 적당한 편이었고 청소나 청결상태도 좋았습니다'
정규 표현식을 적용한 후 특수 문자가 잘 제거된 것을 확인할 수 있습니다.
3-2. 한국어 형태소 분석 - 명사 단위
>> 명사 형태소 추출
참고 자료: konlpy.tag 패키지 Documentation
1 | from konlpy.tag import Okt |
명사 형태소 추출 함수 Okt() 를 이용하여 정규표현식을 적용한 “text” 첫 행 내용의 형태소를 추출해 보겠습니다.
1 | apply_regular_expression(df['text'][0]) |
'여행에 집중할수 있게 편안한 휴식을 제공하는 호텔이었습니다 위치선정 또한 적당한 편이었고 청소나 청결상태도 좋았습니다'
1 | okt = Okt() # 명사 형태소 추출 함수 |
['여행', '집중', '휴식', '제공', '호텔', '위치', '선정', '또한', '청소', '청결', '상태']
이제 이를 전체 말뭉치(corpus)에 적용해서 명사 형태소를 추출해볼게요.
1 | # 말뭉치 생성 |
[P.S. 브라우저 메모리 부족으로 부분만 출력]
1 | # 정규 표현식 적용 |
[P.S. 브라우저 메모리 부족으로 부분만 출력]
1 | # 전체 말뭉치(corpus)에서 명사 형태소 추출 |
[P.S. 브라우저 메모리 부족으로 부분만 출력]
1 | # 빈도 탐색 |
1 | counter.most_common(10) |
[('호텔', 803),
('수', 498),
('것', 436),
('방', 330),
('위치', 328),
('우리', 327),
('곳', 320),
('공항', 307),
('직원', 267),
('매우', 264)]
>> 한글자 명사 제거
위 결과에서 보이듯이, 두 글자 키워드가 대부분 의미 있는 단어지만, ‘수’, ‘것’, '곳’과 같은 한 글자 키워드는 분석에 딱히 좋은 영향을 미치지 않은 것으로 보입니다. 그래서 우리는 한글자 명사를 제거해보도록 하겠습니다.
1 | available_counter = Counter({x: counter[x] for x in counter if len(x) > 1}) |
[('호텔', 803),
('위치', 328),
('우리', 327),
('공항', 307),
('직원', 267),
('매우', 264),
('가격', 245),
('객실', 244),
('시설', 215),
('제주', 192)]
이제 한글자 키워드 모두 제거됐습니다. 하지만 “우리”, “매우” 와 같은 실질적인 의미가 없고 꾸민 역할을 하는 불용어들 아직 존재합니다. 한국어 불용어 사전을 정의하여 불용어도 제거해줄게요.
3-3. 불용어 사전
RANKS NL에 제공해주는 한국어 불용어 사전을 활용하겠습니다.
1 | stopwords = pd.read_csv("https://raw.githubusercontent.com/yoonkt200/FastCampusDataset/master/korean_stopwords.txt").values.tolist() |
[['휴'],
['아이구'],
['아이쿠'],
['아이고'],
['어'],
['나'],
['우리'],
['저희'],
['따라'],
['의해']]
이 외에도 우리가 분석하고자 하는 데이터셋에 특화된 불용어들이 있습니다. 예를 들면: “제주”, “호텔”, “숙소” 등. 이런 단어들도 불용어 사전에 추가해보도록 할게요.
1 | jeju_hotel_stopwords = ['제주', '제주도', '호텔', '리뷰', '숙소', '여행', '트립'] |
3-4. Word Count
>> BoW 벡터 생성
1 | from sklearn.feature_extraction.text import CountVectorizer |
1 | # 단어 리스트 |
['가가',
'가게',
'가격',
'가격표',
'가구',
'가급',
'가기',
'가까이',
'가끔',
'가능',
'가도',
'가동',
'가두',
'가득',
'가든',
'가라',
'가량',
'가려움',
'가로',
'가면',
'가몬',
'가무',
'가물',
'가미',
'가방',
'가버',
'가성',
'가세',
'가스레인지',
'가스렌지',
'가슴',
'가시',
'가신',
'가야',
'가옥',
'가요',
'가용',
'가운데',
'가을',
'가인',
'가장',
'가정',
'가정식',
'가족',
'가지',
'가짓수',
'가차',
'가치',
'가품',
'각각',
'각오',
'각자',
'각종',
'각층',
'간격',
'간곳',
'간다',
'간단',
'간만',
'간식',
'간이',
'간주',
'간직',
'간판',
'간혹',
'갈껄',
'갈비',
'갈비탕',
'갈수',
'갈수록',
'감각',
'감동',
'감명',
'감사',
'감상',
'감소',
'감안',
'감자',
'감히',
'갑인',
'갑자기',
'갑작스레',
'강남',
'강력',
'강아지',
'강압',
'강제',
'강조',
'강추',
'개념',
'개략',
'개미',
'개발',
'개방',
'개별',
'개보',
'개뿔',
'개선',
'개수대',
'개월',
'개인',
'개인실',
'개인정보',
'개조',
'개층',
'객수',
'객실',
'갤러리',
'갱스터',
'거기',
'거나',
'거두',
'거론',
'거르세',
'거름',
'거리',
'거린데',
'거림',
'거문도',
'거미',
'거부',
'거실',
'거여',
'거울',
'거위',
'거의',
'거절',
'거주',
'거지',
'거참',
'거품',
'걱정',
'건가',
'건강',
'건너',
'건너편',
'건물',
'건의',
'건조',
'건조기',
'건조대',
'건축',
'걷기',
'걸음',
'걸이',
'걸즈',
'검사',
'검색',
'검정색',
'검토',
'것임',
'겉보기',
'게다가',
'게스트',
'게스트하우스',
'게임',
'게재',
'겐찮은듯',
'겔상',
'겨우',
'겨울',
'겨울철',
'격인',
'격하',
'결과',
'결론',
'결석',
'결재',
'결정',
'결제',
'결코',
'결함',
'결항',
'결혼',
'결혼식',
'겸비',
'겸용',
'겹겹',
'경고',
'경관',
'경내',
'경로',
'경매',
'경영',
'경영학',
'경우',
'경쟁',
'경쟁력',
'경찰',
'경치',
'경험',
'계단',
'계란',
'계란후라이',
'계산',
'계속',
'계정',
'계획',
'고가',
'고간',
'고객',
'고급',
'고기',
'고기국수',
'고깃배',
'고내포구',
'고려',
'고루',
'고무줄',
'고문',
'고민',
'고봉',
'고분',
'고생',
'고속',
'고속도로',
'고아',
'고양이',
'고여',
'고오',
'고요',
'고유',
'고작',
'고장',
'고정',
'고층',
'고통',
'고트',
'고함',
'고해',
'곡부',
'곧바로',
'곧장',
'골드스타',
'골목',
'골목길',
'골퍼',
'골프',
'골프장',
'골프텔',
'곰팡이',
'곱슬',
'곳곳',
'곳곳이',
'곳도',
'곳임',
'공간',
'공감',
'공개',
'공공',
'공공장소',
'공급',
'공기',
'공덕',
'공률',
'공물',
'공사',
'공시',
'공실이',
'공연',
'공연장',
'공영',
'공용',
'공원',
'공유',
'공짜',
'공차',
'공터',
'공포',
'공항',
'과거',
'과물',
'과언',
'과일',
'과장',
'관경',
'관계',
'관계자',
'관광',
'관광객',
'관광명소',
'관광지',
'관덕정',
'관련',
'관리',
'관리인',
'관리자',
'관리직',
'관음사',
'관해',
'광경',
'광고',
'광천수',
'괴체',
'교대',
'교수',
'교외',
'교욱받',
'교육',
'교체',
'교통',
'교환',
'교회',
'구가',
'구경',
'구경만',
'구관',
'구글',
'구나',
'구내',
'구덩이',
'구도',
'구두',
'구둣주걱',
'구들장',
'구류',
'구만',
'구매',
'구멍',
'구별',
'구분',
'구비',
'구사',
'구색',
'구석',
'구석구석',
'구성',
'구식',
'구암',
'구역',
'구역질',
'구이',
'구입',
'구조',
'구축',
'국가',
'국내',
'국도',
'국립',
'국수',
'국적',
'국제',
'국제공항',
'군더더기',
'군데',
'군데군데',
'굳럭',
'굳이',
'굿굿',
'굿굿굿',
'굿앤굿',
'굿임',
'권내',
'권장',
'권한',
'귀중',
'규모',
'규율',
'규칙',
'균형',
'그거',
'그것',
'그게',
'그냥',
'그네',
'그녀',
'그다음',
'그다지',
'그닥',
'그대로',
'그동안',
'그때',
'그랜드',
'그레이스',
'그로',
'그룹',
'그릇',
'그린',
'그림',
'극복',
'극악',
'근래',
'근무',
'근본',
'근육통',
'근처',
'근해',
'글래드',
'글쎄',
'금고',
'금늘',
'금능',
'금릉',
'금방',
'금속',
'금액',
'금연',
'금요일',
'금은',
'금지',
'금토일',
'급상승',
'급속',
'기간',
'기계',
'기구',
'기기',
'기념일',
'기능',
'기대',
'기도',
'기류',
'기리',
'기반',
'기본',
'기부',
'기분',
'기사',
'기상',
'기소',
'기숙사',
'기술',
'기술자',
'기억',
'기업',
'기여',
'기용',
'기우',
'기입',
'기적',
'기전',
'기점',
'기존',
'기준',
'기지',
'기타',
'기프트샵',
'기호',
'기회',
'기후',
'긴장',
'길가',
'길림',
'길목',
'길이',
'김녕',
'김녕해변',
'김밥',
'김씨',
'김치',
'김포공항',
'까페',
'깜빡',
'깜짝',
'깨끗',
'깨끗깔끔',
'께빵',
'꼭대기',
'꽃꺽으러',
'꽃사슴',
'꾸러미',
'꾸밈',
'꿀잠',
'끝내기',
'끼리',
'나기',
'나누기',
'나니',
'나라',
'나름',
'나머지',
'나머진',
'나무',
'나물',
'나보',
'나오니',
'나우',
'나은',
'나이',
'나이트',
'나이프',
'나중',
'나탈리',
'낙후',
'낚시',
'난로',
'난리',
'난방',
'난입',
'난타',
'날수',
'날씨',
'날짜',
'남녀',
'남성',
'남아',
'남자',
'남자친구',
'남짓',
'남쪽',
'남편',
'낭만',
'내겐',
'내내',
'내년',
'내부',
'내부시',
'내시',
'내야',
'내외',
'내용',
'내의',
'내인',
'내일',
'냄비',
'냄새',
'냉동',
'냉장고',
'너븐팡',
'넓이',
'네스프레소',
'네이버',
'년대',
'년전',
'녔던',
'노곤',
'노래',
'노래방',
'노력',
'노리',
'노블레스',
'노선',
'노을',
'노크',
'노트북',
'노화',
'노후',
'녹물',
'녹음',
'녹지',
'논평',
'놀러와',
'놀수',
'놀이',
'놀이기구',
'놀이터',
'농부가',
'농장',
'높이',
'놨더군',
'누가',
'누구',
'누군가',
'누락',
'누리',
'누울',
'눈앞',
'뉴타운',
'느낌',
'는걸',
'늘송',
'능리',
'다가',
'다그',
'다다미',
'다라',
'다락방',
'다른',
'다른사람',
'다리미',
'다만',
'다미',
'다발',
'다섯',
'다소',
'다수',
'다시',
'다운',
'다음',
'다이지',
'다인',
'다정',
'다행',
'단계',
'단기',
'단면',
'단어',
'단위',
'단점',
'단정',
'단지',
'단체',
'달걀',
'달걀프라이',
'달라',
'달러',
'달리',
'달성',
'닭머르',
'담당',
'담배',
'담소',
'담요',
'답변',
'당구',
'당근',
'당나귀',
'당분간',
'당시',
'당신',
'당일',
'당황',
'대가',
'대가족',
'대고',
'대관령',
'대답',
'대당',
'대도',
'대도시',
'대뜸',
'대략',
'대로',
'대리',
'대명',
'대박',
'대부분',
'대비',
'대상',
'대신',
'대안',
'대여',
'대요',
'대욕',
'대응',
'대의',
'대입',
'대적',
'대접',
'대정',
'대중',
'대중교통',
'대처',
'대체',
'대충',
'대포',
'대표',
'대하',
'대한',
'대한민국',
'대한항공',
'대해',
'대행',
'대형',
'대화',
'대환영',
'댐핑할',
'더군다나',
'더더',
'더러',
'더블',
'더블베드',
'더욱',
'더원',
'덕림사',
'덕분',
'덕택',
'던데',
'덮어놓고',
'데리',
'데스크',
'데스크톱',
'데이',
'데이즈',
'델문',
'도구',
'도달',
'도대체',
'도도',
'도둑',
'도로',
'도록',
'도리어',
'도미',
'도보',
'도서관',
'도시',
'도시락',
'도심',
'도심지',
'도어',
'도어락',
'도움',
'도움말',
'도일',
'도정',
'도중',
'도착',
'도처',
'도청',
'도쿄',
'도크',
'독립',
'독서',
'독점',
'독채',
'돈까스',
'돌담',
'돌잔치',
'동계',
'동광양',
'동굴',
'동남',
'동남아',
'동네',
'동도',
'동료',
'동문',
'동물',
'동물원',
'동반',
'동부',
'동북',
'동생',
'동선',
'동시',
'동안',
'동영상',
'동의',
'동이',
'동인',
'동작',
'동전',
'동정',
'동쪽',
'돼지',
'돼지고기',
'됏다',
'될껀',
'될껄',
'두루',
'두번째',
'두봉',
'두부',
'두엄',
'두운',
'두툼',
'둘러보기',
'둘이서',
'둘째',
'둥근지붕',
'뒤쪽',
'뒤척',
'뒷골목',
'뒷마당',
'뒷문',
'뒷쪽',
'드네',
'드라이기',
'드라이버',
'드라이브',
'드라이어',
'드롭',
'드릴',
'드타',
'드하',
'득시',
'듭니',
'듯이',
'듯해',
'등급',
'등대',
'등등',
'등반',
'등산',
'등정후',
'디귿',
'디너',
'디럭스',
'디봇',
'디셈버',
'디자이너',
'디자인',
'디저트',
'디제이',
'따라서',
'때로는',
'때문',
'떡국',
'또오',
'또한',
'뚜벅',
'뜨근뜨근',
'뜨내기',
'라그',
'라마',
'라며',
'라면',
'라서',
'라스베가스',
'라우터',
'라운지',
'라이센스',
'라커룸',
'락스',
'락심이',
'락커',
'락타',
'란딩',
'랍니',
'랜드',
'랜트',
'랜트카',
'랜트하',
'램프',
'러닝',
'러브',
'럭셔리',
'런가',
'렀는데',
'렀습니',
'렀으',
'레노',
'레드',
'레벨',
'레비',
'레스토랑',
'레시',
'레오',
'레이',
'레이크',
'레인지',
'레저',
'레프트',
'렌즈',
'렌탈업체',
'렌터',
'렌터카',
'렌트',
'렌트카',
'려고',
'려운',
'로고',
'로그',
'로만',
'로맨틱',
'로부터',
'로비',
'로서',
'로션',
'로얄',
'로움',
'로컬',
'로터리',
'로프트',
'롯데',
'롯데리아',
'롱보드',
'루온토',
'루트',
'루프',
'룸메이트',
'룸바닥',
'룸상태',
'룸서비스',
'룸안',
'룸키',
'룸타입',
'를위',
'리가',
'리기',
'리넨',
'리뉴',
'리뉴얼',
'리더',
'리도',
'리모콘',
'리베라',
'리베로',
'리빙룸',
'리셉션',
'리움',
'리젠시',
'리조트',
'리지',
'리치',
'리트',
'리플렛',
'린스',
'링잉',
'마누카꿀',
'마늘',
'마다',
'마담',
'마당',
'마레',
'마련',
'마루',
'마리',
'마모',
'마무리',
'마사지',
'마술',
'마스코트',
'마스크',
'마스터',
'마시기',
'마안',
'마운트',
'마을',
'마음',
'마이너스',
'마인드',
'마일리지',
'마자',
'마저',
'마주',
'마지막',
'마지막여행',
'마차',
'마찬가지',
'마치',
'마침내',
'마켓',
'마트',
'마틸다',
'막걸리',
'만끽',
'만난',
'만날',
'만남',
'만다린',
'만두',
'만들기',
'만료',
'만약',
'만요',
'만원',
'만점',
'만족',
'만족도',
'만천원',
'만큼',
'만하',
'만해',
'만화책',
'말레이시아',
'말레이시아인',
'말로',
'말리',
'말씀',
'말투',
'말함',
'맘스',
'맛사지',
'맛잇엇어',
'맛집',
'망각',
'망신',
'망치',
'맞은편',
'맞이',
'매년',
'매니',
'매니저',
'매달',
'매듭',
'매력',
'매번',
'매우',
'매운탕',
'매일',
'매장',
'매점',
'매칭',
'매트',
'매트리스',
'매트릭스',
'매하',
'맥도날드',
'맥도널드',
'맥주',
'맥주잔',
'맨발',
'머리',
'머리카락',
'머신',
'머싱',
'먹거리',
'먹기',
'먹방',
'먹이',
'먼저',
'먼지',
'멀리',
'메가박스',
'메뉴',
'메리',
'메리어트',
'메시지',
...]
1 | # 각 단어가 전체 리뷰중에 등장한 총 횟수 |
array([ 4, 8, 245, ..., 1, 7, 14], dtype=int64)
1 | # 각 단어의 리뷰별 등장 횟수 |
array([[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
...,
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 2, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0]], dtype=int64)
1 | bow_vect.shape |
(1001, 3599)
1 | # "단어" - "총 등장 횟수" Matching |
{'가가': 4,
'가게': 8,
'가격': 245,
'가격표': 1,
'가구': 8,
'가급': 1,
'가기': 20,
'가까이': 20,
'가끔': 5,
'가능': 10,
'가도': 7,
'가동': 2,
'가두': 1,
'가득': 2,
'가든': 1,
'가라': 3,
'가량': 1,
'가려움': 1,
'가로': 2,
'가면': 14,
'가몬': 1,
'가무': 1,
'가물': 1,
'가미': 1,
'가방': 4,
'가버': 1,
'가성': 49,
'가세': 3,
'가스레인지': 1,
'가스렌지': 1,
'가슴': 1,
'가시': 4,
'가신': 3,
'가야': 10,
'가옥': 1,
'가요': 5,
'가용': 1,
'가운데': 3,
'가을': 4,
'가인': 1,
'가장': 42,
'가정': 4,
'가정식': 2,
'가족': 94,
'가지': 55,
'가짓수': 3,
'가차': 1,
'가치': 15,
'가품': 1,
'각각': 7,
'각오': 1,
'각자': 2,
'각종': 3,
'각층': 1,
'간격': 2,
'간곳': 1,
'간다': 4,
'간단': 1,
'간만': 1,
'간식': 5,
'간이': 3,
'간주': 1,
'간직': 1,
'간판': 2,
'간혹': 1,
'갈껄': 1,
'갈비': 1,
'갈비탕': 1,
'갈수': 7,
'갈수록': 1,
'감각': 1,
'감동': 12,
'감명': 1,
'감사': 6,
'감상': 3,
'감소': 1,
'감안': 5,
'감자': 1,
'감히': 1,
'갑인': 1,
'갑자기': 4,
'갑작스레': 1,
'강남': 1,
'강력': 9,
'강아지': 7,
'강압': 2,
'강제': 1,
'강조': 1,
'강추': 8,
'개념': 1,
'개략': 1,
'개미': 1,
'개발': 3,
'개방': 2,
'개별': 3,
'개보': 1,
'개뿔': 1,
'개선': 4,
'개수대': 1,
'개월': 1,
'개인': 23,
'개인실': 1,
'개인정보': 2,
'개조': 5,
'개층': 1,
'객수': 1,
'객실': 244,
'갤러리': 2,
'갱스터': 1,
'거기': 24,
'거나': 6,
'거두': 1,
'거론': 1,
'거르세': 1,
'거름': 2,
'거리': 156,
'거린데': 1,
'거림': 1,
'거문도': 1,
'거미': 1,
'거부': 4,
'거실': 29,
'거여': 1,
'거울': 5,
'거위': 1,
'거의': 27,
'거절': 3,
'거주': 1,
'거지': 1,
'거참': 1,
'거품': 2,
'걱정': 27,
'건가': 1,
'건강': 2,
'건너': 8,
'건너편': 11,
'건물': 55,
'건의': 1,
'건조': 2,
'건조기': 3,
'건조대': 2,
'건축': 2,
'걷기': 2,
'걸음': 3,
'걸이': 2,
'걸즈': 1,
'검사': 1,
'검색': 13,
'검정색': 1,
'검토': 3,
'것임': 3,
'겉보기': 2,
'게다가': 5,
'게스트': 25,
'게스트하우스': 30,
'게임': 2,
'게재': 1,
'겐찮은듯': 1,
'겔상': 1,
'겨우': 3,
'겨울': 15,
'겨울철': 2,
'격인': 1,
'격하': 1,
'결과': 2,
'결론': 3,
'결석': 1,
'결재': 2,
'결정': 12,
'결제': 1,
'결코': 2,
'결함': 1,
'결항': 2,
'결혼': 1,
'결혼식': 2,
'겸비': 1,
'겸용': 1,
'겹겹': 2,
'경고': 1,
'경관': 3,
'경내': 1,
'경로': 1,
'경매': 1,
'경영': 2,
'경영학': 1,
'경우': 41,
'경쟁': 1,
'경쟁력': 2,
'경찰': 2,
'경치': 17,
'경험': 26,
'계단': 4,
'계란': 11,
'계란후라이': 1,
'계산': 2,
'계속': 23,
'계정': 1,
'계획': 13,
'고가': 1,
'고간': 1,
'고객': 14,
'고급': 8,
'고기': 8,
'고기국수': 1,
'고깃배': 1,
'고내포구': 1,
'고려': 9,
'고루': 1,
'고무줄': 1,
'고문': 2,
'고민': 9,
'고봉': 1,
'고분': 2,
'고생': 1,
'고속': 2,
'고속도로': 2,
'고아': 1,
'고양이': 3,
'고여': 1,
'고오': 1,
'고요': 3,
'고유': 2,
'고작': 1,
'고장': 3,
'고정': 3,
'고층': 2,
'고통': 1,
'고트': 1,
'고함': 2,
'고해': 1,
'곡부': 1,
'곧바로': 2,
'곧장': 2,
'골드스타': 1,
'골목': 6,
'골목길': 2,
'골퍼': 2,
'골프': 9,
'골프장': 5,
'골프텔': 2,
'곰팡이': 14,
'곱슬': 1,
'곳곳': 4,
'곳곳이': 1,
'곳도': 8,
'곳임': 2,
'공간': 73,
'공감': 1,
'공개': 1,
'공공': 2,
'공공장소': 1,
'공급': 2,
'공기': 8,
'공덕': 1,
'공률': 1,
'공물': 1,
'공사': 12,
'공시': 1,
'공실이': 1,
'공연': 8,
'공연장': 2,
'공영': 1,
'공용': 8,
'공원': 17,
'공유': 5,
'공짜': 1,
'공차': 1,
'공터': 1,
'공포': 1,
'공항': 307,
'과거': 1,
'과물': 2,
'과언': 1,
'과일': 9,
'과장': 2,
'관경': 1,
'관계': 3,
'관계자': 2,
'관광': 38,
'관광객': 15,
'관광명소': 4,
'관광지': 12,
'관덕정': 4,
'관련': 6,
'관리': 39,
'관리인': 1,
'관리자': 3,
'관리직': 2,
'관음사': 1,
'관해': 5,
'광경': 2,
'광고': 4,
'광천수': 1,
'괴체': 1,
'교대': 1,
'교수': 1,
'교외': 1,
'교욱받': 1,
'교육': 5,
'교체': 7,
'교통': 30,
'교환': 2,
'교회': 2,
'구가': 3,
'구경': 7,
'구경만': 1,
'구관': 4,
'구글': 2,
'구나': 2,
'구내': 1,
'구덩이': 1,
'구도': 1,
'구두': 2,
'구둣주걱': 1,
'구들장': 1,
'구류': 1,
'구만': 2,
'구매': 14,
'구멍': 7,
'구별': 1,
'구분': 3,
'구비': 11,
'구사': 6,
'구색': 2,
'구석': 2,
'구석구석': 5,
'구성': 7,
'구식': 1,
'구암': 1,
'구역': 3,
'구역질': 2,
'구이': 1,
'구입': 5,
'구조': 12,
'구축': 1,
'국가': 3,
'국내': 1,
'국도': 1,
'국립': 1,
'국수': 3,
'국적': 3,
'국제': 11,
'국제공항': 1,
'군더더기': 1,
'군데': 8,
'군데군데': 2,
'굳럭': 1,
'굳이': 7,
'굿굿': 1,
'굿굿굿': 1,
'굿앤굿': 1,
'굿임': 1,
'권내': 1,
'권장': 5,
'권한': 2,
'귀중': 1,
'규모': 12,
'규율': 2,
'규칙': 1,
'균형': 1,
'그거': 3,
'그것': 70,
'그게': 1,
'그냥': 42,
'그네': 1,
'그녀': 20,
'그다음': 1,
'그다지': 4,
'그닥': 4,
'그대로': 11,
'그동안': 4,
'그때': 3,
'그랜드': 6,
'그레이스': 3,
'그로': 3,
'그룹': 9,
'그릇': 3,
'그린': 1,
'그림': 4,
'극복': 1,
'극악': 1,
'근래': 1,
'근무': 4,
'근본': 1,
'근육통': 1,
'근처': 164,
'근해': 1,
'글래드': 3,
'글쎄': 2,
'금고': 2,
'금늘': 1,
'금능': 2,
'금릉': 1,
'금방': 3,
'금속': 1,
'금액': 8,
'금연': 6,
'금요일': 1,
'금은': 1,
'금지': 1,
'금토일': 1,
'급상승': 1,
'급속': 1,
'기간': 3,
'기계': 4,
'기구': 2,
'기기': 4,
'기념일': 1,
'기능': 4,
'기대': 15,
'기도': 7,
'기류': 3,
'기리': 1,
'기반': 4,
'기본': 45,
'기부': 1,
'기분': 29,
'기사': 8,
'기상': 1,
'기소': 1,
'기숙사': 7,
'기술': 3,
'기술자': 1,
'기억': 11,
'기업': 2,
'기여': 1,
'기용': 1,
'기우': 1,
'기입': 1,
'기적': 1,
'기전': 1,
'기점': 1,
'기존': 1,
'기준': 4,
'기지': 1,
'기타': 5,
'기프트샵': 2,
'기호': 1,
'기회': 11,
'기후': 1,
'긴장': 1,
'길가': 4,
'길림': 1,
'길목': 2,
'길이': 2,
'김녕': 1,
'김녕해변': 1,
'김밥': 1,
'김씨': 1,
'김치': 4,
'김포공항': 1,
'까페': 5,
'깜빡': 1,
'깜짝': 3,
'깨끗': 5,
'깨끗깔끔': 1,
'께빵': 1,
'꼭대기': 2,
'꽃꺽으러': 1,
'꽃사슴': 1,
'꾸러미': 1,
'꾸밈': 1,
'꿀잠': 2,
'끝내기': 1,
'끼리': 18,
'나기': 2,
'나누기': 6,
'나니': 1,
'나라': 2,
'나름': 13,
'나머지': 6,
'나머진': 1,
'나무': 13,
'나물': 1,
'나보': 1,
'나오니': 2,
'나우': 1,
'나은': 5,
'나이': 3,
'나이트': 2,
'나이프': 2,
'나중': 8,
'나탈리': 2,
'낙후': 3,
'낚시': 3,
'난로': 3,
'난리': 3,
'난방': 30,
'난입': 2,
'난타': 9,
'날수': 1,
'날씨': 12,
'날짜': 1,
'남녀': 1,
'남성': 2,
'남아': 5,
'남자': 6,
'남자친구': 2,
'남짓': 1,
'남쪽': 1,
'남편': 10,
'낭만': 2,
'내겐': 1,
'내내': 8,
'내년': 1,
'내부': 40,
'내부시': 1,
'내시': 1,
'내야': 1,
'내외': 2,
'내용': 2,
'내의': 2,
'내인': 1,
'내일': 2,
'냄비': 1,
'냄새': 58,
'냉동': 1,
'냉장고': 35,
'너븐팡': 2,
'넓이': 1,
'네스프레소': 1,
'네이버': 3,
'년대': 2,
'년전': 1,
'녔던': 1,
'노곤': 2,
'노래': 1,
'노래방': 3,
'노력': 8,
'노리': 1,
'노블레스': 1,
'노선': 2,
'노을': 1,
'노크': 1,
'노트북': 2,
'노화': 1,
'노후': 6,
'녹물': 1,
'녹음': 4,
'녹지': 1,
'논평': 1,
'놀러와': 2,
'놀수': 1,
'놀이': 3,
'놀이기구': 2,
'놀이터': 2,
'농부가': 1,
'농장': 3,
'높이': 2,
'놨더군': 1,
'누가': 5,
'누구': 5,
'누군가': 4,
'누락': 1,
'누리': 1,
'누울': 2,
'눈앞': 3,
'뉴타운': 1,
'느낌': 49,
'는걸': 2,
'늘송': 3,
'능리': 1,
'다가': 1,
'다그': 1,
'다다미': 1,
'다라': 1,
'다락방': 1,
'다른': 88,
'다른사람': 1,
'다리미': 2,
'다만': 54,
'다미': 1,
'다발': 1,
'다섯': 1,
'다소': 21,
'다수': 2,
'다시': 93,
'다운': 4,
'다음': 102,
'다이지': 1,
'다인': 1,
'다정': 2,
'다행': 3,
'단계': 4,
'단기': 1,
'단면': 1,
'단어': 2,
'단위': 2,
'단점': 40,
'단정': 1,
'단지': 16,
'단체': 19,
'달걀': 3,
'달걀프라이': 1,
'달라': 13,
'달러': 7,
'달리': 6,
'달성': 1,
'닭머르': 1,
'담당': 2,
'담배': 19,
'담소': 2,
'담요': 1,
'답변': 3,
'당구': 2,
'당근': 2,
'당나귀': 2,
'당분간': 1,
'당시': 1,
'당신': 21,
'당일': 3,
'당황': 7,
'대가': 3,
'대가족': 2,
'대고': 1,
'대관령': 1,
'대답': 3,
'대당': 1,
'대도': 3,
'대도시': 2,
'대뜸': 1,
'대략': 6,
'대로': 8,
'대리': 3,
'대명': 1,
'대박': 3,
'대부분': 23,
'대비': 64,
'대상': 1,
'대신': 8,
'대안': 2,
'대여': 3,
'대요': 2,
'대욕': 1,
'대응': 2,
'대의': 4,
'대입': 1,
'대적': 1,
'대접': 1,
'대정': 1,
'대중': 9,
'대중교통': 6,
'대처': 2,
'대체': 2,
'대충': 3,
'대포': 1,
'대표': 4,
'대하': 1,
'대한': 19,
'대한민국': 2,
'대한항공': 1,
'대해': 21,
'대행': 1,
'대형': 10,
'대화': 11,
'대환영': 1,
'댐핑할': 1,
'더군다나': 1,
'더더': 2,
'더러': 1,
'더블': 29,
'더블베드': 4,
'더욱': 5,
'더원': 1,
'덕림사': 1,
'덕분': 6,
'덕택': 3,
'던데': 1,
'덮어놓고': 1,
'데리': 5,
'데스크': 30,
'데스크톱': 1,
'데이': 1,
'데이즈': 1,
'델문': 2,
'도구': 18,
'도달': 3,
'도대체': 1,
'도도': 1,
'도둑': 1,
'도로': 41,
'도록': 1,
'도리어': 1,
'도미': 9,
'도보': 35,
'도서관': 1,
'도시': 18,
'도시락': 4,
'도심': 14,
'도심지': 1,
'도어': 3,
'도어락': 1,
'도움': 51,
'도움말': 1,
'도일': 1,
'도정': 1,
'도중': 2,
'도착': 69,
'도처': 1,
'도청': 2,
'도쿄': 1,
'도크': 1,
'독립': 6,
'독서': 1,
'독점': 1,
'독채': 5,
'돈까스': 1,
'돌담': 1,
'돌잔치': 1,
'동계': 1,
'동광양': 1,
'동굴': 1,
'동남': 1,
'동남아': 2,
'동네': 7,
'동도': 1,
'동료': 2,
'동문': 14,
'동물': 9,
'동물원': 2,
'동반': 3,
'동부': 2,
'동북': 1,
'동생': 3,
'동선': 3,
'동시': 7,
'동안': 48,
'동영상': 1,
'동의': 3,
'동이': 1,
'동인': 2,
'동작': 1,
'동전': 1,
'동정': 1,
'동쪽': 5,
'돼지': 16,
'돼지고기': 4,
'됏다': 1,
'될껀': 1,
'될껄': 1,
'두루': 2,
'두번째': 2,
'두봉': 2,
'두부': 1,
'두엄': 1,
'두운': 2,
'두툼': 1,
'둘러보기': 1,
'둘이서': 3,
'둘째': 5,
'둥근지붕': 1,
'뒤쪽': 4,
'뒤척': 1,
'뒷골목': 1,
'뒷마당': 1,
'뒷문': 1,
'뒷쪽': 2,
'드네': 1,
'드라이기': 7,
'드라이버': 1,
'드라이브': 11,
'드라이어': 11,
'드롭': 1,
'드릴': 1,
'드타': 1,
'드하': 2,
'득시': 1,
'듭니': 5,
'듯이': 1,
'듯해': 1,
'등급': 3,
'등대': 3,
'등등': 8,
'등반': 3,
'등산': 6,
'등정후': 1,
'디귿': 1,
'디너': 4,
'디럭스': 6,
'디봇': 1,
'디셈버': 2,
'디자이너': 1,
'디자인': 11,
'디저트': 1,
'디제이': 2,
'따라서': 4,
'때로는': 1,
'때문': 112,
'떡국': 2,
'또오': 1,
'또한': 76,
'뚜벅': 3,
'뜨근뜨근': 1,
'뜨내기': 1,
'라그': 1,
'라마': 4,
'라며': 3,
'라면': 15,
'라서': 1,
'라스베가스': 1,
'라우터': 1,
'라운지': 9,
'라이센스': 1,
'라커룸': 1,
'락스': 2,
'락심이': 1,
'락커': 2,
'락타': 1,
'란딩': 1,
'랍니': 1,
'랜드': 1,
'랜트': 1,
'랜트카': 1,
'랜트하': 1,
'램프': 2,
'러닝': 1,
'러브': 3,
'럭셔리': 5,
'런가': 2,
'렀는데': 1,
'렀습니': 2,
'렀으': 1,
'레노': 1,
'레드': 1,
'레벨': 1,
'레비': 1,
'레스토랑': 64,
'레시': 1,
'레오': 2,
'레이': 1,
'레이크': 1,
'레인지': 3,
'레저': 1,
'레프트': 1,
'렌즈': 1,
'렌탈업체': 1,
'렌터': 1,
'렌터카': 4,
'렌트': 17,
'렌트카': 8,
'려고': 4,
'려운': 1,
'로고': 1,
'로그': 3,
'로만': 1,
'로맨틱': 2,
'로부터': 2,
'로비': 49,
'로서': 2,
'로션': 1,
'로얄': 1,
'로움': 1,
'로컬': 3,
'로터리': 1,
'로프트': 1,
'롯데': 6,
'롯데리아': 2,
'롱보드': 1,
'루온토': 1,
'루트': 1,
'루프': 17,
'룸메이트': 1,
'룸바닥': 1,
'룸상태': 2,
'룸서비스': 9,
'룸안': 1,
'룸키': 2,
'룸타입': 1,
'를위': 1,
'리가': 2,
'리기': 1,
'리넨': 1,
'리뉴': 1,
'리뉴얼': 1,
'리더': 1,
'리도': 1,
'리모콘': 3,
'리베라': 2,
'리베로': 1,
'리빙룸': 2,
'리셉션': 29,
'리움': 2,
'리젠시': 1,
'리조트': 53,
'리지': 1,
'리치': 1,
'리트': 1,
'리플렛': 1,
'린스': 2,
'링잉': 1,
'마누카꿀': 1,
'마늘': 1,
'마다': 1,
'마담': 2,
'마당': 2,
'마레': 2,
'마련': 7,
'마루': 5,
'마리': 11,
'마모': 1,
'마무리': 3,
'마사지': 4,
'마술': 1,
'마스코트': 2,
'마스크': 1,
'마스터': 2,
'마시기': 2,
'마안': 1,
'마운트': 1,
'마을': 9,
'마음': 31,
'마이너스': 1,
'마인드': 4,
'마일리지': 2,
'마자': 2,
'마저': 1,
'마주': 4,
'마지막': 21,
'마지막여행': 1,
'마차': 1,
'마찬가지': 4,
'마치': 12,
'마침내': 3,
'마켓': 9,
'마트': 14,
'마틸다': 2,
'막걸리': 1,
'만끽': 1,
'만난': 1,
'만날': 1,
'만남': 1,
'만다린': 2,
'만두': 1,
'만들기': 1,
'만료': 1,
'만약': 6,
'만요': 1,
'만원': 20,
'만점': 1,
'만족': 12,
'만족도': 1,
'만천원': 1,
'만큼': 2,
'만하': 2,
'만해': 2,
'만화책': 1,
'말레이시아': 1,
'말레이시아인': 1,
'말로': 2,
'말리': 1,
'말씀': 7,
'말투': 3,
'말함': 2,
'맘스': 1,
'맛사지': 1,
'맛잇엇어': 1,
'맛집': 25,
'망각': 1,
'망신': 2,
'망치': 2,
'맞은편': 7,
'맞이': 5,
'매년': 2,
'매니': 1,
'매니저': 3,
'매달': 1,
'매듭': 1,
'매력': 5,
'매번': 1,
'매우': 265,
'매운탕': 1,
'매일': 36,
'매장': 3,
'매점': 3,
'매칭': 1,
'매트': 5,
'매트리스': 13,
'매트릭스': 1,
'매하': 1,
'맥도날드': 5,
'맥도널드': 1,
'맥주': 22,
'맥주잔': 1,
'맨발': 3,
'머리': 7,
'머리카락': 4,
'머신': 3,
'머싱': 1,
'먹거리': 7,
'먹기': 2,
'먹방': 1,
'먹이': 3,
'먼저': 3,
'먼지': 3,
'멀리': 14,
'메가박스': 1,
'메뉴': 15,
'메리': 1,
'메리어트': 1,
'메시지': 1,
...}
3-5. TF-IDF 적용
>> TF-IDF 변환
Bag of Words 벡터에 대해서 TF-IDF변환 진행합니다.
1 | from sklearn.feature_extraction.text import TfidfTransformer |
1 | print(tf_idf_vect.shape) |
(1001, 3599)
변환 후 1001*3599 matrix가 출력됩니다. 여기서
-
한 행(row)은 한 리뷰를 의미하고
-
한 열(column)은 한 단어를 의미합니다.
1 | # 첫 번째 리뷰에서의 단어 중요도(TF-IDF 값) -- 0이 아닌 것만 출력 |
(0, 3588) 0.35673213299026796
(0, 2927) 0.2582351368959594
(0, 2925) 0.320251680858207
(0, 2866) 0.48843555212083145
(0, 2696) 0.23004450213863206
(0, 2311) 0.15421663035331626
(0, 1584) 0.48843555212083145
(0, 1527) 0.2928089229786031
(0, 790) 0.2528176728459411
1 | # 첫 번째 리뷰에서 모든 단어의 중요도 -- 0인 값까지 포함 |
(1, 3599)
[[0. 0. 0. ... 0. 0. 0.]]
>> “벡터” - “단어” mapping
1 | vect.vocabulary_ |
{'집중': 2866,
'휴식': 3588,
'제공': 2696,
'위치': 2311,
'선정': 1584,
'또한': 790,
'청소': 2927,
'청결': 2925,
'상태': 1527,
'이상': 2392,
'침대': 3022,
'이불': 2388,
'침구': 3021,
'교체': 299,
'어메니티': 2013,
'보강': 1296,
'베스트': 1277,
'웨스턴': 2299,
'회원': 3564,
'경우': 185,
'객실': 106,
'층수': 3009,
'요청': 2234,
'적극': 2606,
'반영': 1188,
'지인': 2837,
'소개': 1629,
'처음': 2910,
'당황': 611,
'세면': 1607,
'도구': 675,
'잠옷': 2555,
'필수': 3358,
'그것': 361,
'정도': 2673,
'다음': 578,
'여기': 2074,
'박만': 1171,
'저녁': 2595,
'맥주': 981,
'한잔': 3414,
'렌트': 838,
'뚜벅': 791,
'바로': 1159,
'버스': 1247,
'정류': 2676,
'도착': 697,
'가방': 24,
'일찍': 2487,
'정비': 2685,
'방이': 1225,
'입실': 2500,
'업그레이드': 2038,
'직원': 2849,
'정말': 2680,
'바다': 1148,
'전망': 2623,
'전일': 2636,
'함덕': 3425,
'대명': 624,
'콘도': 3091,
'실내': 1861,
'분위기': 1384,
'손님': 1659,
'가장': 40,
'배치': 1241,
'대해': 651,
'대응': 634,
'써비스': 1889,
'조식': 2730,
'부분': 1351,
'신경': 1838,
'아주': 1922,
'특급': 3208,
'트랜디': 3191,
'고민': 210,
'흔적': 3593,
'여름': 2082,
'수영장': 1700,
'사용': 1483,
'보고': 1297,
'엄마': 2035,
'가격': 2,
'대비': 627,
'주위': 2769,
'마트': 924,
'식당': 1826,
'시장': 1816,
'방문': 1217,
'의사': 2361,
'동안': 726,
'정해진': 2695,
'휘슬': 3580,
'공항': 269,
'생각': 1539,
'시설': 1809,
'모두': 1028,
'친절': 3017,
'모드': 1029,
'마지막': 917,
'마무리': 900,
'테라스': 3156,
'전경': 2612,
'인근': 2427,
'재래시장': 2583,
'야시장': 1979,
'이용도': 2402,
'이용': 2400,
'일차': 2488,
'휘슬락': 3581,
'체크': 2940,
'주변': 2761,
'여친': 2094,
'추억': 2975,
'가성': 26,
'추천': 2977,
'후회': 3575,
'예전': 2145,
'그랜드': 372,
'저희': 2605,
'아이': 1918,
'돌잔치': 708,
'다정': 581,
'했었더랬': 3470,
'전통': 2642,
'메종': 1004,
'글래드': 387,
'서비스': 1563,
'매우': 969,
'합리': 3428,
'대의': 635,
'명절': 1018,
'숙박': 1721,
'아티': 1928,
'백미': 1243,
'커피': 3061,
'베이커리': 1280,
'가족': 43,
'플러스': 3342,
'지금': 2816,
'우선': 2257,
'접근성': 2664,
'쇼핑': 1671,
'만족도': 940,
'최고': 2957,
'무엇': 1078,
'기억': 423,
'우리': 2251,
'찾기': 2902,
'교통': 300,
'이틀': 2418,
'정원': 2691,
'거기': 109,
'겨울': 160,
'친구': 3016,
'놀러와': 541,
'투숙': 3185,
'야외': 1981,
'방향': 1235,
'야간': 1976,
'조명': 2726,
'순간': 1723,
'대접': 638,
'실명': 1868,
'거론': 112,
'프론트': 3337,
'이름': 2378,
'안나': 1938,
'기분': 416,
'모습': 1037,
'첫날': 2921,
'스타트': 1761,
'다시': 576,
'선물': 1578,
'카운터': 3032,
'안내': 1939,
'디너': 777,
'기회': 438,
'미니바': 1121,
'무료': 1067,
'최근': 2959,
'관광지': 281,
'숙고': 1719,
'강추': 88,
'야경': 1977,
'일부러': 2475,
'일어나서': 2476,
'동네': 714,
'바퀴': 1168,
'먹방': 990,
'신라': 1843,
'퀄리티': 3105,
'모녀': 1024,
'제주시': 2711,
'위해': 2313,
'선택': 1586,
'오픈': 2180,
'예약': 2143,
'대로': 622,
'거리': 115,
'더군다나': 657,
'셔틀버스': 1627,
'운행': 2271,
'데스크': 670,
'차안': 2880,
'분도': 1374,
'인상': 2438,
'트윈': 3201,
'사이즈': 1489,
'만족': 939,
'스타': 1758,
'가짓수': 45,
'느낌': 558,
'화장실': 3538,
'내부': 505,
'인테리어': 2455,
'질적': 2859,
'이건': 2368,
'개인': 100,
'취향': 3005,
'구비': 321,
'과일': 273,
'나이프': 480,
'포크': 3295,
'부탁': 1364,
'준비': 2786,
'표방': 3305,
'모텔': 1046,
'결론': 165,
'훌륭': 3577,
'시간': 1799,
'슈페리어킹룸': 1737,
'하루': 3376,
'후기': 3570,
'지은지': 2836,
'얼마': 2033,
'건물': 136,
'약간': 1985,
'유럽': 2318,
'스타일': 1760,
'그림': 378,
'조각': 2715,
'복도': 1323,
'전시': 2633,
'전부': 2630,
'카펫': 3039,
'등급': 770,
'다른': 567,
'이서': 2394,
'자기': 2512,
'조금': 2722,
'외투': 2218,
'완전': 2206,
'진짜': 2856,
'셔틀': 1626,
'미리': 1127,
'시티': 1821,
'오름': 2162,
'다만': 570,
'도로': 680,
'가인': 39,
'관계': 276,
'차량': 2876,
'소리': 1638,
'다소': 574,
'방도': 1215,
'편의점': 3273,
'칫솔': 3027,
'동계': 709,
'훈련': 3576,
'라마': 795,
'연인': 2116,
'전체': 2641,
'사진': 1493,
'첨부': 2920,
'엘리베이터': 2064,
'실시간': 1873,
'비행기': 1440,
'택시': 3151,
'미만': 1128,
'이동': 2374,
'가능': 9,
'최상': 2961,
'욕실': 2235,
'슬리퍼': 1791,
'위생': 2304,
'염려': 2123,
'설날': 1590,
'떡국': 788,
'려고': 840,
'현장': 3495,
'결재': 167,
'황스': 3559,
'려운': 841,
'중국': 2789,
'만두': 932,
'종류': 2744,
'별로': 1293,
'구만': 316,
'메뉴': 996,
'답변': 603,
'제일': 2709,
'주차': 2779,
'걱정': 131,
'할아버지': 3423,
'안심': 1945,
'컨디션': 3067,
'문어': 1095,
'처리': 2909,
'회사': 3561,
'출장': 2988,
'서울': 1567,
'간혹': 64,
'이벤트': 2386,
'해주시': 3460,
'부대': 1344,
'항상': 3435,
'롯데': 855,
'비지니스': 1434,
'여행객': 2097,
'손색': 1664,
'욕조': 2236,
'겸비': 175,
'사계절': 1459,
'수풀': 1715,
'중문': 2794,
'표선등': 3306,
'원거리': 2281,
'여행지': 2101,
'복귀': 1322,
'시내': 1805,
'유명': 2323,
'일단': 2462,
'주차장': 2781,
'지하': 2844,
'공간': 246,
'응대': 2356,
'문의사항': 1097,
'신지': 1850,
'감동': 71,
'역시': 2106,
'장도': 2566,
'락타': 807,
'샤워': 1550,
'마련': 896,
'코인': 3089,
'세탁실': 1620,
'오션': 2167,
'멀리': 994,
'남자친구': 497,
'덕분': 665,
'이번': 2385,
'프런트': 3331,
'배정': 1239,
'이착륙': 2415,
'클리닝': 3120,
'근무': 382,
'아주머니': 1923,
'인사': 2436,
'코로나': 3085,
'사태': 1496,
'노화': 535,
'벽지': 1286,
'주름': 2756,
'지고': 2814,
'타일': 3133,
'가구': 4,
'코너': 3082,
'곳곳이': 243,
'관광객': 279,
'인지': 2449,
'사람': 1463,
'북적': 1369,
'전반': 2627,
'관리': 284,
'편이': 3274,
'피드백': 3346,
'편입': 3276,
'도시': 686,
'관광': 278,
'특화': 3214,
'지역': 2834,
'근처': 385,
'카페': 3034,
'가기': 6,
'고유': 221,
'특색': 3210,
'스테이': 1768,
'가도': 10,
'스타벅스': 1759,
'번화가': 1263,
'아침': 1924,
'커서': 3057,
'방음': 1224,
'먹거리': 988,
'단점': 588,
'라면': 797,
'오심': 2170,
'이중': 2411,
'혼자': 3523,
'겐찮은듯': 157,
'다그': 563,
'도일': 694,
'께빵': 456,
'중국인': 2793,
'타고': 3127,
'눈앞': 556,
'가지': 44,
'힐링': 3598,
'피트니스': 3354,
'패키지': 3254,
'미닫이': 1122,
'로비': 847,
'비롯': 1421,
'모든': 1030,
'각종': 52,
'물건': 1103,
'아침식사': 1926,
'밥맛': 1207,
'피아노': 3349,
'연주': 2118,
'룸타입': 867,
'패밀리': 3250,
'거실': 121,
'한실': 3412,
'서부': 1562,
'수산시장': 1690,
'새벽': 1534,
'경매': 182,
'구경': 304,
'추가': 2972,
'어차피': 2022,
'현재': 3496,
'묵고': 1090,
'인터넷': 2453,
'지정': 2840,
'안해': 1952,
'프런터': 3330,
'문의': 1096,
'영화': 2135,
'시스템': 1810,
'티브이': 3219,
'채널': 2903,
'몇개': 1020,
'콘센트': 3092,
'플러그': 3341,
'와이프': 2201,
'충전': 2995,
'결정': 168,
'달라': 594,
'경험': 190,
'장점': 2579,
'인생': 2439,
'최악': 2966,
'중심': 2797,
'바닷가': 1153,
'비교': 1413,
'편임': 3275,
'한번': 3408,
'예정': 2146,
'휴가': 3585,
'스위트룸': 1750,
'유리창': 2322,
'위트': 2312,
'캠핑': 3050,
'테이블': 3160,
'세트': 1621,
'텐트': 3161,
'에어컨': 2054,
'작은방': 2543,
'매트': 975,
'자리': 2520,
'탑동': 3142,
'공원': 263,
'프리': 3338,
'마켓': 923,
'공연': 259,
'매일': 971,
'식사': 1833,
'관덕정': 282,
'정문': 2682,
'도보': 684,
'소요': 1645,
'해장국': 3458,
'동문': 717,
'서문시장': 1560,
'목관': 1047,
'맞은편': 960,
'슬슬': 1792,
'별관': 1291,
'본관': 1330,
'갈수': 68,
'최신': 2965,
'그린': 377,
'환경': 3545,
'때문': 787,
'별도': 1292,
'대중교통': 641,
'구매': 317,
'심플': 1882,
'비품': 1438,
'트윈침대': 3205,
'스탠다드': 1763,
'높이': 548,
'한라산': 3404,
'노곤': 525,
'터미널': 3152,
'온돌룸': 2189,
'세면대': 1608,
'물이': 1114,
'치약': 3013,
'것임': 150,
'생수': 1545,
'환승': 3550,
'곧바로': 231,
'동광양': 710,
'정류장': 2677,
'시청': 1818,
'스텝': 1771,
'협소하': 3502,
'거품': 130,
'타월': 3131,
'화장': 3537,
'대가': 612,
'거울': 123,
'쇼파': 1670,
'조합': 2739,
'금액': 395,
'주차공간': 2780,
'공터': 267,
'태풍': 3150,
'개층': 104,
'오후': 2184,
'한시': 3409,
'사우나': 1485,
'부모님': 1349,
'할머니': 3422,
'모시': 1038,
'계획': 197,
'일로': 2464,
'빠듯해': 1445,
'어디': 2004,
'길가': 441,
'골목길': 235,
'이륙': 2377,
'착륙': 2887,
'보이': 1310,
'그냥': 363,
'일반': 2469,
'대욕': 633,
'헬스장': 3489,
'가면': 19,
'고려': 206,
'렌터카': 837,
'입구': 2496,
'반대쪽': 1182,
'한정': 3416,
'단체': 591,
'더블': 660,
'제외': 2708,
'여유': 2088,
'반대편': 1183,
'도심': 688,
'불구': 1387,
'소음': 1648,
'거의': 125,
'세명': 1609,
'트리플': 3199,
'전날': 2618,
'남아': 495,
'자체': 2534,
'당일': 610,
'정보': 2683,
'햇반': 3468,
'장조림': 2580,
'전자': 2637,
'레인지': 831,
'가야': 33,
'세미나': 1610,
'한국인': 3400,
'그대로': 369,
'나름': 469,
'제과점': 2697,
'정거장': 2670,
'모기': 1022,
'만해': 944,
'마리': 898,
'가량': 16,
'방안': 1222,
'에프킬라': 2058,
'비치': 1435,
'계속': 195,
'뿌리': 1456,
'잡고': 2557,
'찬장': 2891,
'천장': 2915,
'곳곳': 242,
'측은': 3008,
'벌레': 1265,
'기본': 414,
'요금': 2223,
'건너편': 135,
'번호': 1262,
'샐러드': 1538,
'음식': 2349,
'구성': 326,
'전복죽': 2629,
'저번': 2601,
'핸드폰': 3464,
'충전기': 2996,
'불편': 1400,
'센터': 1622,
'공사': 256,
'숙면': 1720,
'무난': 1061,
'노력': 528,
'지불': 2826,
'비용': 1430,
'로맨틱': 845,
'독립': 702,
'북유럽': 1368,
'유리': 2321,
'커튼': 3059,
'바깥': 1145,
'설치': 1595,
'모던': 1025,
'비데': 1418,
'효율': 3569,
'인치': 2451,
'삼성': 1512,
'만끽': 927,
'편안함': 3270,
'여정': 2091,
'바닥': 1151,
'목적': 1052,
'커플': 3060,
'끼리': 464,
'직진': 2852,
'운전': 2268,
'공영': 261,
'애기': 1962,
'무선인터넷': 1074,
'갑자기': 80,
'서전': 1568,
'항공': 3432,
'다가': 562,
'가급': 5,
'결제': 169,
'은방': 2342,
'상황': 1533,
'아시': 1914,
'고트': 227,
'지도': 2822,
'세심': 1614,
'공시': 257,
'시작': 1815,
'맥주잔': 982,
'쿠폰': 3102,
'일도': 2463,
'크기': 3108,
'룸서비스': 864,
'정신': 2690,
'평가': 3277,
'편의': 3272,
'요즘': 2233,
'여러': 2078,
'직언': 2848,
'블룸': 1412,
'변기': 1288,
'물질': 1115,
'얘기': 1997,
'수건': 1675,
'환불': 3548,
'월일': 2293,
'푸른': 3313,
'파도': 3223,
'철썩': 2918,
'풍경': 3320,
'생선회': 1544,
'장소': 2573,
'놀이': 543,
'양도': 1989,
'돼지': 735,
'전골': 2613,
'매운탕': 970,
'형편': 3512,
'브런치': 1406,
'뒤쪽': 751,
'맛집': 956,
'쭈욱': 2869,
'갑인': 79,
'드타': 764,
'방파제': 1233,
'횟집': 3567,
'타운': 3129,
'해산물': 3448,
'규모': 356,
'가까이': 7,
'어르신': 2008,
'깨끗': 454,
'대신': 629,
'작고': 2538,
'수영': 1697,
'아쉬움': 1912,
'인도': 2430,
'소독약': 1634,
'스비': 1745,
'홀로': 3525,
'등정후': 775,
'부터': 1365,
'혹시': 3520,
'확인': 3543,
'전화': 2645,
'통해': 3180,
'휘트니': 3582,
'운동복': 2266,
'수영모': 1698,
'고오': 219,
'바람': 1157,
'대여': 631,
'여직원': 2093,
'무시': 1077,
'말투': 951,
'원래': 2284,
'제로': 2700,
'운영': 2267,
'일반인': 2470,
'입장': 2503,
'선심': 1583,
'필요': 3360,
'기전': 430,
'대뜸': 620,
'화가': 3528,
'고객': 200,
'플레인': 3343,
'시경': 1800,
'아웃': 1917,
'하야': 3382,
'메리어트': 998,
'여럿': 2081,
'이어도': 2397,
'수준': 1707,
'이군': 2370,
'실망': 1867,
'종일': 2747,
'리셉션': 880,
'컨시어': 3070,
'태도': 3147,
'유료': 2319,
'사고': 1460,
'학생': 3393,
'선생님': 1580,
'어딘': 2005,
'사항': 1498,
'무슨': 1075,
'거지': 128,
'리빙룸': 879,
'하나요': 3368,
'트윈룸': 3202,
'무려': 1065,
'게재': 156,
'실물': 1869,
'차이': 2881,
'실화': 1879,
'파우더': 3231,
'곰팡이': 240,
'자국': 2511,
'작동': 2539,
'골드스타': 233,
'냉장고': 517,
'절대': 2649,
'레스토랑': 826,
'자꾸': 2513,
'정색': 2687,
'살짝': 1510,
'서버': 1561,
'데리': 669,
'가신': 32,
'나머지': 470,
'물기': 1105,
'직접': 2851,
'체계': 2931,
'엉망': 2048,
'소규모': 1630,
'시기': 1803,
'마음': 910,
'리트': 886,
'라그': 794,
'기대': 409,
'실내수영장': 1862,
'수온': 1701,
'스위트': 1749,
'비수': 1427,
'상대': 1515,
'노후': 536,
'정가': 2669,
'무리': 1072,
'할인': 3424,
'행사': 3473,
'참고': 2893,
'포함': 3298,
'마일리지': 913,
'대한항공': 650,
'하룻밤': 3377,
'확실': 3542,
'연식': 2115,
'고급': 201,
'원가': 2280,
'서우': 1566,
'해수욕장': 3453,
'한눈': 3402,
'창문': 2900,
'겨울철': 161,
'온도': 2187,
'리기': 870,
'방기': 1214,
'동시': 725,
'방식': 1221,
'대략': 621,
'도정': 695,
'부스': 1352,
'옆방': 2137,
'티비': 3220,
'취침': 3001,
'초등학생': 2946,
'양호': 1996,
'한식당': 3411,
'차라리': 2875,
'반드시': 1184,
'크게': 3107,
'씨유': 1896,
'델문': 674,
'카페나': 3035,
'해수욕': 3452,
'최적': 2969,
'디럭스': 778,
'발코니': 1203,
'모로': 1034,
'트윈룸입니': 3203,
'선착순': 1585,
'예술': 2142,
'물놀이': 1106,
'모래': 1031,
'피크': 3352,
'시즌': 1817,
'날씨': 491,
'선선': 1581,
'근래': 381,
'편리': 3269,
'코르': 3086,
'기지': 434,
'사양': 1481,
'주체': 2782,
'교회': 302,
'절반': 2653,
'인수': 2440,
'보임': 1314,
'아트': 1927,
'추정': 2976,
'프로': 3333,
'페셔': 3264,
'인력': 2432,
'매트리스': 976,
'나무': 472,
'허리': 3482,
'안감': 1934,
'해변': 3447,
'워낙': 2275,
'가시': 31,
'주말': 2757,
'한국': 3397,
'벚꽃': 1270,
'기간': 403,
'협재': 3503,
'옹포': 2197,
'밥집': 1209,
'산책': 1505,
'루프': 860,
'비바람': 1425,
'불어': 1396,
'블로거': 1410,
'물떄': 1108,
'그거': 360,
'위주': 2308,
'풀이': 3317,
'온수': 2192,
'미온수': 1133,
'미온': 1132,
'자쿠지': 2536,
'잠깐': 2551,
'인피니트': 2458,
'환상': 3549,
'하나': 3365,
'스페': 1782,
'치킨': 3015,
'빠에야': 1446,
'스파': 1779,
'구조': 333,
'스파룸': 1780,
'자쿠': 2535,
'이용권': 2401,
'하니': 3371,
'사이': 1487,
'시트': 1820,
'정리': 2678,
'삼다수': 1511,
'병과': 1294,
'네스프레소': 520,
'캡슐': 3051,
'여자': 2089,
'피로': 3347,
'스페인': 1784,
'영업': 2132,
'종료': 2743,
'버거': 1245,
'오른쪽': 2161,
'마담': 893,
'나탈리': 482,
'음악': 2351,
'필터': 3362,
'실외수영장': 1875,
'검색': 147,
'옥상': 2186,
'결과': 164,
'대형': 653,
'만큼': 942,
'번잡': 1260,
'개수대': 98,
'이전': 2407,
'아무': 1909,
'리지': 884,
'제한': 2714,
'경치': 189,
'이웃': 2403,
'일몰': 2467,
'실제': 1877,
'리조트': 883,
'홍보': 3527,
'상통': 1529,
'화산': 3532,
'바위': 1166,
'정상': 2686,
'기점': 431,
'스템': 1770,
'잠자리': 2556,
'기타': 435,
'부족함': 1359,
'길이': 444,
'다행': 582,
'중국어': 2792,
'영어': 2131,
'도움': 692,
'해결': 3438,
'목적지': 1053,
'해피': 3461,
'음료': 2346,
'사이다': 1488,
'주스': 2764,
'달걀': 592,
'치즈': 3014,
'히터': 3597,
'투어': 3187,
'호스텔': 3515,
'질문': 2858,
'상품': 1530,
'과거': 270,
'게스트하우스': 154,
'자고': 2510,
'오기': 2150,
'일이': 2479,
'발전': 1201,
'예상': 2141,
'토스터': 3165,
'이후': 2424,
'소등': 1635,
'불키': 1399,
'조용조': 2733,
'방키': 1232,
'고여': 218,
'남자': 496,
'안전': 1946,
'차로': 2878,
'이내': 2373,
'뷔페': 1403,
'여느': 2076,
'롯데리아': 856,
'방만': 1216,
'고정': 224,
'무궁화': 1060,
'수기': 1676,
'사이트': 1490,
'홈페이지': 3526,
'마치': 921,
'무척': 1088,
'전기차': 2617,
'건너': 134,
'급속': 402,
'소가': 1628,
'유치원': 2333,
'주택가': 2784,
...}
1 | invert_index_vectorizer = {v: k for k, v in vect.vocabulary_.items()} |
{2866: '집중', 3588: '휴식', 2696: '제공', 2311: '위치', 1584: '선정', 790: '또한', 2927: '청소', 2925: '청결', 1527...
4. 감성 분류 – Logistic Regression
이제 전처리된 리뷰 데이터를 활용하여 감성 분류 예측 모델을 만들겠습니다.
감성 분류 예측 모델이란, 이용자 리뷰의 평가 내용을 통해 이 리뷰가 긍정적인지, 부정적인지를 예측하여, 이용자의 감성을 파악하는 겁니다.
따라서, 모델의 X 값(즉, feature 값)은 이용자 리뷰의 평가 내용이 되겠고, 모델의 Y 값(즉, label 값)은 이용자의 긍/부정 감성이 되겠습니다.
4-1. 데이터셋 생성
>> Label
우리는 이용자의 리뷰를 “긍정” / “부정” 두가지 부류로 나누고자 합니다. 하지만 이러한 이용자의 감성을 대표할 수 있는 “평가 점수” 변수는 1 ~ 5의 value를 가지고 있습니다. 따라서 "평가 점수"변수 (rating: 1 ~ 5)를 이진 변수 (긍정: 1, 부정:0)으로 변환해야 합니다.
1 | df.sample(10) |
| rating | text | |
|---|---|---|
| 951 | 3 | 나는 그것이 수영장을 가지고 있기 때문에 여기에서 예약했다. 그러나 수영장에 물이 ... |
| 47 | 4 | 시설은 좀 오래 되었지만 동문시장, 서문시장 도보 10분거리이고 공항에서도 가깝습니... |
| 574 | 4 | 호스트는 아주 친절하고 도움이 되었습니다. 그는 우리를 픽업해서 근처에 있는 동안 ... |
| 637 | 4 | 제주시에 있는 호텔로 깔끔한 편이었고 나름 전망도 괜찮았습니다. 주차장은 주차타워에... |
| 113 | 4 | 루프탑 바와 수영장이 있어서 사용가능하고 깨끗하고 친절하셔서 좋은곳이었습니다. 다만... |
| 416 | 3 | 다양한 음식과 음료를 걸어갈 수 있는 곳. 저녁 식사는 늦은 밤에 음식을 찾는 문제... |
| 671 | 2 | 리뷰보고 기대했는데 호텔이라기 보단 모텔이나 펜션 느낌이네요 생긴지 얼마 안된걸로 ... |
| 235 | 5 | 위치가 바로 해변 근처라, 룸에서 보이는 뷰가 너무 좋습니다. 세화해변 자체가 조용... |
| 875 | 3 | Jeju 섬에서 4 일째되는 주제와 같이 Jeju 공항에서 터치 다운 이후로 이동 ... |
| 254 | 4 | 출장 때문에 제주도에 오게 됐습니다. 가성비가 좋고 전체적으로 깨끗했습니다. 난방이... |
리뷰 내용와 평점을 살펴보면, 4 ~ 5점 리뷰는 대부분 긍정적이었지만, 1 ~ 3점 리뷰에서는 부정적인 평가가 좀 많이 보였습니다.
그래서 4점, 5점인 리뷰는 "긍정적인 리뷰"로 분류하여 1를 부여하고, 1 ~ 3점 리뷰는 "부정적인 리뷰"로 분류하여 0을 부여하도록 할게요.
1 | df['rating'].hist() |
<matplotlib.axes._subplots.AxesSubplot at 0x154887d0b08>

1 | def rating_to_label(rating): |
1 | df.head() |
| rating | text | y | |
|---|---|---|---|
| 0 | 4 | 여행에 집중할수 있게 편안한 휴식을 제공하는 호텔이었습니다. 위치선정 또한 적당한 ... | 1 |
| 1 | 4 | 2일 이상 연박시 침대, 이불, 베게등 침구류 교체 및 어메니티 보강이 필요해 보입... | 1 |
| 2 | 4 | 지인에소개로온 호텔 깨끗하고 좋은거같아요 처음에는 없는게 많아 많이 당황했는데 ... | 1 |
| 3 | 5 | 방에 딱 들어서자마자 눈이 휘둥그레질정도로 이렇게 넓은 호텔 처음 와본 것 같아요!... | 1 |
| 4 | 5 | 저녁에 맥주한잔 하는게 좋아서 렌트 안하고 뚜벅이 하기로 했는데 호텔 바로 앞에 버... | 1 |
1 | df["y"].value_counts() |
1 726
0 275
Name: y, dtype: int64
>> Feature
모델의 Feature 변수는 리뷰에서 추출된 형태소와 그들의 중요도를 나타나는 tf_idf_vect로 대체하겠습니다.
4-2. Training set / Test set 나누기
1 | from sklearn.model_selection import train_test_split |
1 | x_train.shape, y_train.shape |
((700, 3599), (700,))
1 | x_test.shape, y_test.shape |
((301, 3599), (301,))
4-3. 모델 학습
>> Logistic Regression 모델 학습
1 | from sklearn.linear_model import LogisticRegression |
>> 분류 결과 평가
1 | # classification result for test set |
accuracy: 0.72
precision: 0.72
recall: 1.00
F1: 0.84
1 | # confusion matrix |

모델 평가결과를 살펴보면, 모델이 지나치게 긍정(“1”)으로만 예측하는 경향이 있습니다. 따라서 긍정 리뷰를 잘 예측하지만, 부정 리뷰에 대한 예측 정확도가 매우 낮습니다. 이는 샘플데이터의 클래스 불균형으로 인한 문제로 보입니다.
따라서, 클래스 불균형 조정을 진행하겠습니다.
4-4. 샘플링 재조정
>> 1:1 Sampling
1 | df['y'].value_counts() |
1 726
0 275
Name: y, dtype: int64
1 | positive_random_idx = df[df['y']==1].sample(275, random_state=12).index.tolist() |
1 | random_idx = positive_random_idx + negative_random_idx |
1 | x_train.shape, y_train.shape |
((412, 3599), (412,))
1 | x_test.shape, y_test.shape |
((138, 3599), (138,))
4-5. 모델 재학습
>> 모델 학습
1 | lr2 = LogisticRegression(random_state = 0) |
>> 분류 결과 평가
1 | # classification result for test set |
accuracy: 0.72
precision: 0.70
recall: 0.74
F1: 0.72
1 | # confusion matrix |

이제 모델이 “긍정적인” 케이스와 “부정적인” 케이스를 모두 적당히 잘 맞춘 것을 확인할 수 있습니다.
5. 긍정 / 부정 키워드 분석
기계는 이처럼 리뷰 내용에 나타나는 사람의 감성을 구별할 수 있을 뿐만 아니라, 학습된 Logistic Regression 모델을 이용하여 긍/부정 키워드도 추출해낼 수 있습니다.
추출된 키워드를 통해서 이용자가 느끼는 제주호델의 장,단점을 파악할 수 있고, 이를 기반으로 앞으로 유지해야 할 좋은 서비스와 개선이 필요한 아쉬운 서비스에 대해서도 어느정도 판단할 수 있습니다.
긍 / 부정 키워드를 추출하기 위해 먼저 Logistic Regression 모델에 각 단어의 coeficient를 시각화해보겠습니다.
1 | lr2.coef_ |
array([[ 0.28196772, 0.10796991, -0.04978601, ..., 0. ,
-0.18315162, 0.28434689]])
1 | # print logistic regression's coef |
<BarContainer object of 3599 artists>

여기서 계수가 양인 경우는 단어가 긍정적인 영향을 미쳤다고 볼 수 있고, 반면에, 음인 경우는 부정적인 영향을 미쳤다고 볼 수 있습니다.
이 계수들을 크기순으로 정렬하면, 긍정 / 부정 키워드를 출력하는 지표가 되겠습니다.
먼저 "긍정 키워드"와 "부정 키워드"의 Top 5를 각각 출력해볼게요.
1 | print(sorted(((value, index) for index, value in enumerate(lr2.coef_[0])), reverse = True)[:5]) |
[(1.2644550507381787, 1217), (0.9079356150239053, 2400), (0.895609472071521, 1148), (0.8859075267474583, 2730), (0.8795111499693716, 43)]
[(-0.7201222787741572, 1310), (-0.7519681298547074, 3022), (-0.8672956005075485, 567), (-0.9190158099937462, 515), (-0.9945592515966041, 2143)]
이처럼 단어의 coeficient와 index가 출력이 됩니다.
이제 전체 단어가 포함한 "긍정 키워드 리스트"와 "부정 키워드 리스트"를 정의하고 출력해볼게요.
1 | coef_pos_index = sorted(((value, index) for index, value in enumerate(lr2.coef_[0])), reverse = True) |
[(1.2644550507381787, 1217),
(0.9079356150239053, 2400),
(0.895609472071521, 1148),
(0.8859075267474583, 2730),
(0.8795111499693716, 43),
(0.8541915649753757, 26),
(0.8362541212560809, 578),
(0.7714811231976703, 2957),
(0.7375280889735719, 1491),
(0.7203390936359615, 956),
(0.6503260268852225, 2977),
(0.6488836121942877, 115),
(0.6467914172687944, 910),
(0.6264469987695738, 1159),
(0.5943145305412955, 883),
(0.5505354129422678, 2988),
(0.5294632094678557, 692),
(0.5240729254152497, 2455),
(0.5207834696883535, 1922),
(0.5153917648445299, 2361),
(0.49372825531123943, 1215),
(0.49360869707006777, 246),
(0.4854919888814009, 680),
(0.4854086392859413, 269),
(0.4748702738145659, 686),
(0.4703566749364605, 1194),
(0.45896954031613635, 790),
(0.45586600022584467, 2834),
(0.45372800281293535, 19),
(0.4500540795581468, 2779),
(0.44412671542407905, 416),
(0.4425720292652355, 1805),
(0.4364684750426245, 263),
(0.4308546124247834, 3267),
(0.4255898116545533, 2797),
(0.4212941284904679, 2680),
(0.41423556597532674, 489),
(0.4121691212201187, 826),
(0.4118068110883225, 937),
(0.402234791816506, 353),
(0.39915216217204813, 136),
(0.3906502087724938, 131),
(0.38863745777148795, 2180),
(0.38330015115324956, 322),
(0.37909051494174656, 1027),
(0.3776598665737952, 1926),
(0.36980255314279886, 2760),
(0.3609360208520378, 3034),
(0.3601455791606223, 1342),
(0.3511486012544648, 344),
(0.35030155043520095, 3447),
(0.34810767211689553, 2674),
(0.3448646839750021, 3021),
(0.34466834073677766, 2070),
(0.3341929597049384, 1750),
(0.3332295460784216, 2849),
(0.3291725978477463, 3435),
(0.3276653378330499, 2530),
(0.3221942756247239, 1483),
(0.3217689173991826, 3397),
(0.32047891465181083, 2013),
(0.3080484198419967, 3029),
(0.3062772550220064, 939),
(0.30478483149478314, 627),
(0.30438930158469363, 2606),
(0.3027703771200994, 3454),
(0.2989615171043252, 4),
(0.2960030540205178, 1991),
(0.2941392017845358, 3347),
(0.290078280630203, 3593),
(0.28793362240859766, 1090),
(0.2861006595602784, 3404),
(0.28434689214226744, 3598),
(0.2819677181770861, 0),
(0.2818546705602182, 1809),
(0.2796034993266096, 1440),
(0.2783451949177126, 3410),
(0.27700777474574007, 1078),
(0.2764799249539472, 278),
(0.2757845449039994, 2074),
(0.27449374217124756, 1697),
(0.27211400542938347, 860),
(0.26958773489776877, 276),
(0.26894024258506205, 2642),
(0.2679652653240931, 451),
(0.26659353628773785, 2605),
(0.2642541001710917, 1073),
(0.2602933330998526, 71),
(0.2601225988013697, 2727),
(0.25898398896658026, 395),
(0.25523176043119644, 109),
(0.25400402242362763, 1120),
(0.25346771390562256, 2311),
(0.2525923917872476, 1760),
(0.252483390540294, 3549),
(0.25243556295192593, 44),
(0.2523758090983611, 410),
(0.25096842816549325, 3286),
(0.25030837769014164, 3013),
(0.2478963860060586, 3064),
(0.24711051623367455, 1700),
(0.24639626607741794, 532),
(0.24423718622136711, 2339),
(0.24419509835066824, 817),
(0.24268824175871553, 1646),
(0.24020390663531643, 847),
(0.23613168717319782, 1277),
(0.2356739894439279, 3547),
(0.23333780634901968, 1966),
(0.2331264370168398, 1350),
(0.23268102047017378, 769),
(0.23262817998676638, 3166),
(0.23066409348184064, 1384),
(0.23010041799635683, 210),
(0.22586220283294378, 1885),
(0.22523607425083558, 260),
(0.2222412951070305, 281),
(0.22091253142370337, 68),
(0.21922527479299828, 1147),
(0.21868875489181047, 1465),
(0.21807039000574996, 3299),
(0.21807039000574996, 172),
(0.2177926484819077, 3223),
(0.21751093007081115, 2634),
(0.2163036212275728, 1171),
(0.2162361260915301, 1671),
(0.21591443393848506, 1552),
(0.21530945315363187, 2038),
(0.21450361502341533, 385),
(0.2130004456328932, 2018),
(0.21283349877228466, 2752),
(0.21171382727695384, 1523),
(0.21156875238749653, 2906),
(0.21149936066156635, 3273),
(0.2107420524603348, 3062),
(0.2089604714261007, 2167),
(0.20857560294926117, 705),
(0.20849174650373709, 751),
(0.2084323782944626, 2374),
(0.2083850088267226, 1421),
(0.2076716418538995, 1823),
(0.20734493904041118, 2837),
(0.20719074367652907, 1455),
(0.20632098174995006, 2421),
(0.20497429689912247, 2866),
(0.20497429689912247, 1584),
(0.20460844733702388, 1309),
(0.20460135810671237, 1721),
(0.2026617971957564, 192),
(0.2021896255723423, 574),
(0.20076231770123473, 1122),
(0.20007368092656116, 981),
(0.1994615301156886, 2722),
(0.1987204932053518, 1895),
(0.1982476502888129, 1622),
(0.19668791935266033, 1816),
(0.19602558824910057, 767),
(0.195808499032481, 581),
(0.1954442410972148, 2551),
(0.19543920090503364, 2244),
(0.19535829875348126, 1249),
(0.19513316286959848, 2451),
(0.1932943416840944, 2561),
(0.19241691136362254, 1278),
(0.19188249800399276, 221),
(0.19059569732190523, 341),
(0.18931948208829832, 2965),
(0.18863137833398097, 2225),
(0.188233216963001, 1067),
(0.18823116402871, 1510),
(0.18591329718666444, 2556),
(0.1858513716606046, 1853),
(0.18475568229990585, 1553),
(0.1842332027380814, 15),
(0.18385370069092052, 490),
(0.183698940971588, 646),
(0.18352145151744345, 2709),
(0.18179588928699872, 1821),
(0.18141472902160485, 356),
(0.18101860699904043, 3325),
(0.17968533410962978, 1517),
(0.17894437469027485, 1441),
(0.1785803255429378, 203),
(0.17749094181502081, 1291),
(0.17745689661710926, 423),
(0.17691919755039834, 748),
(0.17681729295382825, 629),
(0.17650785942100156, 2042),
(0.17521436890986974, 2822),
(0.17420775259072946, 3525),
(0.17407554594971275, 1376),
(0.17390397512207328, 1508),
(0.17390397512207328, 584),
(0.1735238781146927, 509),
(0.1729437410073151, 2188),
(0.17166919021535662, 2761),
(0.1711332476240707, 1505),
(0.17079932615633314, 300),
(0.1706243328180457, 795),
(0.16989041829422863, 1577),
(0.16965179412684628, 1028),
(0.16919925883678436, 2705),
(0.1687459695340302, 667),
(0.16815742142636886, 1625),
(0.1676232210748594, 2755),
(0.16757499046872387, 2274),
(0.16736563458006257, 1485),
(0.16735261847037675, 2476),
(0.16642204341549788, 2035),
(0.16595006133727253, 760),
(0.16475334154520693, 1208),
(0.1646740028459598, 1937),
(0.16464847364532936, 690),
(0.1636808432150993, 3274),
(0.16348761826549618, 1676),
(0.16301112079103763, 2399),
(0.1629849886257, 3591),
(0.1629118596848168, 3186),
(0.1626689828520234, 3210),
(0.16142787916860177, 1598),
(0.1613522761276804, 3417),
(0.1603451229219545, 3116),
(0.1599203302911822, 2487),
(0.15983057428397826, 589),
(0.1586108439130326, 2331),
(0.15849368672169892, 1647),
(0.15826740340037068, 625),
(0.15743176994516933, 3490),
(0.1571722075528101, 3567),
(0.15712518230005013, 3027),
(0.15687460543471862, 3428),
(0.15651108129304298, 1307),
(0.15600166572103646, 1961),
(0.15583305075516699, 106),
(0.15577941820129187, 1617),
(0.155766902206714, 3017),
(0.15491622812261568, 382),
(0.15485968714815496, 1528),
(0.1545939535424059, 259),
(0.15411614699130288, 684),
(0.1535726280760412, 3293),
(0.1535726280760412, 2892),
(0.15341384775377642, 2726),
(0.15325471176173253, 1533),
(0.1529359648993235, 1983),
(0.1523311300168501, 1432),
(0.15231484413753682, 1030),
(0.15231397485990963, 556),
(0.15139635636201898, 2078),
(0.1511214654825413, 1312),
(0.15101670800091527, 2998),
(0.14887052306393284, 3096),
(0.14887052306393284, 1457),
(0.1485864638932176, 2600),
(0.14818094009147514, 2223),
(0.14810636314705725, 1859),
(0.14763883239448744, 1738),
(0.14724688251552864, 2328),
(0.1471683691325973, 1841),
(0.14705200941823965, 2268),
(0.14704245351541728, 660),
(0.14646359476664114, 3297),
(0.14621204479849256, 2226),
(0.14615889360176976, 3350),
(0.14576749911151465, 2851),
(0.14545079981853645, 2275),
(0.1447568799500706, 2798),
(0.1444313715254008, 2022),
(0.1444180222221931, 1654),
(0.1444180222221931, 1548),
(0.14434325571263137, 2445),
(0.14412764469019354, 1396),
(0.1439309933360322, 3220),
(0.14364997884743677, 3272),
(0.14359122893612475, 1814),
(0.14339034972990414, 2983),
(0.14305710787294673, 1085),
(0.14276222540097244, 348),
(0.14269270587505128, 996),
(0.14200348649786682, 3275),
(0.14175159317612532, 3189),
(0.14173146008479248, 714),
(0.14095242066301328, 306),
(0.14092668743912232, 2678),
(0.14086483039942074, 570),
(0.14061627821721584, 3414),
(0.14047941175558679, 387),
(0.1404004427633594, 3476),
(0.1404004427633594, 1112),
(0.13978500519793755, 2847),
(0.13978500519793755, 780),
(0.13964073789423023, 665),
(0.13934374266681135, 3500),
(0.13829992453370865, 3161),
(0.13817992752504213, 1768),
(0.13745049759016625, 3511),
(0.13665192952568253, 757),
(0.13642162742786484, 1351),
(0.1359845468368403, 271),
(0.13597476793796576, 534),
(0.135852916769958, 2497),
(0.13574633450491594, 3009),
(0.13574633450491594, 2299),
(0.13574633450491594, 1296),
(0.13574633450491594, 1188),
(0.13549762485752148, 3571),
(0.13549762485752148, 3391),
(0.13549762485752148, 2640),
(0.13541454362686076, 1332),
(0.13519719011184664, 238),
(0.13515286340239754, 2047),
(0.13500163846144472, 3152),
(0.1347989845038155, 2353),
(0.13477156350779324, 1527),
(0.13474112790096265, 1889),
(0.13474112790096265, 1196),
(0.13474112790096265, 462),
(0.13469292571022845, 11),
(0.13458956235978478, 924),
(0.13442001799674802, 2069),
(0.1342034640274507, 2869),
(0.1341559282111133, 2145),
(0.13415237816410766, 3471),
(0.13415237816410766, 3406),
(0.13388090777365988, 94),
(0.13342324387367194, 2971),
(0.1332930603370377, 3432),
(0.1330404844897235, 1506),
(0.13293873503860765, 3087),
(0.13272932864456133, 3073),
(0.13232986210850453, 2246),
(0.13218242328559932, 2082),
(0.13197846164836427, 3285),
(0.13197846164836427, 2297),
(0.13197846164836427, 1741),
(0.13197846164836427, 69),
(0.13179675529668713, 1549),
(0.1316814762162865, 3441),
(0.13154581005598, 3192),
(0.1314192595003537, 1386),
(0.13129169059042645, 969),
(0.1311653774611966, 244),
(0.13071289286611526, 3003),
(0.13067314069850974, 697),
(0.12989273592089953, 466),
(0.1297746134602387, 411),
(0.12976187780923948, 39),
(0.12975779444471916, 3176),
(0.12975779444471916, 3066),
(0.1296539223346817, 3169),
(0.1295761221334622, 2132),
(0.12915915165160174, 3585),
(0.12912049655247929, 3475),
(0.12912049655247929, 455),
(0.12897380261630323, 1053),
(0.12884028806560763, 2910),
(0.1283431735744972, 2344),
(0.1283431735744972, 1542),
(0.12780627572336126, 2207),
(0.12780627572336126, 531),
(0.1277445628861703, 2975),
(0.12741425172305826, 669),
(0.1268676275287745, 424),
(0.12600280097170596, 2053),
(0.1255687931546876, 1578),
(0.1251082717170878, 3287),
(0.12501636694175655, 3082),
(0.12485375424445369, 988),
(0.12485077138187695, 1247),
(0.12477317035474626, 1638),
(0.12470562190989118, 1234),
(0.12418537178635555, 3201),
(0.12412494478481371, 1572),
(0.12356427400475413, 720),
(0.12346465010011236, 3190),
(0.1232984083336477, 3384),
(0.12290996269246392, 2930),
(0.12272802616213961, 3448),
(0.12252951158801757, 73),
(0.12243269952395211, 3105),
(0.12240812373820147, 2735),
(0.12169970934221791, 2781),
(0.12150853668051385, 1722),
(0.12148978639712985, 1301),
(0.12147421457137794, 2320),
(0.12147421457137794, 2289),
(0.12135904501371637, 3339),
(0.12135904501371637, 1602),
(0.12085540050886351, 3206),
(0.12085540050886351, 2067),
(0.12085540050886351, 1282),
(0.12085540050886351, 1170),
(0.12085540050886351, 199),
(0.12073634202256898, 2460),
(0.12051291677661294, 2250),
(0.12051291677661294, 730),
(0.12036501072581905, 3263),
(0.12036501072581905, 373),
(0.11982407529162177, 74),
(0.11941421355306232, 2814),
(0.11941421355306232, 2193),
(0.11909411357560733, 2028),
(0.11903875427006184, 403),
(0.11887476984730765, 1374),
(0.11855602046019094, 912),
(0.11826793727408907, 2664),
(0.11797129443799506, 147),
(0.11792307582322151, 1752),
(0.11792307582322151, 518),
(0.1177499125052935, 1838),
(0.11735274081083348, 2526),
(0.11728847189963591, 1299),
(0.11682555059780918, 702),
(0.11662484295496746, 3453),
(0.11615131711727657, 777),
(0.11608095184078544, 771),
(0.11598871515918448, 2677),
(0.11589077346213462, 1341),
(0.11572533411469992, 2492),
(0.11567709862499206, 2587),
(0.11567709862499206, 2077),
(0.11542281429727001, 2221),
(0.11525735836070924, 3389),
(0.11501634646006889, 2886),
(0.11501634646006889, 835),
(0.11449108387629879, 267),
(0.11419455143266674, 41),
(0.11410478259093633, 2499),
(0.11410478259093633, 636),
(0.11391082531008434, 1939),
(0.11379525876290054, 1779),
(0.11369189505531267, 3279),
(0.11359623354805377, 3362),
(0.11328311707861126, 1626),
(0.11309515954317759, 2033),
(0.11309203979609482, 1163),
(0.11306723080679525, 446),
(0.11300787365565511, 88),
(0.11281954183130295, 2799),
(0.1125643845359886, 359),
(0.1125643845359886, 87),
(0.11236486622722328, 1599),
(0.11236486622722328, 1462),
(0.11202792916061027, 1320),
(0.11168083926782998, 2088),
(0.1116425153114436, 801),
(0.11160861926991839, 2298),
(0.11095938208098642, 304),
(0.11091238300534989, 773),
(0.1100077175343078, 2162),
(0.10976564909688623, 1790),
(0.10961263739649914, 258),
(0.10941413976516044, 3488),
(0.10941413976516044, 2819),
(0.10941413976516044, 1828),
(0.10917777932688458, 723),
(0.10864303256976575, 747),
(0.10864303256976575, 148),
(0.10852304491119706, 1106),
(0.10844777870744055, 1289),
(0.10844777870744055, 619),
(0.10832336961288917, 2692),
(0.10832336961288917, 1454),
(0.10830603618528553, 84),
(0.10796991064699014, 1),
(0.10795721696924253, 2315),
(0.10795721696924253, 425),
(0.1077710568146692, 3317),
(0.1077710568146692, 2663),
(0.10769380388975194, 2008),
(0.10720615786237517, 583),
(0.10673796206207481, 888),
(0.10671454696616327, 601),
(0.10656205646300153, 201),
(0.1064891137904478, 1554),
(0.10637660107629578, 1759),
(0.10634735402569995, 3408),
(0.10626212376589807, 2386),
(0.10623995311965392, 3319),
(0.10622168812753784, 333),
(0.10615533943965197, 772),
(0.10595924232583608, 337),
(0.10595924232583608, 272),
(0.10508229441497294, 3028),
(0.10485989916431773, 2462),
(0.10473698952461245, 3086),
(0.10473698952461245, 434),
(0.10473698952461245, 381),
(0.10461042411497755, 3129),
(0.10461042411497755, 1233),
(0.10461042411497755, 764),
(0.10461042411497755, 79),
(0.10445117600612656, 3513),
(0.10445117600612656, 3143),
(0.10445117600612656, 401),
(0.1041925044133613, 1207),
(0.10388289797906243, 3088),
(0.10359537183826453, 2766),
(0.10359537183826453, 822),
(0.10357097224199376, 3528),
(0.10298171781942682, 3460),
(0.10261708591617978, 527),
(0.10237985140859761, 1290),
(0.10223721967543753, 863),
(0.10222967216366273, 582),
(0.10189163932285969, 903),
(0.10174059857006298, 31),
(0.1015489083625263, 696),
(0.10152723059467353, 1012),
(0.10132218984016486, 2342),
(0.10132218984016486, 1914),
(0.10132218984016486, 1568),
(0.10132218984016486, 562),
(0.10132218984016486, 257),
(0.10132218984016486, 227),
(0.10132218984016486, 169),
(0.10132218984016486, 5),
(0.10129687975732969, 2385),
(0.10126776819935551, 3117),
(0.10063103908292556, 284),
(0.10055954160111301, 3081),
(0.10031435374070032, 1260),
(0.10028094106951953, 1317),
(0.10027605850365232, 3072),
(0.1000059209109059, 2336),
(0.1000059209109059, 479),
(0.09995417863737927, 1670),
(0.09946866203075326, 299),
(0.09937460223662734, 1955),
(0.09937460223662734, 355),
(0.0991931372321024, 3367),
(0.0991931372321024, 3052),
(0.0991931372321024, 2987),
(0.0991931372321024, 614),
(0.09885234039929348, 1496),
(0.0985825853170792, 2753),
(0.09833844719113422, 3349),
(0.09833844719113422, 2118),
(0.09828284940929058, 900),
(0.09826909686300346, 2262),
(0.09826909686300346, 1765),
(0.09826909686300346, 904),
(0.09826909686300346, 652),
(0.09820798725090112, 2536),
(0.09820798725090112, 1967),
(0.0979795780346747, 2907),
(0.09782691886062657, 377),
(0.09760724210433858, 3516),
(0.09755885308766699, 3164),
(0.09755885308766699, 683),
(0.09730186511202356, 3329),
(0.09730186511202356, 1733),
(0.09730186511202356, 1226),
(0.097102913934461, 2625),
(0.09610978450473183, 2087),
(0.09582399417186592, 1439),
(0.09577717071956568, 47),
(0.09574004674208489, 2532),
(0.09567949353604623, 153),
(0.09563595118779827, 1248),
(0.09563595118779827, 800),
(0.0955218528925641, 2265),
(0.0954330687710674, 1715),
(0.09490960244197376, 3079),
(0.09479895154722345, 3167),
(0.09479895154722345, 2182),
(0.09464204684604893, 2919),
(0.09464204684604893, 1007),
(0.09464204684604893, 421),
(0.0945793543479756, 3346),
(0.0945793543479756, 3214),
(0.09456116933710224, 1829),
(0.09452473946342346, 736),
(0.09441875395888008, 3102),
(0.09441875395888008, 1541),
(0.09418492749174653, 52),
(0.0939222882360469, 3558),
(0.0939222882360469, 3419),
(0.0939222882360469, 2608),
(0.0939222882360469, 2598),
(0.09392068680284914, 3344),
(0.09392068680284914, 2173),
(0.09392068680284914, 1138),
(0.09392068680284914, 461),
(0.09392068680284914, 34),
(0.09379123891116847, 2584),
(0.09353081179807116, 3259),
(0.09353081179807116, 1302),
(0.09353081179807116, 293),
(0.09309370020530645, 2639),
(0.09309370020530645, 2294),
(0.09309370020530645, 2083),
(0.09309370020530645, 1944),
(0.09309370020530645, 162),
(0.09298771310954623, 741),
(0.09298771310954623, 140),
(0.09292587512205373, 1929),
(0.09289423937435062, 3561),
(0.09274784637141024, 3307),
(0.09274784637141024, 2126),
(0.09274784637141024, 2025),
(0.09274784637141024, 1418),
(0.09254637783999758, 217),
(0.09226460305753335, 3403),
(0.09226460305753335, 1687),
(0.09226460305753335, 1592),
(0.09192383607443329, 3315),
(0.09192383607443329, 875),
(0.09183495854900056, 2985),
(0.09183495854900056, 1596),
(0.09173493202889069, 1770),
(0.09173493202889069, 431),
(0.09173143027976542, 2876),
(0.09113344147288725, 3120),
(0.09060526255265101, 3381),
(0.09060526255265101, 2287),
(0.09060526255265101, 1836),
(0.09060526255265101, 1769),
(0.09050760723810075, 326),
(0.08995529378430658, 340),
(0.08987429575682436, 1969),
(0.08982977958803778, 1812),
(0.08974209619577075, 838),
(0.08963253567327513, 2169),
(0.08951903081805541, 2618),
(0.08947267121555101, 989),
(0.08926541208781298, 1369),
(0.0890462273393359, 893),
(0.0890462273393359, 482),
(0.0888304568052451, 1118),
(0.08864375178731801, 2759),
(0.08862582335907176, 3128),
(0.08856874594603148, 2408),
(0.08847924280717331, 3541),
(0.08847924280717331, 2706),
(0.08845733589313011, 1614),
(0.08843074951990057, 1330),
(0.08827578191477906, 2529),
(0.08827578191477906, 548),
(0.08811593995641924, 2768),
(0.08795612661377235, 1848),
(0.0878632294425667, 3204),
(0.0878632294425667, 2905),
(0.0877915209166029, 2732),
(0.08724002705412705, 3125),
(0.08681879523440901, 472),
(0.0867590941431764, 1371),
(0.08591449282742145, 3413),
(0.08591449282742145, 1793),
(0.08591449282742145, 439),
(0.08569361517932625, 2429),
(0.08569361517932625, 1886),
(0.08564019433508445, 2981),
(0.08564019433508445, 2571),
(0.08564019433508445, 1852),
(0.08564019433508445, 145),
(0.0855146046919488, 3001),
(0.08482470727509915, 107),
(0.08474214619355472, 291),
(0.08474214619355472, 92),
(0.08464630577025285, 1353),
(0.08447795462677392, 83),
(0.08442221636455624, 2373),
(0.08435306298004447, 3302),
(0.08435306298004447, 1842),
(0.08435306298004447, 885),
(0.08406143202879186, 961),
(0.08374180878487095, 2901),
(0.08352466261109656, 1451),
(0.08248922005074939, 1131),
(0.08238017336779274, 2415),
(0.08216565036306289, 922),
(0.08170778577083812, 503),
(0.08139930660843568, 749),
(0.0810873859250381, 2703),
(0.08099924967644831, 3375),
(0.08036733484765383, 103),
(0.08024334048387935, 1346),
(0.08024334048387935, 1055),
(0.08024334048387935, 828),
(0.07995951135307515, 2913),
(0.07995254170536943, 3142),
(0.07975739071961907, 1238),
(0.07961368503404338, 3145),
(0.07961368503404338, 1102),
(0.0791011342722481, 2629),
(0.07909734484039603, 375),
(0.07903458017917456, 960),
(0.07865148217479348, 1387),
(0.0779646282219197, 3122),
(0.0779646282219197, 350),
(0.07794818207773628, 2696),
(0.07791539520575948, 2197),
(0.07791539520575948, 1425),
(0.07791539520575948, 1410),
(0.07791539520575948, 1270),
(0.07791539520575948, 1209),
(0.07791539520575948, 1108),
(0.07777326253628294, 2052),
(0.07777326253628294, 954),
(0.07777326253628294, 812),
(0.07776976305397286, 435),
(0.0776760937385194, 3588),
(0.07766249907323657, 1286),
(0.0768120675986713, 979),
(0.07633605683651937, 1618),
(0.07610302341355955, 1345),
(0.07610302341355955, 1329),
(0.07610302341355955, 938),
(0.07610302341355955, 754),
(0.07610302341355955, 502),
(0.07493632088882671, 1281),
(0.07486036923106522, 3114),
(0.07486036923106522, 759),
(0.07479212341391864, 3109),
(0.07479212341391864, 1125),
(0.07479212341391864, 711),
(0.07479212341391864, 445),
(0.07479212341391864, 25),
(0.0744210537557175, 3470),
(0.0744210537557175, 1928),
(0.0744210537557175, 1280),
(0.0744210537557175, 1243),
(0.0744210537557175, 1018),
(0.0744210537557175, 708),
(0.0740577155592499, 726),
(0.07358418456629864, 1743),
(0.07309840122961515, 1219),
(0.07303416054815363, 252),
(0.07271877218739466, 3241),
(0.07184102679685105, 121),
(0.07182717404842677, 587),
(0.07177500880745105, 2964),
(0.07127209654963827, 120),
(0.07087579658806266, 1316),
(0.07069880693740326, 339),
(0.07068023149332683, 2306),
(0.07068023149332683, 253),
(0.07065433840741699, 1033),
(0.07058992698239872, 3555),
(0.07043170609309371, 360),
(0.07023970587779339, 1004),
(0.06996622272883518, 3203),
(0.06996622272883518, 1585),
(0.06996622272883518, 1581),
(0.06943213017724599, 1461),
(0.06931620630006176, 1538),
(0.06923101778513037, 1918),
(0.06921851239026898, 2146),
(0.06914996226685433, 2312),
(0.06911832282266693, 206),
(0.06905411184938241, 2212),
(0.06879868009883609, 1498),
(0.06879341064374712, 3369),
(0.06829991205551972, 485),
(0.06793743237297642, 3094),
(0.06793743237297642, 2568),
(0.06793743237297642, 2509),
(0.06793743237297642, 1624),
(0.06793743237297642, 1311),
(0.06793743237297642, 830),
(0.06793743237297642, 193),
(0.06771012152570943, 896),
(0.06760842116575855, 3518),
(0.06728576906303034, 3478),
(0.06728576906303034, 2945),
(0.06728576906303034, 2592),
(0.06728576906303034, 2586),
(0.06728576906303034, 1111),
(0.06726031274341861, 2835),
(0.0668936390304386, 3283),
(0.06683941035275678, 1153),
(0.06670561404578652, 3300),
(0.06670561404578652, 2952),
(0.06670561404578652, 2949),
(0.06670561404578652, 2890),
(0.06670561404578652, 2481),
(0.06670561404578652, 1070),
(0.06616432949033017, 3503),
(0.0660445367892345, 3515),
(0.06603516959037964, 3352),
(0.06603516959037964, 1701),
(0.06594330439800165, 3537),
(0.06529883585157686, 3418),
(0.06529883585157686, 2650),
(0.06466761703140791, 2780),
(0.06451756127861434, 2546),
(0.06412036684718043, 906),
(0.06406825327936377, 393),
(0.06389147199964199, 1562),
(0.06389147199964199, 547),
(0.06296277600534345, 1898),
(0.06295775824880319, 1832),
(0.06295775824880319, 1144),
(0.06273519650642477, 2108),
(0.06257557985594793, 2438),
(0.06250818347087828, 2543),
(0.06237266652354673, 1818),
(0.062097593396214186, 2744),
(0.06179423738961337, 925),
(0.06141211575679981, 2260),
(0.060781144623716234, 3570),
(0.06066322422717442, 2844),
(0.060370008276426454, 3338),
(0.06029861224248649, 2784),
(0.06029861224248649, 1986),
(0.06029861224248649, 1543),
(0.06005526613023247, 897),
(0.05947175378230543, 1763),
(0.05909565017478048, 1849),
(0.05909352311701952, 1352),
(0.058961537911610754, 3510),
(0.058961537911610754, 3055),
(0.058961537911610754, 2737),
(0.058961537911610754, 2292),
(0.058961537911610754, 1475),
(0.058958973694166104, 3589),
(0.058958973694166104, 2651),
(0.058958973694166104, 1731),
(0.058958973694166104, 474),
(0.05832232735424722, 484),
(0.05776314858186377, 2356),
(0.057539284349787875, 2724),
(0.057539284349787875, 2716),
(0.057539284349787875, 2272),
(0.057539284349787875, 1980),
(0.057539284349787875, 1713),
(0.057539284349787875, 1604),
(0.057539284349787875, 1449),
(0.057539284349787875, 75),
(0.057539284349787875, 61),
(0.05679666092137163, 997),
(0.05679666092137163, 580),
(0.056729924333008365, 2637),
(0.056729924333008365, 831),
(0.05655015464811865, 487),
(0.05652766823426947, 2030),
(0.05640871242395038, 735),
(0.05614386926874535, 758),
(0.0559063955350394, 3184),
(0.0559063955350394, 3031),
(0.0559063955350394, 2944),
(0.0559063955350394, 2647),
(0.0559063955350394, 2528),
(0.0559063955350394, 2261),
(0.0559063955350394, 1269),
(0.0559063955350394, 1109),
(0.0559063955350394, 554),
(0.055648783133438656, 1407),
(0.055648783133438656, 586),
(0.055646362986584645, 1466),
(0.05516895684450839, 2793),
(0.054882824548443114, 3173),
(0.054882824548443114, 2982),
(0.054882824548443114, 2845),
(0.054882824548443114, 2542),
(0.054882824548443114, 1756),
(0.054882824548443114, 899),
(0.054882824548443114, 681),
(0.054882824548443114, 285),
(0.05486846085587583, 3026),
(0.05484348857927268, 3469),
(0.05484348857927268, 3465),
(0.05484348857927268, 2989),
(0.05484348857927268, 2879),
(0.05484348857927268, 2754),
(0.05484348857927268, 2406),
(0.05484348857927268, 1730),
(0.05484348857927268, 1667),
(0.05484348857927268, 1665),
(0.05484348857927268, 1615),
(0.05484348857927268, 1471),
(0.05484348857927268, 1191),
(0.05484348857927268, 1100),
(0.05484348857927268, 1079),
(0.05484348857927268, 851),
(0.05484348857927268, 458),
(0.054487189903820656, 2204),
(0.05430643890657519, 138),
(0.054058095179772864, 944),
(0.054022724280419834, 3212),
(0.05402202766157935, 1762),
(0.0533750821753445, 1695),
(0.05306742820929221, 2192),
(0.05276529397122469, 2809),
(0.05276529397122469, 2057),
(0.05276529397122469, 1691),
(0.0523101884772147, 1923),
(0.05215992194245664, 1550),
(0.052012698561421676, 2377),
(0.052012698561421676, 1984),
(0.052012698561421676, 1039),
(0.052012698561421676, 149),
(0.05179923233388806, 3394),
(0.05179923233388806, 846),
(0.051762106456659567, 2863),
(0.051472967058906464, 1912),
(0.051217574472353734, 2778),
(0.05110058750877395, 2041),
(0.050966072229566624, 1630),
(0.05077445418126315, 3336),
(0.05077445418126315, 2656),
(0.05077445418126315, 2570),
(0.05077445418126315, 2522),
(0.05077445418126315, 2121),
(0.05077445418126315, 2045),
(0.05077445418126315, 2010),
(0.05077445418126315, 1726),
(0.05077445418126315, 1655),
(0.05077445418126315, 1509),
(0.05077445418126315, 1507),
(0.05077445418126315, 732),
(0.05077445418126315, 524),
(0.05077445418126315, 422),
(0.05077445418126315, 196),
(0.05077445418126315, 171),
(0.05077445418126315, 99),
(0.050539089094784995, 100),
(0.05053664694441642, 3568),
(0.050492996404728846, 2961),
(0.050036275129686114, 396),
(0.05003297559110967, 2029),
(0.04984891386860787, 917),
(0.04961138883973778, 143),
(0.04958598961322054, 3056),
(0.049575831047697035, 1283),
(0.048727246055628254, 2248),
(0.04872402143683834, 1101),
(0.047921690809483164, 1603),
(0.047921690809483164, 1321),
(0.047921690809483164, 1017),
(0.04791436558471306, 2622),
(0.04791436558471306, 1241),
(0.04770759660795472, 717),
(0.04694083335282966, 289),
(0.04677698779883914, 2757),
(0.04666642228091436, 2141),
(0.04647288993080121, 2484),
(0.04637599875831547, 2512),
(0.045897622985651414, 139),
(0.045799053702209366, 1344),
(0.04570679344810075, 2147),
(0.04516689835379344, 1172),
(0.04492238369553648, 1149),
(0.04452311366966795, 3051),
(0.04452311366966795, 2743),
(0.04452311366966795, 2535),
(0.04452311366966795, 1784),
(0.04452311366966795, 1780),
(0.04452311366966795, 1511),
(0.04452311366966795, 1245),
(0.04452311366966795, 520),
(0.04431291167953588, 3124),
(0.04431291167953588, 2471),
(0.04431291167953588, 2230),
(0.04431291167953588, 1380),
(0.04379233051095153, 3250),
(0.04370894283540041, 2372),
(0.04342726715205229, 477),
(0.04339655458297072, 1349),
(0.04289303347380985, 1420),
(0.04209795683366029, 2573),
(0.04202158194623495, 2401),
(0.04202158194623495, 1294),
(0.0419602893158302, 3107),
(0.04182319015766572, 3536),
(0.04182319015766572, 2839),
(0.04182319015766572, 2765),
(0.04182319015766572, 1597),
(0.04182319015766572, 475),
(0.04120970047603527, 2595),
(0.04118433740575306, 2043),
(0.0410712841055371, 3050),
(0.04099650527849089, 1442),
(0.04049252050189614, 1797),
(0.04024671694278536, 1938),
(0.040121670241939675, 3222),
(0.040121670241939675, 2395),
(0.040121670241939675, 1682),
(0.040121670241939675, 1195),
(0.040121670241939675, 844),
(0.040121670241939675, 294),
(0.040056704625578095, 1482),
(0.03984593632828475, 2878),
(0.03939272315558761, 3076),
(0.0390809923939327, 405),
(0.038398821000790784, 3545),
(0.03814509952790994, 1161),
(0.03801064136229472, 321),
(0.03786743367501903, 468),
(0.037566983103707936, 2969),
(0.03725182003350967, 1723),
(0.037238370858689175, 2767),
(0.03696154627105317, 3205),
(0.03679414699666566, 864),
(0.036268027377411485, 2345),
(0.035970320215902754, 3057),
(0.034899356647054146, 3270),
(0.03454974613444602, 2350),
(0.034383816197631145, 2436),
...]
마지막으로 index를 단어로 변환하여 "긍정 키워드 리스트"와 "부정 키워드 리스트"의 Top 20 단어를 출력해볼게요.
1 | invert_index_vectorizer = {v: k for k, v in vect.vocabulary_.items()} |
{2866: '집중',
3588: '휴식',
2696: '제공',
2311: '위치',
1584: '선정',
790: '또한',
2927: '청소',
2925: '청결',
1527: '상태',
2392: '이상',
3022: '침대',
2388: '이불',
3021: '침구',
299: '교체',
2013: '어메니티',
1296: '보강',
1277: '베스트',
2299: '웨스턴',
3564: '회원',
185: '경우',
106: '객실',
3009: '층수',
2234: '요청',
2606: '적극',
1188: '반영',
2837: '지인',
1629: '소개',
2910: '처음',
611: '당황',
1607: '세면',
675: '도구',
2555: '잠옷',
3358: '필수',
361: '그것',
2673: '정도',
578: '다음',
2074: '여기',
1171: '박만',
2595: '저녁',
981: '맥주',
3414: '한잔',
838: '렌트',
791: '뚜벅',
1159: '바로',
1247: '버스',
2676: '정류',
697: '도착',
24: '가방',
2487: '일찍',
2685: '정비',
1225: '방이',
2500: '입실',
2038: '업그레이드',
2849: '직원',
2680: '정말',
1148: '바다',
2623: '전망',
2636: '전일',
3425: '함덕',
624: '대명',
3091: '콘도',
1861: '실내',
1384: '분위기',
1659: '손님',
40: '가장',
1241: '배치',
651: '대해',
634: '대응',
1889: '써비스',
2730: '조식',
1351: '부분',
1838: '신경',
1922: '아주',
3208: '특급',
3191: '트랜디',
210: '고민',
3593: '흔적',
2082: '여름',
1700: '수영장',
1483: '사용',
1297: '보고',
2035: '엄마',
2: '가격',
627: '대비',
2769: '주위',
924: '마트',
1826: '식당',
1816: '시장',
1217: '방문',
2361: '의사',
726: '동안',
2695: '정해진',
3580: '휘슬',
269: '공항',
1539: '생각',
1809: '시설',
1028: '모두',
3017: '친절',
1029: '모드',
917: '마지막',
900: '마무리',
3156: '테라스',
2612: '전경',
2427: '인근',
2583: '재래시장',
1979: '야시장',
2402: '이용도',
2400: '이용',
2488: '일차',
3581: '휘슬락',
2940: '체크',
2761: '주변',
2094: '여친',
2975: '추억',
26: '가성',
2977: '추천',
3575: '후회',
2145: '예전',
372: '그랜드',
2605: '저희',
1918: '아이',
708: '돌잔치',
581: '다정',
3470: '했었더랬',
2642: '전통',
1004: '메종',
387: '글래드',
1563: '서비스',
969: '매우',
3428: '합리',
635: '대의',
1018: '명절',
1721: '숙박',
1928: '아티',
1243: '백미',
3061: '커피',
1280: '베이커리',
43: '가족',
3342: '플러스',
2816: '지금',
2257: '우선',
2664: '접근성',
1671: '쇼핑',
940: '만족도',
2957: '최고',
1078: '무엇',
423: '기억',
2251: '우리',
2902: '찾기',
300: '교통',
2418: '이틀',
2691: '정원',
109: '거기',
160: '겨울',
3016: '친구',
541: '놀러와',
3185: '투숙',
1981: '야외',
1235: '방향',
1976: '야간',
2726: '조명',
1723: '순간',
638: '대접',
1868: '실명',
112: '거론',
3337: '프론트',
2378: '이름',
1938: '안나',
416: '기분',
1037: '모습',
2921: '첫날',
1761: '스타트',
576: '다시',
1578: '선물',
3032: '카운터',
1939: '안내',
777: '디너',
438: '기회',
1121: '미니바',
1067: '무료',
2959: '최근',
281: '관광지',
1719: '숙고',
88: '강추',
1977: '야경',
2475: '일부러',
2476: '일어나서',
714: '동네',
1168: '바퀴',
990: '먹방',
1843: '신라',
3105: '퀄리티',
1024: '모녀',
2711: '제주시',
2313: '위해',
1586: '선택',
2180: '오픈',
2143: '예약',
622: '대로',
115: '거리',
657: '더군다나',
1627: '셔틀버스',
2271: '운행',
670: '데스크',
2880: '차안',
1374: '분도',
2438: '인상',
3201: '트윈',
1489: '사이즈',
939: '만족',
1758: '스타',
45: '가짓수',
558: '느낌',
3538: '화장실',
505: '내부',
2455: '인테리어',
2859: '질적',
2368: '이건',
100: '개인',
3005: '취향',
321: '구비',
273: '과일',
480: '나이프',
3295: '포크',
1364: '부탁',
2786: '준비',
3305: '표방',
1046: '모텔',
165: '결론',
3577: '훌륭',
1799: '시간',
1737: '슈페리어킹룸',
3376: '하루',
3570: '후기',
2836: '지은지',
2033: '얼마',
136: '건물',
1985: '약간',
2318: '유럽',
1760: '스타일',
378: '그림',
2715: '조각',
1323: '복도',
2633: '전시',
2630: '전부',
3039: '카펫',
770: '등급',
567: '다른',
2394: '이서',
2512: '자기',
2722: '조금',
2218: '외투',
2206: '완전',
2856: '진짜',
1626: '셔틀',
1127: '미리',
1821: '시티',
2162: '오름',
570: '다만',
680: '도로',
39: '가인',
276: '관계',
2876: '차량',
1638: '소리',
574: '다소',
1215: '방도',
3273: '편의점',
3027: '칫솔',
709: '동계',
3576: '훈련',
795: '라마',
2116: '연인',
2641: '전체',
1493: '사진',
2920: '첨부',
2064: '엘리베이터',
1873: '실시간',
1440: '비행기',
3151: '택시',
1128: '미만',
2374: '이동',
9: '가능',
2961: '최상',
2235: '욕실',
1791: '슬리퍼',
2304: '위생',
2123: '염려',
1590: '설날',
788: '떡국',
840: '려고',
3495: '현장',
167: '결재',
3559: '황스',
841: '려운',
2789: '중국',
932: '만두',
2744: '종류',
1293: '별로',
316: '구만',
996: '메뉴',
603: '답변',
2709: '제일',
2779: '주차',
131: '걱정',
3423: '할아버지',
1945: '안심',
3067: '컨디션',
1095: '문어',
2909: '처리',
3561: '회사',
2988: '출장',
1567: '서울',
64: '간혹',
2386: '이벤트',
3460: '해주시',
1344: '부대',
3435: '항상',
855: '롯데',
1434: '비지니스',
2097: '여행객',
1664: '손색',
2236: '욕조',
175: '겸비',
1459: '사계절',
1715: '수풀',
2794: '중문',
3306: '표선등',
2281: '원거리',
2101: '여행지',
1322: '복귀',
1805: '시내',
2323: '유명',
2462: '일단',
2781: '주차장',
2844: '지하',
246: '공간',
2356: '응대',
1097: '문의사항',
1850: '신지',
71: '감동',
2106: '역시',
2566: '장도',
807: '락타',
1550: '샤워',
896: '마련',
3089: '코인',
1620: '세탁실',
2167: '오션',
994: '멀리',
497: '남자친구',
665: '덕분',
2385: '이번',
3331: '프런트',
1239: '배정',
2415: '이착륙',
3120: '클리닝',
382: '근무',
1923: '아주머니',
2436: '인사',
3085: '코로나',
1496: '사태',
535: '노화',
1286: '벽지',
2756: '주름',
2814: '지고',
3133: '타일',
4: '가구',
3082: '코너',
243: '곳곳이',
279: '관광객',
2449: '인지',
1463: '사람',
1369: '북적',
2627: '전반',
284: '관리',
3274: '편이',
3346: '피드백',
3276: '편입',
686: '도시',
278: '관광',
3214: '특화',
2834: '지역',
385: '근처',
3034: '카페',
6: '가기',
221: '고유',
3210: '특색',
1768: '스테이',
10: '가도',
1759: '스타벅스',
1263: '번화가',
1924: '아침',
3057: '커서',
1224: '방음',
988: '먹거리',
588: '단점',
797: '라면',
2170: '오심',
2411: '이중',
3523: '혼자',
157: '겐찮은듯',
563: '다그',
694: '도일',
456: '께빵',
2793: '중국인',
3127: '타고',
556: '눈앞',
44: '가지',
3598: '힐링',
3354: '피트니스',
3254: '패키지',
1122: '미닫이',
847: '로비',
1421: '비롯',
1030: '모든',
52: '각종',
1103: '물건',
1926: '아침식사',
1207: '밥맛',
3349: '피아노',
2118: '연주',
867: '룸타입',
3250: '패밀리',
121: '거실',
3412: '한실',
1562: '서부',
1690: '수산시장',
1534: '새벽',
182: '경매',
304: '구경',
2972: '추가',
2022: '어차피',
3496: '현재',
1090: '묵고',
2453: '인터넷',
2840: '지정',
1952: '안해',
3330: '프런터',
1096: '문의',
2135: '영화',
1810: '시스템',
3219: '티브이',
2903: '채널',
1020: '몇개',
3092: '콘센트',
3341: '플러그',
2201: '와이프',
2995: '충전',
168: '결정',
594: '달라',
190: '경험',
2579: '장점',
2439: '인생',
2966: '최악',
2797: '중심',
1153: '바닷가',
1413: '비교',
3275: '편임',
3408: '한번',
2146: '예정',
3585: '휴가',
1750: '스위트룸',
2322: '유리창',
2312: '위트',
3050: '캠핑',
3160: '테이블',
1621: '세트',
3161: '텐트',
2054: '에어컨',
2543: '작은방',
975: '매트',
2520: '자리',
3142: '탑동',
263: '공원',
3338: '프리',
923: '마켓',
259: '공연',
971: '매일',
1833: '식사',
282: '관덕정',
2682: '정문',
684: '도보',
1645: '소요',
3458: '해장국',
717: '동문',
1560: '서문시장',
1047: '목관',
960: '맞은편',
1792: '슬슬',
1291: '별관',
1330: '본관',
68: '갈수',
2965: '최신',
377: '그린',
3545: '환경',
787: '때문',
1292: '별도',
641: '대중교통',
317: '구매',
1882: '심플',
1438: '비품',
3205: '트윈침대',
1763: '스탠다드',
548: '높이',
3404: '한라산',
525: '노곤',
3152: '터미널',
2189: '온돌룸',
1608: '세면대',
1114: '물이',
3013: '치약',
150: '것임',
1545: '생수',
3550: '환승',
231: '곧바로',
710: '동광양',
2677: '정류장',
1818: '시청',
1771: '스텝',
3502: '협소하',
130: '거품',
3131: '타월',
3537: '화장',
612: '대가',
123: '거울',
1670: '쇼파',
2739: '조합',
395: '금액',
2780: '주차공간',
267: '공터',
3150: '태풍',
104: '개층',
2184: '오후',
3409: '한시',
1485: '사우나',
1349: '부모님',
3422: '할머니',
1038: '모시',
197: '계획',
2464: '일로',
1445: '빠듯해',
2004: '어디',
441: '길가',
235: '골목길',
2377: '이륙',
2887: '착륙',
1310: '보이',
363: '그냥',
2469: '일반',
633: '대욕',
3489: '헬스장',
19: '가면',
206: '고려',
837: '렌터카',
2496: '입구',
1182: '반대쪽',
3416: '한정',
591: '단체',
660: '더블',
2708: '제외',
2088: '여유',
1183: '반대편',
688: '도심',
1387: '불구',
1648: '소음',
125: '거의',
1609: '세명',
3199: '트리플',
2618: '전날',
495: '남아',
2534: '자체',
610: '당일',
2683: '정보',
3468: '햇반',
2580: '장조림',
2637: '전자',
831: '레인지',
33: '가야',
1610: '세미나',
3400: '한국인',
369: '그대로',
469: '나름',
2697: '제과점',
2670: '정거장',
1022: '모기',
944: '만해',
898: '마리',
16: '가량',
1222: '방안',
2058: '에프킬라',
1435: '비치',
195: '계속',
1456: '뿌리',
2557: '잡고',
2891: '찬장',
2915: '천장',
242: '곳곳',
3008: '측은',
1265: '벌레',
414: '기본',
2223: '요금',
135: '건너편',
1262: '번호',
1538: '샐러드',
2349: '음식',
326: '구성',
2629: '전복죽',
2601: '저번',
3464: '핸드폰',
2996: '충전기',
1400: '불편',
1622: '센터',
256: '공사',
1720: '숙면',
1061: '무난',
528: '노력',
2826: '지불',
1430: '비용',
845: '로맨틱',
702: '독립',
1368: '북유럽',
2321: '유리',
3059: '커튼',
1145: '바깥',
1595: '설치',
1025: '모던',
1418: '비데',
3569: '효율',
2451: '인치',
1512: '삼성',
927: '만끽',
3270: '편안함',
2091: '여정',
1151: '바닥',
1052: '목적',
3060: '커플',
464: '끼리',
2852: '직진',
2268: '운전',
261: '공영',
1962: '애기',
1074: '무선인터넷',
80: '갑자기',
1568: '서전',
3432: '항공',
562: '다가',
5: '가급',
169: '결제',
2342: '은방',
1533: '상황',
1914: '아시',
227: '고트',
2822: '지도',
1614: '세심',
257: '공시',
1815: '시작',
982: '맥주잔',
3102: '쿠폰',
2463: '일도',
3108: '크기',
864: '룸서비스',
2690: '정신',
3277: '평가',
3272: '편의',
2233: '요즘',
2078: '여러',
2848: '직언',
1412: '블룸',
1288: '변기',
1115: '물질',
1997: '얘기',
1675: '수건',
3548: '환불',
2293: '월일',
3313: '푸른',
3223: '파도',
2918: '철썩',
3320: '풍경',
1544: '생선회',
2573: '장소',
543: '놀이',
1989: '양도',
735: '돼지',
2613: '전골',
970: '매운탕',
3512: '형편',
1406: '브런치',
751: '뒤쪽',
956: '맛집',
2869: '쭈욱',
79: '갑인',
764: '드타',
1233: '방파제',
3567: '횟집',
3129: '타운',
3448: '해산물',
356: '규모',
7: '가까이',
2008: '어르신',
454: '깨끗',
629: '대신',
2538: '작고',
1697: '수영',
1912: '아쉬움',
2430: '인도',
1634: '소독약',
1745: '스비',
3525: '홀로',
775: '등정후',
1365: '부터',
3520: '혹시',
3543: '확인',
2645: '전화',
3180: '통해',
3582: '휘트니',
2266: '운동복',
1698: '수영모',
219: '고오',
1157: '바람',
631: '대여',
2093: '여직원',
1077: '무시',
951: '말투',
2284: '원래',
2700: '제로',
2267: '운영',
2470: '일반인',
2503: '입장',
1583: '선심',
3360: '필요',
430: '기전',
620: '대뜸',
3528: '화가',
200: '고객',
3343: '플레인',
1800: '시경',
1917: '아웃',
3382: '하야',
998: '메리어트',
2081: '여럿',
2397: '이어도',
1707: '수준',
2370: '이군',
1867: '실망',
2747: '종일',
880: '리셉션',
3070: '컨시어',
3147: '태도',
2319: '유료',
1460: '사고',
3393: '학생',
1580: '선생님',
2005: '어딘',
1498: '사항',
1075: '무슨',
128: '거지',
879: '리빙룸',
3368: '하나요',
3202: '트윈룸',
1065: '무려',
156: '게재',
1869: '실물',
2881: '차이',
1879: '실화',
3231: '파우더',
240: '곰팡이',
2511: '자국',
2539: '작동',
233: '골드스타',
517: '냉장고',
2649: '절대',
826: '레스토랑',
2513: '자꾸',
2687: '정색',
1510: '살짝',
1561: '서버',
669: '데리',
32: '가신',
470: '나머지',
1105: '물기',
2851: '직접',
2931: '체계',
2048: '엉망',
1630: '소규모',
1803: '시기',
910: '마음',
886: '리트',
794: '라그',
409: '기대',
1862: '실내수영장',
1701: '수온',
1749: '스위트',
1427: '비수',
1515: '상대',
536: '노후',
2669: '정가',
1072: '무리',
3424: '할인',
3473: '행사',
2893: '참고',
3298: '포함',
913: '마일리지',
650: '대한항공',
3377: '하룻밤',
3542: '확실',
2115: '연식',
201: '고급',
2280: '원가',
1566: '서우',
3453: '해수욕장',
3402: '한눈',
2900: '창문',
161: '겨울철',
2187: '온도',
870: '리기',
1214: '방기',
725: '동시',
1221: '방식',
621: '대략',
695: '도정',
1352: '부스',
2137: '옆방',
3220: '티비',
3001: '취침',
2946: '초등학생',
1996: '양호',
3411: '한식당',
2875: '차라리',
1184: '반드시',
3107: '크게',
1896: '씨유',
674: '델문',
3035: '카페나',
3452: '해수욕',
2969: '최적',
778: '디럭스',
1203: '발코니',
1034: '모로',
3203: '트윈룸입니',
1585: '선착순',
2142: '예술',
1106: '물놀이',
1031: '모래',
3352: '피크',
1817: '시즌',
491: '날씨',
1581: '선선',
381: '근래',
3269: '편리',
3086: '코르',
434: '기지',
1481: '사양',
2782: '주체',
302: '교회',
2653: '절반',
2440: '인수',
1314: '보임',
1927: '아트',
2976: '추정',
3333: '프로',
3264: '페셔',
2432: '인력',
976: '매트리스',
472: '나무',
3482: '허리',
1934: '안감',
3447: '해변',
2275: '워낙',
31: '가시',
2757: '주말',
3397: '한국',
1270: '벚꽃',
403: '기간',
3503: '협재',
2197: '옹포',
1209: '밥집',
1505: '산책',
860: '루프',
1425: '비바람',
1396: '불어',
1410: '블로거',
1108: '물떄',
360: '그거',
2308: '위주',
3317: '풀이',
2192: '온수',
1133: '미온수',
1132: '미온',
2536: '자쿠지',
2551: '잠깐',
2458: '인피니트',
3549: '환상',
3365: '하나',
1782: '스페',
3015: '치킨',
1446: '빠에야',
1779: '스파',
333: '구조',
1780: '스파룸',
2535: '자쿠',
2401: '이용권',
3371: '하니',
1487: '사이',
1820: '시트',
2678: '정리',
1511: '삼다수',
1294: '병과',
520: '네스프레소',
3051: '캡슐',
2089: '여자',
3347: '피로',
1784: '스페인',
2132: '영업',
2743: '종료',
1245: '버거',
2161: '오른쪽',
893: '마담',
482: '나탈리',
2351: '음악',
3362: '필터',
1875: '실외수영장',
147: '검색',
2186: '옥상',
164: '결과',
653: '대형',
942: '만큼',
1260: '번잡',
98: '개수대',
2407: '이전',
1909: '아무',
884: '리지',
2714: '제한',
189: '경치',
2403: '이웃',
2467: '일몰',
1877: '실제',
883: '리조트',
3527: '홍보',
1529: '상통',
3532: '화산',
1166: '바위',
2686: '정상',
431: '기점',
1770: '스템',
2556: '잠자리',
435: '기타',
1359: '부족함',
444: '길이',
582: '다행',
2792: '중국어',
2131: '영어',
692: '도움',
3438: '해결',
1053: '목적지',
3461: '해피',
2346: '음료',
1488: '사이다',
2764: '주스',
592: '달걀',
3014: '치즈',
3597: '히터',
3187: '투어',
3515: '호스텔',
2858: '질문',
1530: '상품',
270: '과거',
154: '게스트하우스',
2510: '자고',
2150: '오기',
2479: '일이',
1201: '발전',
2141: '예상',
3165: '토스터',
2424: '이후',
1635: '소등',
1399: '불키',
2733: '조용조',
1232: '방키',
218: '고여',
496: '남자',
1946: '안전',
2878: '차로',
2373: '이내',
1403: '뷔페',
2076: '여느',
856: '롯데리아',
1216: '방만',
224: '고정',
1060: '무궁화',
1676: '수기',
1490: '사이트',
3526: '홈페이지',
921: '마치',
1088: '무척',
2617: '전기차',
134: '건너',
402: '급속',
1628: '소가',
2333: '유치원',
2784: '주택가',
...}
1 | for coef in coef_pos_index[:20]: |
방문 1.2644550507381787
이용 0.9079356150239053
바다 0.895609472071521
조식 0.8859075267474583
가족 0.8795111499693716
가성 0.8541915649753757
다음 0.8362541212560809
최고 0.7714811231976703
사장 0.7375280889735719
맛집 0.7203390936359615
추천 0.6503260268852225
거리 0.6488836121942877
마음 0.6467914172687944
바로 0.6264469987695738
리조트 0.5943145305412955
출장 0.5505354129422678
도움 0.5294632094678557
인테리어 0.5240729254152497
아주 0.5207834696883535
의사 0.5153917648445299
1 | for coef in coef_neg_index[:20]: |
예약 -0.9945592515966041
냄새 -0.9190158099937462
다른 -0.8672956005075485
침대 -0.7519681298547074
보이 -0.7201222787741572
최악 -0.7142499739127354
에어컨 -0.6786616478611768
별로 -0.6742178511586063
찾기 -0.6584721911054098
취소 -0.6464141509409321
사람 -0.6451323735594592
정도 -0.6240099604615805
사진 -0.6089303470147718
대부분 -0.5889712626646347
다시 -0.5601302753897155
대해 -0.5518124209379022
노후 -0.5484791097700695
느낌 -0.5423970967095598
필요 -0.5413974621071783
문제 -0.5287746123667489
키워드를 살펴보면:
- 이용객들이 보통 제주 호텔의 바다뷰 혹은 바다 접근성, 주변 맛집 그리고 인테리어 등에 만족하는 것으로 보입니다.
- 하지만 숙소의 냄새 그리고 침대, 에어컨 등 시설의 상태가 많이 아쉬워 보이고 개선이 필요해보입니다.


