# data[].attributes.headline
텍스트마이닝-감정분석에 관한 일반적 설명

# data[].attributes.subject
텍스트마이닝-감정분석에 관한 일반적 설명

# data[].attributes.body
https://r2bit.com/book_tm/sentiment.html

# data[].attributes.attachment_link.readable_text
감정어 빈도

단어가 모여 문서가 되고 문서를 모아 말뭉치를 구성한다. 문서나 말뭉치에 내재된 감성(sentiment) 을 찾아내기 위해 크게 3가지 방식의 접근법이 많이 활용되고 있다.

사전방식: 말뭉치에서 많이 사용된 일군의 단어집단의 빈도 계산. 감정사전을 이용하면 감정어 빈도를 구할 수 있다.

tf_idf: 말뭉치의 문서별로 중요하게 사용된 단어의 빈도 계산

주제모형(topic modeling): 말뭉치에서 주제를 나타내는 단어의 분포 계산

사전방식은 말뭉치에서 많이 사용된 일군의 단어를 사전으로 만들어 해당 단어 집단의 빈도 계산.

감정사전: 각 단어를 감정에 따라 분류

도덕기반사전: 각 단어를 도덕감정에 따라 분류

LIWC(Linguistic Inquiry and Word Count): 일상에서 사용하는 단어를 통해 생각, 느낌 등의 심리 측정. 상용.

영문 감정사전

tidytext 팩키지에 감성어 사전(sentiment lexicon)이 3개 포함되어 있다. get_sentiments() 함수에 다음 감성어 사전을 인자로 넣어 깔끔한 텍스트 데이터프레밍과 inner_join하여 텍스트에 포하된 감성을 계량화한다.

afinn: 개발자 Finn Årup Nielsen

bing: 개발자 Bing Liu와 기여자

nrc: 개발자 Saif Mohammad, Peter Turney

텍스트 데이터를 토큰화 과정을 거쳐 데이터프레임으로 변환시키고 나서 영문 사전과 결합해서 감성 총합을 계산한다. 그리고 나서 ggplot 을 통해 시각화하는 것이 일반적인 작업흐름이다.

## 국문 감정사전

KNU한국어감성사전은 군산대 소프트웨어융합공학과 Data Intelligence Lab에서 개발한 한국어감정사전이다. 표준국어대사전을 구성하는 각 단어의 뜻풀이를 분석하여 긍부정어를 추출했다. 보편적인 기본 감정 표현을 나타내는 긍부정어로 구성된다. 보편적인 긍정 표현으로는 '감동받다', '가치 있다', '감사하다'와 보편적인 부정 표현으로는 '그저 그렇다', '도저히 ~수 없다', '열 받다' 등이 있다. 이 사전을 토대로 각 영역(음식, 여행지 등)별 감정사전을 구축하는 기초 자료로 활용할 수 있다. KNU한국어감성사전 은 다음 자료를 통합해 개발했다.

1. 국립국어원 표준국어대사전의 뜻풀이(glosses) 분석을 통한 긍부정 추출(이 방법을 통해 대부분의 긍부정어 추출)

2. 김은영(2004)의 긍부정어 목록

3. SentiWordNet 및 SenticNet-5.0에서 주로 사용되는 긍부정어 번역

4. 최근 온라인에서 많이 사용되는 축약어 및 긍부정 이모티콘 목록

위 자료를 통합해 총 1만4천여개의 1-gram, 2-gram, 관용구, 문형, 축약어, 이모티콘 등에 대한 긍정, 중립, 부정 판별 및 정도(degree)의 값 계산했다.

## [[1]] ## [1] TRUE ## ## [[2]] ## [1] TRUE ## ## [[3]] ## [1] TRUE ## ## [[4]] ## [1] TRUE

KNU한국어감정사전을 다운로드 받아 압축을 풀어 데이터프레임 "senti_dic_df"에 할당하자.

먼저 파일을 data폴더에 다운로드해 knusenti.zip 파일로 저장한다.

다운로드받은 knusenti.zip파일을 압축해제해 필요한 사전자료의 위치를 파악한다. data/KnuSentiLex-master 폴더에 있는 파일의 종류를 탐색한다.

SentiWord_Dict.txt가 사전내용이 들어있는 파일이다. 9번째 있으므로, 이를 선택해 R환경으로 이입하자. list.files() 함수는 지정된 디렉토리 파일과 디렉토리 정보를 알려준다. full.names = TRUE 인자를 함께 넣어주면 파일과 디렉토리를 결합하여 주기 때문에 경우에 따라 타이핑을 줄일 수 있다.

