![](https://blog.kakaocdn.net/dn/baiYZR/btrG7YOqdsf/tJ3SLE2DQXdjZ6E4z3rPnK/img.png)
안녕하세요!!
삼성 SDS Brightics 서포터즈 3기 이상민입니다 :)
저번 포스팅은
텍스트 데이터를 전처리하는 법을
영화 리뷰 데이터를 통해서 소개했는데요.
이번 포스팅은 이어서
Data Modeling과 Text Analysis에 대해
다뤄보는 시간을 가져보겠습니다.
![](https://blog.kakaocdn.net/dn/cSeFU3/btrG9UcWUNt/DBGjBofgD3fKWk2DzMkMnK/img.gif)
Modeling이란?
먼저 모델링이라는 단어 자체에 대해 의미를 알아보자면
복잡한 현실세계를 단순화, 즉 사람이 이해할 수 있는 정보로 변환하는 과정입니다.
그리고 이것을 Data로도 진행할 수 있는데
일반적으로 Ai 모델이라고도 하며
많은 데이터를 이용해 데이터들의 패턴을 분석하고
결과를 예측하는 알고리즘을 설계하는 것을 의미합니다.
예시로는 우리가 흔히 일상생활에서 접하는
파파고 번역기나
네이버 악성 댓글 분류들도
다 이 Ai 모델을 활용한 것입니다.
이론은 알아봤고
그럼 Modeling을 진행해볼까요?
1. 문서 요약
먼저 진행해볼 것은 문서 요약입니다.
문서 요약이란, 텍스트 데이터에서 필요한 정보를 압축하는 것을 의미합니다.
크게 추출요약과 생성요약으로 나누어지며
BART와 같은 모델들이 많이 사용되고 있습니다.
그럼 저번 시간 전처리 한 것을 바탕으로 문서 요약을 진행해보겠습니다.
![](https://blog.kakaocdn.net/dn/ZMRYZ/btrG9lhxmp9/T9oBKwqoNpJikEka9CXGhk/img.png)
Documents Summarization이라는 함수를 생성하고
저번 시간에 불러온 데이터에서 리뷰 column인
review를 input으로 넣어줍니다.
그 후 result type에서 document로 요약할지 문장으로 요약할지 결정하고
Compression Ratio, 즉 압축 비율에 대해서도 결정해줍니다.
이 압축 비율은 높으면 높을수록 문장이 간결해지는 것을 의미합니다.
마지막으로 Number of Sentences, 최소 몇 개의 문장으로 요약할지 결정해줍니다.
그럼 화면에서 보이는 것과 같이 문장이 간결해진 것을 볼 수 있는데요.
13번째 14번째 문장을 보면
'나는 이 영화를 모두에게 추천해준다.'
처럼 간결하게 요약된 것을 볼 수 있죠?
2. 토픽 모델링
다음은 토픽 모델링입니다.
토픽 모델링이란 문서 집합에서 추상적인 "주제"를 발견하기 위한
통계적 모델 중 하나입니다.
예를 들어서 개라는 문서에서는 뼈다귀가 자주 등장하고
고양이라는 문서에서는 생선이 많이 등장하는 것과 같이
유사한 의미를 지니는 단어를 하나의 "주제"로 묶고
이것을 토픽 모델링으로 정의합니다.
![](https://blog.kakaocdn.net/dn/C2rLy/btrG8IxyByz/pLXCq7RAkanicKZ3Jn2AX0/img.png)
Latent Dirichlet Allocation 함수를 생성하고
최소 vocab과 topic, terminologies에 대해 설정해줍니다.
이는 각각 사전 안에 있는 단어 개수, 토픽 개수, 용어 개수를 의미하며
결과로 최소 몇 개를 반영or출력 할 지 결정해주는 역할을 합니다.
그 다음 iterations(학습 반복횟수)과
Learning Method를 결정합니다.
Method는 크게 Online과 Batch가 있으며
Online은 한 번에 모든 데이터를 학습,
Batch는 데이터를 쪼개서 반복 학습하는 것을 의미합니다.
![](https://blog.kakaocdn.net/dn/1QcuX/btrG8ttSrob/Nvwdg5nGcPQMFhEJS1HuM0/img.png)
Run을 눌러주면
이와 같이 결과를 시각적으로 볼 수 있는데요.
3개의 토픽이 적당히 나눠진 것을 볼 수 있습니다.
특히 원을 클릭하면 해당 Topic마다 단어의 비율을 확인할 수 있는
기능이 있습니다!
3. Doc2Vec
Doc2Vec은 말 그대로 Document->Vector인데요.
문서를 vector화 시켜주는 역할을 합니다.
컴퓨터는 텍스트를 이해할 수 없기 떄문에 숫자로 변환해줘야 하는데요.
Doc2Vec이 이 역할을 하며
기존 Word2Vec(Word->Vec)이라는 기법에서 확장한 모델입니다.
간단히 설명하자면 문장 전체에 대해 단어 k개씩 슬라이딩해가면서
다음 단어를 맞추면서 학습을 진행합니다.
![](https://blog.kakaocdn.net/dn/bRRq0w/btrHapDK1Ho/Y2qpvOTQ9Z1yk3eeeHPiZk/img.png)
Doc2Vec이라는 함수를 생성하고
Minimum alpha(최소 비율), Seed(고정), Train epoch(batch단위 학습 수), Number of workers(작동 cpu)
위와 같은 하이퍼 파라미터들을 설정해줍니다.
그 후 Top N frequent words,
즉 몇 개의 상위 단어를 출력할지를 결정해주면 끝!
![](https://blog.kakaocdn.net/dn/dEwuKm/btrHaXNLUYb/JA3LmAmAlInK5vV7sGlQGk/img.png)
그럼 이와 같이 단어들을 vector 공간에서 시각화해서 볼 수 있습니다.
정말 브라이틱스는 시각화까지 간편해서 좋은 것 같아요 :)
4. 문장 분류
다음은 문장 분류를 해보겠습니다.
문장 분류는 말 그대로
나 행복해 -> 긍정
슬퍼, 짜증나 -> 부정
처럼 문장을 어떠한 label에 대해 분류하는 것을 의미합니다.
![](https://blog.kakaocdn.net/dn/rIq63/btrG9k3ZTYB/ZKuCXPkkL6iBtNKAs7AjQ1/img.png)
기존 Doc2Vec에서 list형식으로 되어 있던 값들을
학습을 위해 각각의 column으로 변환해줍니다.
![](https://blog.kakaocdn.net/dn/Tmoey/btrG6Wi2AHs/V7NKyN9Gkc9Sc08scrPO21/img.png)
그 후 SVM이라는 모델을 통해 학습을 진행하면 끝!
정말 간편하지 않나요?
![](https://blog.kakaocdn.net/dn/n4Vbi/btrG8sIrEx7/nvFq41C1sQaiLn4HfrPAC1/img.png)
Prediction 함수를 통해
prediction 열에 제대로 분류됐는지 확인할 수도 있습니다.
![](https://blog.kakaocdn.net/dn/71Jpv/btrG7XIK5so/CIf76w6grgluQfESCFj7Y1/img.png)
마지막으로 이 모델이 학습이 제대로 됐는지 확인하기 위해
성능평가지표라는 것이 존재합니다.
우리가 흔히 알고 있는 RMSE나 Accuracy같은 것들이 바로 성능평가지표입니다.
성능을 확인해봤을 때,
무려 Accuracy가 1.0 대박..
데이터 적어서 그런 거일수도 있고,
모델이 정확해서 성능이 매우 높게 나온 거일수도 있겠네요.
지금까지 3주차동안 진행한
텍스트 분석의 대장정을 마치겠습니다!
감사합니다.
![](https://blog.kakaocdn.net/dn/br50V0/btrHao5T3PK/FmDPQqaS4AyEReIZ4DNjjK/img.gif)
2-3 텍스트 데이터 모델링 후기
모든 데이터 분석에서는
모델링 단계에서 많은 지식을 필요로 하는데요.
논문과 수식, 통계적인 관점들
깊게 공부하지 않는 이상 모델링을 진행하기란
매우 어렵습니다.
하지만 브라이틱스에서는
제공되는 함수를 통해
모델링을 자동으로 진행해주고
시각화까지 깔끔하게 해주는 것을 보고
정말 최고의 분석 툴이라는 것을 느꼈습니다.
텍스트 데이터를 불러오고
전처리하면서
마지막 모델링까지
브라이틱스 스튜디오를 통해
정말 편리하고 깔끔한 분석 과정을
진행하면서 매우 좋았습니다 :)
지금까지 삼성 SDS Brightics 서포터즈 3기 이상민이었습니다!
귀한 시간 내어 읽어주셔서 감사합니다.
* 본 포스팅은 삼성SDS Brightics 서포터즈 3기 활동의 일환으로 작성하였습니다.
'삼성 SDS Brightics' 카테고리의 다른 글
[Brightics Studio] # 팀 분석 프로젝트 - 02 업무분배 및 주제구체화, 텍스트 데이터로 MBTI 예측하기 (0) | 2022.08.23 |
---|---|
[Brightics Studio] # 팀 분석 프로젝트 - 01 기획 및 구상, 텍스트 데이터로 MBTI 예측하기 (0) | 2022.08.17 |
[Brightics Studio] #02-2 영화 리뷰 데이터를 분석하기 - Data Preprocessing (0) | 2022.07.05 |
[Brightics Studio] #02-1 영화 리뷰 데이터를 분석하기 - 데이터셋 설명과 Data Load (0) | 2022.06.28 |
[삼성 SDS Brightics] 서포터즈 3기 발대식 후기 (0) | 2022.06.28 |
최근댓글