사용자의 수집데이터의 사이즈에 차이는 있지만, 서비스를 하는 입장에서는 데이터는 무조건 저장되고 누적됩니다.
로그인이 필수인 개인화된 페이지도 있고, 로그인이 없는 누구나 사용하는 서비스 페이지들도 있습니다.
데이터는 User들이 신규로 생성하는 데이터도 있지만, 통계성의 성격을 가지는 데이터들, 정형데이터/비정형데이터등 다양한 성격의 데이터는 어느 회사나 보유중입니다.
그러면 우리는 이것을 가지고 새로운 요구사항을 구현할수도 있고, 조금 더 나은 서비스를 위해서, 새로운 Value를 찾아보기 위해서 다양한 시도를 합니다. 여기서 중요한 부분은 대부분의 데이터가 한글이라는 부분입니다.
일반적인 데이터 분석책이 현재 많이 출간되어 있고, 대부분 파이썬을 이용해서 구현을 많이 합니다.
이 책의 제목은 "모두의 한국어 텍스트 분석" !! 이다.
저자분도 이책의 집필시에 아래와 같은, 누구나 궁금해 하는 사항에 대해서 고민하고 이 책을 구성하셨던 부분이 처음에 눈에 들어왔습니다.
저자는 집필의도를 통해서 우리가 이 책에서 얻을 수 있는 사항은 아래와 같습니다.
- 텍스트 분석을 하는 방법을 전반적으로 알아봅니다.
- 한국어라는 언어에 대해서 무슨 차이가 있고, 한국어를 조금 더 잘 활용해 볼 수 있을 것이다.
■ 책이 실습구성은 풍성
· 의지만 있으면, 학습할수 있는 충분한 구성이 되어있습니다.
· 코랩으로 바로 실행 지원
https://github.com/pytextbook/pytextbook
소스 코드를 바로 코랩의 실행하는 환경을 제공하는 것은 생각보다 장점이 많습니다. runtime으로 실습하는 것은 시간절약에 많은 도움이 되고 궁금한 것을 바로바로 실습해볼수 있어서 독자 입장에서 매우 만족합니다.
· 유투브 영상도 제공합니다.
저자분이 책의 내용을 전부 설명하는 것은 아니지만, 책과 중복되는 부분도 많고 충분히 시작하는데 도움되는 영상 목록입니다.
https://www.youtube.com/playlist?list=PLaTc2c6yEwmp35y9Z868VlV9NQpG-eBb6
■ 환경구성과 파이썬 기본 문법
· 1장~3장까지 내용 구성이 됩니다.
· 코랩은 데이터 분석하는데 너무나 많은 편리성을 제공합니다. 한번만 경험하면 쉽게 사용할 수 있습니다.
· 파이썬의 내용이 좋았습니다. 파이썬의 모든 내용을 다루지 않습니다.(파이션책이 아니기 때문에)
이 책은 텍스트 분석을 위한 "파이쎤 문자열"에 대해서 상세히 설명합니다. 이런 부분이 목적에 맞게 문자열을 더 자유롭게 다루는 방법이 있어서 책의 목적에 맞는 내용 구성이라고 생각합니다.
· 판다스(https://pandas.pydata.org/), 넘파이 (https://numpy.org/)는 데이터분석의 기본 사항입니다.
데이터 분석하는 과정에서 데이터를 axix축을 어떻게 잡는지도 중요하고, 분석하려고 하는 다양한 데이터를 row,colume구성으로 data조회를 하는 과정도 필요합니다. pandas는 sql쿼리문으로 조회하는 부분에 많은 것을 커버할수 있습니다. group by의 역활도 일반 쿼리보다 쉽게 구성하여서, 조금 다른 관점으로 장점도 많이 있습니다.
핵심되는 요소만 설명하고, 너무 과하지 않게 설명을 합니다. loc, iloc, series등에 대해서 설명을 하고, 가장 많이 사용하는 개념 및 함수에 대한 설명을 통해서, 이정도만 알고 있으면 충분히 데이터 분석을 경험 할수 있습니다. 추가적인 내용 및 더 궁금한 부분을 연관해서 찾아보면 추가적인 함수들도 학습 할수 있는 베이스 라인을 만든다고 보시면 될 것 같습니다.
■ 4장 : 단어 가방 모형과 TF-IDF
· 단어가방 모형 : 단어순서를 고려하지 않고, 중복발생 빈도를 중요하게 취급하는 방법
여기서는 사이킷런(scikit-learn)을 활용한다. 해당 라이브러리는 머신러닝을 하는데 기본적으로 사용됩니다.
우선 문장을 분석하는 것을 시도해봅니다. 문장은 공백으로, 콤파등으로 구분되어 질수 있습니다. 이것을 단어로 형태소 분석해서 숫자를 올리면 특정 단어가 많이 나오는 것을 분석해볼수 있습니다. 이것은 단어가방모델이고 여기서 조금더 추가하여서 단어의 위치에 따라서 의미가 달라지는 것을 다양한 기법을 적용해서 결과물을 도출해봅니다.
n-gram(단어 어절을 구성하는 단위), min_df, max_df를 통한 빈도수 설정, max_features (학습 단어개수제한), stop_word(불용어 제거)등을 사이키런에서 제공해주는 옵션값을 사용해서 데이터 분석을 합니다.
· 사이킷런을 TfidVectorizer를 통해서 TF-IDF변환을 통해서, 단어빈도, 문서빈도, 역문서빈도등을 적용하면서 각 문장간의 연관성을 추출합니다. 보통 결과를 이렇게 수치로 표현해서 가중치를 파악합니다. 이런 실행결과는 데이터 분석에서 많이 보는 결과입니다.
이러한 내용들이 하나하나 설명되어지면서, 분석에 대한 상세 설명이 되어집니다.
■ 5장. 연합뉴스 타이틀 주제 분류
· 소개하는 예제가 매우 관심을 가지게 됩니다. 업무에서도 어떻게든 적용해볼수 있지 않을까? 생각해볼수 있습니다. 제목 즉 타이틀은 모든 게시글에 있기 때문이죠. 이러한 데이터를 어떻게 텍스트 분석을 하고 어떠한 기술/라이브러리를 사용해서 어떠한 방식으로 구현되어 있는지 살펴보겠습니다.
아래 목차를 보면, "분류과정", "전처리", "불러오기" 등이 있습니다. 데이터를 처리하는데, 우리가 보유하는 데이터를 그냥 바로 분석할수 없습니다. 전처리라는 역활은 매우 중요한 과정이며, 이러한 과정은 데이터를 바라보는 관점을 달리 할수 있는 중요한 부분이라고 생각합니다.
주요하게 살펴볼 사항은 아래 2가지 입니다.
· 간단한 텍스트 분류를 통해 머신러닝 알고리즘이 학습할수 있도록 단어를 수치화 하는 방법
· 머신러닝 모델을 통해 학습 및 예측하는 방법
· 사용되는 데이터
L (DACON, 데이콘 AI경진대회 플랫폼)에서 KLUE:한국어 자연어 이해 벤치마크 데이터 데이터를 이용합니다.
https://klue-benchmark.com/tasks/66/overview/description
· 라이브러리 import
pandas, numpy등은 기본적으로 import를 하는 사항이라고 보면 되고,
한글처리를 위해서 아래 사항을 추가한다.
koreanize-matplotlib : 매트플립 차트에서 한글이 깨지지 않고 표현가기 위해서 설치
konlpy : 한국어 형태소 분석을 위해 설치
· https://konlpy.org/en/latest/
한국어에 대해서, 동일한 문장이여도 형태소 분석의 차이로 인해서 구문에 대한 파싱은 조금씩 다르게 표현됩니다.
책에서는 Okt를 사용해서 예제를 진행합니다.
· 당연히 학습, 시험 데이터 세트 분리를 진행하고
해당 예시에서는 학습과 예측하는 기법으로는 사이키런의 랜덤 포레스트를 사용해서 진행합니다.
▶ 6장에서도 5장과 비슷한 과정이 있습니다.
6장에서는 "국민청원 데이터 시각화 분류"를 진행합니다. 코랩으로 데이터를 호출해서 처리할수 있지만
pandas를 통해서도 데이터를 호출해서 사용할수 있습니다.
KoNLPy와 soynlp를 통해서 특정 형태소를 추출/제거를 수행하며, 머신러닝으로 텍스트 데이터를 이진 분류하는 내용이 있습니다.
· 6장에서는 조금 더 다양하게 pandas를 사용합니다. 조건을 걸어서 분류를 제한하고 merge등 조금 더 다양한 데이터 구조화를 연습해볼수 있습니다.
머신러닝에 대해서 이론적인 사항도 필요한 부분에 대해서 과하지 않게 핵심이 잘 정리되어서 설명되어 집니다.
■ 7장 ‘120다산콜재단’ 토픽 모델링과 RNN, LSTM
· 120다산콜재단 데이터를 토픽별로 분석시각화를 진행해봅니다.
· RNN, LSTM을 통한 모델링을 진행해봅니다.
· pyLDAvis를 이용해서 시각화를 연습해보면서, 기존에 멧플립등과 비교해보는 연습을 합니다
분석과정에서 데이터를 토픽별로 분류를 하고 난 후에 딥러닝 방법중에 하나인 순환신경망(RNN)모델로 학습해서 분류과정을 거칩니다.
잠재 디리클레 할당 (LDA)를 통해서 주어진 문서에 대해 각 문서에 어떤 주체(토픽)들이 있는지 서술하는 확률적인 토픽 분류 기법을 이용합니다. 사이킷런을 이용해서 해당 분류를 실행합니다.
▶ 8장의 내용은 조금더 현실감 있는 데이터 샘플을 이용해서 실습을 합니다.
많이들 이용하시는 인프런의 댓글을 가지고 텍스트 분석을 하는 과정은 매우 공감이 됩니다.
여기서 사용하는 데이터의 댓글을 실제 주변에 작성하신 분들이 있을수 있기 때문입니다.
과정은 비슷합니다. 해당 데이터를 어떻게 분류하고 학습시킬것인지 고민해야 합니다. 머신러닝을 통한 분류를 할지 딥러닝 기법을 사용하지 정하고, 학습데이터와 실제 예측을 위한 테스트 데이터르 분류해 놓아야 합니다.
가시적인 검증을 위해서 차트 라이브러리를 사용합니다. 인프런 분석시에는 KMeans 군집화를 통해 머신러닝 비지도 학습을 적용해보았고, 클러스터링의 분류 모델을 통해서 지도학습을 통해서 예측도 진행합니다.
이 책의 특징은 일반적으로 외부에 오픈된 dataset을 이용하는 것 보다 조금 더 한국어가 기본인 데이터를 활용하는 것이 매우 좋았습니다.
사례로 드는 예제는 주변에서 실제 익숙한 데이터를 사용해서, 데이터 분류 및 예측의 결과 값이 한글로 되어 있어서 영어로 분석하는 예시와는 또 다른 경험을 제공합니다.
'book' 카테고리의 다른 글
개발자의 하루를 바꾸는 코파일럿 & 챗GPT (0) | 2023.09.09 |
---|---|
아트 오브 셸 원라이너 160제 (0) | 2023.08.27 |
AWS 기반 데이터 과학 (0) | 2023.08.13 |
프런트엔드 개발자를 위한 테스트 가이드 (0) | 2023.07.22 |
처음부터 제대로 배우는 스프링 부트 (0) | 2023.07.18 |