## [1] "(-;\t1" "(;_;)\t-1" "(^^)\t1" "(^-^)\t1" ## [5] "(^^*\t1" "(^_^)\t1" "(^_^;\t-1" "(^o^)\t1" ## [9] "(-_-)\t-1" "(T_T)\t-1"

개별 요소와 요소 사이가 공백문자로 구분돼 있다.

요소를 구분한 공백문자는 탭(\t)이다. read_tsv 로 이입해 내용을 검토하자.

senti_dic_df에 할당하자. glimpse() 함수로 감성사전 데이터프레임을 살펴보고, 첫 5행을 출력해서 함께 살펴본다.

## Rows: 14,855 ## Columns: 2 ## $ X1 <chr> "(-;", "(;_;)", "(^^)", "(^-^)", "(^^*", "(^_^)... ## $ X2 <dbl> 1, -1, 1, 1, 1, 1, -1, 1, -1, -1, -1, -1, 1, 1,...

## # A tibble: 5 × 2 ## X1 X2 ## <chr> <dbl> ## 1 (-; 1 ## 2 (;_;) -1 ## 3 (^^) 1 ## 4 (^-^) 1 ## 5 (^^* 1

열의 이름을 내용에 맞게 변경하자. 감정단어의 열은 word로, 감정점수의 열은 sScore 로 변경.

## Rows: 14,855 ## Columns: 2 ## $ word <chr> "(-;", "(;_;)", "(^^)", "(^-^)", "(^^*", "(... ## $ sScore <dbl> 1, -1, 1, 1, 1, 1, -1, 1, -1, -1, -1, -1, 1...

이제 KNU한국어감성사전 을 R환경에서 사용할 수 있다.

KNU감성사전에 포함된 긍정단어와 부정단어를 살펴보자.

## # A tibble: 2,603 × 2 ## word sScore ## <chr> <dbl> ## 1 가능성이 늘어나다 2 ## 2 가능성이 있다고 2 ## 3 가능하다 2 ## 4 가볍고 상쾌하다 2 ## 5 가볍고 상쾌한 2 ## 6 가볍고 시원하게 2 ## # ... with 2,597 more rows

각 감정점수별로 단어의 수를 계산해보자. 텍스트를 데이터프레임으로 변환하는 과정에서 "갈등 -1" 단어가 제대로 파싱되어 데이터프레임에 반영되지 않아 이를 바로잡는 코드를 추가한다.

감정점수가 -2 ~ 2까지 정수로 부여돼 있다. 이를 3단계로 줄여 각각 '긍정, 중립, 부정'으로 명칭을 바꾸자.

## # A tibble: 3 × 2 ## emotion n ## <chr> <int> ## 1 negative 9830 ## 2 neutral 154 ## 3 positive 4871

원데이터 sScore 열에 결측값이 한 행에 있다. 감정단어와 감정값 사이에 \t이 아닌 기호로 분리돼 있었기 때문이다. 결측값이 있는 행을 제거하고, add_row() 함수를 사용해서 해당 내용을 추가하는 방법도 있다.

연습

헌번전문을 토큰화한 다음, 긍정어와 부정어의 빈도를 계산하려고 한다. 이를 위해 토큰화한 헌법전문과 KNU한국어감성사전을 결합해 감정 단어만 추려내려 한다. 다음 중 어느 결합을 이용해야 하는가? 왜?

semi_join

anti_join

inner_join

left_join

right_join

full_join

위에서 선택한 _join으로 KNU한국어감성사전을 이용해 헌법전문에서 긍정어와 부정어를 추출하자.

## # A tibble: 2 × 2 ## word sScore ## <chr> <dbl> ## 1 조화를 2 ## 2 행복을 2

형태소를 추출해 분석해보자. RcppMeCab 사용

## # A tibble: 5 × 3 ## word morph sScore ## <chr> <chr> <dbl> ## 1 조화 nng 2 ## 2 능력 nng 1 ## 3 향상 nng 1 ## 4 안전 nng 2 ## 5 행복 nng 2

헌법 전문의 감정점수를 구해보자.

## # A tibble: 1 × 1 ## score ## <dbl> ## 1 8

소설 감정분석

소설과 같은 긴 문서를 데이터로 감성분석 작업을 수행한다.

한글소설을 모아놓은 직지프로젝트 파일을 다운로드 받는다.

다운로드받은 epub 파일을 R환경으로 이입해 데이터구조를 살핀다.

## Rows: 1 ## Columns: 8 ## $ identifier <chr> "urn:uuid:15037ed1-7721-4f33-8534-f6a74... ## $ title <chr> "직지 프로젝트|직지프로텍트" ## $ creator <chr> "수학방" ## $ language <chr> "ko" ## $ date <chr> "2013-05-10" ## $ rights <chr> "크리에이티브 커먼즈 저작자표시-비영리-... ## $ source <chr> "직지프로젝트(http://www.jikji.org)" ## $ data <list> [<tbl_df[93 x 4]>]

데이터는 리스트구조의 data열 안의 93행 4열의 데이터프레임에 저장돼 있다. data 열만 선택하고 unnest() 함수로 리스트를 풀어 일반적인 데이터프레임으로 변환한 뒤에 글자수 기준으로 역정렬한다.

text 열에 93편의 소설 본문이 들어있다. 자료구조가 데이터프레임을 확장한 티블(tibble)이라 후속 텍스트 정제나 분석작업에 필요한 소설이 텍스트 형태로 어떻게 담겨있고 몇개나 있는지 쉽게 파악된다.

소설 제목, 지은이, 출전, 본문을 추출해보자. transmute() 함수는 mutate() 함수와 동일한 기능을 수행하나 변환작업에 관련된 변수만 남긴다는 점에서 이번 작업에 적합하다. 제목, 지은이 등 변수를 text 칼럼을 원자료로 삼아 str_extract() 함수와 정규표현식을 결합하여 필요한 정보만 추출한다.

데이터프레임에 저장하자. 마지막 4행은 소설본문이 아니므로 제외하고 저장.

## Rows: 89 ## Columns: 4 ## $ title <chr> "17원 50전(十七圓五十錢)--- 젋은 화가 A의 ... ## $ author <chr> "나도향", "현진건", "나혜석", "나도향", "현... ## $ source <chr> "개벽, <1923", "조선문단 5호 <1925", NA, "... ## $ main <chr> " 첫 째 사랑하시는 C선생님께 어린 심정에서 ...

비슷한 길이의 소설 1편씩 추출해보자.

## # A tibble: 2 × 4 ## title author source main ## <chr> <chr> <chr> <chr> ## 1 권태 이상 NA " 1 어서, 차라리 어둬버... ## 2 규원 나혜석 신가정1, 1921년 7월 " 때는 정히 오월 중순이...

9번째와 10번째 소설의 길이가 둘다 21000자로 비슷하다. 이상의 '권태'와 나혜석의 '규원'이다.

두 편의 소설은 웹에서도 볼수 있다.

일제식민지 시기 지식인의 무기력함과 좌절을 여름날 벽촌에서의 권태로운 생활에 대한 묘사를 통해 나타낸 수필.

1921년 여성 최초의 서양화가이자 소설가 나혜석의 단편소설. 양반집 규수였던 여인이 사랑하는 이에에 버림받은 한을 여성 특유의 섬세한 표현으로 그린 단편. 규수의 원한이라 규원.

감정어휘 빈도를 계산해 두 문서에 감정을 분석해보자.

형태소를 분석해 감정을 분석해 보자. RcppMeCab의 pos()함수를 이용하자.

형태소를 분석한 결과를 통해 나타난 두 문서의 감정이 조금 더 긍정적으로 변했다. 형태소분석하면서 부정어휘로 구분됐던 단어들이 한글자로 분리돼 불용어로 제거된 결과다.

'권태'와 '규원'의 감정점수를 비교해 어느 글이 더 부정적인지 살펴보자. 각 토큰에 감정점수 부여한다. 감정사전에 없는 단어를 남겨두기 위해 left_join()이용

감정단어를 극성별로 분류하자. 사전의 감정점수가 5수준으로 돼 있는 것을 3수준으로 줄인다.

## # A tibble: 4 × 2 ## sScore n ## <chr> <int> ## 1 긍정 39 ## 2 부정 174 ## 3 중립 11 ## 4 NA 5735

'권태'와 '규원' 두소설의 감정점수 계산하면 다음과 같다.

## # A tibble: 2 × 2 ## title emotion ## <chr> <dbl> ## 1 권태 -90 ## 2 규원 -91

감정사전에서 긍정감정 단어와 부정단어를 각각 긍정단어 사전과 부정단어 사전을 만들어보자.

## # A tibble: 2 × 1 ## sScore ## <dbl> ## 1 1 ## 2 2

## # A tibble: 2 × 1 ## sScore ## <dbl> ## 1 -1 ## 2 -2

긍정어 사전과 부정어 사전을 결합하여 두 소설에 포함된 단어 감성빈도를 계산해보자.

## # A tibble: 32 × 3 ## author word n ## <chr> <chr> <int> ## 1 이상 귀여운 3 ## 2 이상 잘 3 ## 3 나혜석 사랑으로 2 ## 4 나혜석 잘 2 ## 5 이상 좋다 2 ## 6 나혜석 고쳐 1 ## # ... with 26 more rows

## # A tibble: 93 × 3 ## author word n ## <chr> <chr> <int> ## 1 이상 없다 30 ## 2 나혜석 해 11 ## 3 이상 권태 7 ## 4 나혜석 못하고 5 ## 5 이상 답답한 4 ## 6 이상 모르는 4 ## # ... with 87 more rows

문장 단위로 토큰화하고, row_number()를 이용해 각 문장단위로 번호를 부여한다.

5수준인 감정사전의 감정점수를 긍정과 부정 등 2수준으로 축소하자.

긍정감정과 부정감정의 차이를 계산한다. 지은이를 기준으로 각 문장(행)별로 감정의 빈도를 계산하면, 글의 진행에 따른 감정의 변화를 나타낼 수 있다. 그런데, 개별 문장에는 감정어가 들어있는 빈도가 적기 때문에, 여러 문장을 하나의 단위로 묶을 필요가 있다. 이를 위해 몫만을 취하는 정수 나눗셈(%/%)활용.

## [1] 0.05 0.50 1.00 1.50 2.00 2.50

## [1] 0 0 1 1 2 2

여러 행을 묶지 않고 지은이 별로 감정어의 빈도를 계산하면 334행에는 긍정단어 2개, 부정단어가 1개 있음을 알수 있다.

## # A tibble: 190 × 4 ## author index emotion n ## <chr> <int> <chr> <int> ## 1 나혜석 334 긍정 2 ## 2 나혜석 334 부정 1 ## 3 나혜석 335 부정 1 ## 4 나혜석 336 부정 1 ## 5 나혜석 336 중립 1 ## 6 나혜석 338 긍정 1 ## # ... with 184 more rows

각 행을 10으로 정수나눗셈을 하면 10개 행씩 모두 같은 값으로 묶을 수 있다. 334행부터 339행인 33이 된다. 긍정단어와 부정단어도 각각 5개가 된다.

## # A tibble: 89 × 4 ## author index emotion n ## <chr> <dbl> <chr> <int> ## 1 나혜석 33 긍정 5 ## 2 나혜석 33 부정 5 ## 3 나혜석 33 중립 2 ## 4 나혜석 34 긍정 2 ## 5 나혜석 34 부정 8 ## 6 나혜석 35 긍정 1 ## # ... with 83 more rows

긍정감정 점수에서 부정감정 점수를 빼 감정의 상대강도를 계산하기 위해 감정의 값을 열의 제목으로 만들고, 각 감정어 빈도를 해당 열의 값으로 할당한다. 감정어가 없어 결측값이 나올수 있으므로, values_fill = 인자로 '0'을 할당한다.

막대도표로 소설 전개에 따른 감성변화를 시각화한다.

# data[].attributes.attachment_link.title
9 . 감성분석 | R 텍스트마이닝

# data[].attributes.attachment_link.description
9.1 감정어 빈도 단어가 모여 문서가 되고 문서를 모아 말뭉치를 구성한다. 문서나 말뭉치에 내재된 감성(sentiment)을 찾아내기 위해 크게 3가지 방식의 접근법이 많이 활용되고 있다. 사전방식: 말뭉치에서 많이 사용된 일군의 단어집단의 빈도 계산. 감정사전을 이용하면 감정어 빈도를 구할 수 있다. tf_idf: 말뭉치의 문서별로 중요하게...

# data[].attributes.headline
문장의 감정 점수 계산 코드

# data[].attributes.subject
문장의 감정 점수 계산 코드

# data[].attributes.attachment_link.readable_text
한국어 감성분석 사전을 활용하여 문장의 감성점수를 구하는 파이썬 코드를 소개해드리겠습니다.

KoNLPy 패키지에서 제공하는 Komoran 형태소 분석기와 한국어 감성분석 사전인 KNU 한국어 감성사전을 함께 사용하여 문장의 감성점수를 계산할 수 있습니다.

먼저, 필요한 패키지를 import 합니다.

from konlpy.tag import Komoran import pandas as pd

komoran = Komoran() sentiment_file = 'KNU한국어감성사전.txt' sentiment_df = pd.read_csv(sentiment_file, delimiter='\t', header=None)

감성사전은 탭(\t)으로 구분된 텍스트 파일로 되어 있으므로, pandas를 사용하여 데이터프레임으로 변환합니다.

다음으로, 문장의 감성점수를 계산하는 함수를 정의합니다.

def get_sentiment_score(sentence):     words = komoran.pos(sentence)  # 형태소 분석     score = 0     for word, pos in words:         if pos in ['VA', 'VV', 'VX', 'VCP', 'VCN', 'MAG']:  # 감성단어인 경우             found = sentiment_df[sentiment_df[0] == word]  # 단어 검색             if not found.empty:  # 단어가 존재하는 경우                 polarity = found.iloc[0, 1]  # 극성(긍정/부정) 확인                 if polarity == 'P':                     score += 1  # 긍정일 경우 감성점수 +1                 elif polarity == 'N':                     score -= 1  # 부정일 경우 감성점수 -1     return score

위 함수에서는 입력된 문장을 Komoran 객체를 사용하여 형태소 분석하고, 감성분석 사전에서 단어를 검색하여 극성(긍정/부정)을 확인하며, 이를 바탕으로 감성점수를 계산합니다.

예를 들어, "오늘 날씨가 좋아서 기분이 좋다"는 문장의 감성점수를 계산하면 다음과 같습니다.

sentence = '오늘 날씨가 좋아서 기분이 좋다' score = get_sentiment_score(sentence) print(score)  # 2

이 문장에서는 '좋다'라는 긍정적인 감성단어가 2회 등장하였으므로, 감성점수는 2점입니다.

# data[].attributes.attachment_link.title
[감성 분석(4)] 한국어 감성사전을 활용한 문장 감성점수 평가(샘플 코드)

# data[].attributes.attachment_link.description
한국어 감성분석 사전을 활용하여 문장의 감성점수를 구하는 파이썬 코드를 소개해드리겠습니다. KoNLPy 패키지에서 제공하는 Komoran 형태소 분석기와 한국어 감성분석 사전인 KNU 한국어 감성사전을 함께 사용하여 문장의 감성점수를 계산할 수 있습니다. 먼저, 필요한 패키지를 import 합니다. from konlpy.tag import Komoran import pandas as pd 다음으로, Komoran 객체와 감성사전을 불러옵니다.

# data[].attributes.attachment_link.title
텍스트 마이닝을 활용한 SMU 감성 사전 구현 및 신조어 감성 분석 연구

# data[].attributes.attachment_link.title
GitHub - park1200656/KnuSentiLex: KNU(케이앤유) 한국어 감성사전

# data[].attributes.attachment_link.description
KNU(케이앤유) 한국어 감성사전. Contribute to park1200656/KnuSentiLex development by creating an account on GitHub.

# data[].attributes.headline
네이버 영화 감상평(댓글) 크롤링 및 파이썬 분석 사례

# data[].attributes.subject
네이버 영화 감상평(댓글) 크롤링 및 파이썬 분석 사례

# data[].attributes.attachment_link.readable_text
감성 분류 모델 구축과 예측

학습 내용

1. 감성 분류 모델을 구축하여 새로운 데이터의 감성을 분석

2. 과정 : 데이터 준비 -> 분석 모델 구축 -> 분석 모델 평가

모듈 설치

1. JDK (Java SE Downloads)

2. JAVA_HOME 설정

3. JPype1설치(1.2.0) → 버전에 맞는 패키지 수동설치

4. KoNLPy 설치 (파이참)

파이썬 3.8이하 (중요)

핵심 개념

1. 텍스트 전처리 -> 특성 벡터화 -> 머신러닝 모델 구축 및 학습/평가 프로세스 수행

2. 텍스트 전처리에는 토큰화, 불용어 처리, 형태소 분석 등의 작업이 포함

단어 표현의 카테고리화

1. 머신러닝 알고리즘으로 분석하기 위해서는 텍스트를 구성하는 단어 기반의 특성 추출을 하
고 이를 숫자형 값인 벡터 값으로 표현해야 함

2. 대표적인 방법으로 BoW(Bag of Words)와 Word2vec가 있음

3. Bag of Words는 국소 표현에(Local Representation)에 속하며, 단어의 빈도수를 카운트하여 단어를 수치화 하는 단어 표현 방법

4. DTM 내에 있는 각 단어에 대한 중요도를 계산할 수 있는 TF-IDF 가중치 방법이 있음

5. TF-IDF를 사용하면, 기존의 DTM을 사용하는 것보다 보다 더 많은 정보를 고려하여 문서들을 비교할 수 있음

카운트 기반 벡터화

1. 단어 피처에 숫자형 값을 할당할 때 각 문서에서 해당 단어가 등장하는 횟수(단어 빈도)를 부
여하는 벡터화 방식

2. 문서 별 단어의 빈도를 정리하여 문서 단어 행렬(DTM)을 구성하는 데 단어 출현 빈도가 높을
수록 중요한 단어로 다루어 짐

3. 문서 d에 등장한 단어 t의 횟수는 tf(t,d)로 표현

4. 카운트 기반 벡터화는 사이킷런의 CountVectorizer 모듈에서 제공

TF-IDF 기반 벡터화

1. 특정 문서에 많이 나타나는 단어는 해당 문서의 단어 벡터에 가중치를 높임

2. 모든 문서에 많이 나타나는 단어는 범용적으로 사용하는 단어로 취급하여 가중치를 낮추는 방식

3. d에 등장한 단어 t의 TF-IDF

4. TfidfVectorizer함수 제공

감성 분석(오피니언 마이닝)

1. 텍스트에서 사용자의 주관적인 의견이나 감성, 태도를 분석하는 텍스트 마이닝의 핵심 분석 기법 중 하나

2. 텍스트에서 감성을 나타내는 단어를 기반으로 긍정 또는 부정의 감성을 결정

3. 감성 사전 기반의 감성 분석은 감성 단어에 대한 사전(관련분야의 말뭉치 구축)을 가진 상태에서 단어를
검색하여 점수를 계산

4. 최근에는 머신러닝 기반의 감성 분석이 늘어나고 있음

로지스틱 회귀(Logistic Regression)분석

1. 일상 속 풀고자 하는 많은 문제 중에서는 두 개의 선택지 중에서 정답을 고르는 문제가 많음

2. 감성분류에서는 긍정과 부정을 결정하는 문제에 활용

3. 둘 중 하나를 결정하는 문제를 이진 분류(Binary Classification)라고 하며, 이런 문제를 풀기 위한 대표적인 알고리즘으로 로지스틱 회귀를 활용

데이터 수집

네이버 영화 댓글 크롤링

1. 네이버 영화 페이지에서 리뷰를 크롤링하여 수집

2. 평이 좋은 영화와 좋지않은 영화를 골고루 선택하여 15000개 댓글을 수집(50개 영화 권장)
네이버 영화 사이트

미리 크롤링한 영화 댓글 자료
긍정/부정 분류

1. 파일 내용은 3개의 컬럼 (no, score, text)으로 구성

2. score 컬럼은 감성 분류 클래스 값, text 는 댓글

3. 긍정/부정 값은 1~10점의 평점 중에서 중립적인 평점인 5~8점은 제외하고 1~4점을 부정 감성 0으로, 9~10점을 긍정 감성 1로 표시

패키지 설치 및 Train 데이터 불러오기

결측 값 처리

분석 불가능한 문자 제거

데이터 셋 분리

토큰화 및 TF-IDF 벡터화

토큰화(tokenization)는 주어진 코퍼스(corpus)에서 토큰(token)이라 불리는 단위로 나눔

토큰화에서 고려해야 할 사항

1. 구두점이나 특수문자를 단순 제외해도 무방한지 확인 (ex, Ph.D, AT&T, $2,000, 11/22/1990, 45.34)

2. 줄임말과 단어 내 띄어쓰기 (we're, thx, 고대, 영끌)

3. 한국어는 어절 독립단어가 아니므로 형태소(자립, 의존) 분해가 필요

4. 한국어는 띄어쓰기가 지켜지지 않고 있음

TF-IDF 벡터화(단어 빈도-역 문서 빈도: Term Frequency-Inverse Document Frequency)

감성 분석 모델 구축

로지스틱 회귀(Logistic Regression) (이진분류 알고리즘)

분석 모델 평가

감성 예측

# data[].attributes.attachment_link.description
네이버 영화 리뷰를 직접 크롤링하여, 실제 리뷰에 대한 긍정/부정 예측 모델을 만들어보자!