데이터ㆍAI 시스템 아키텍트를 위한 실무 가이드
42,000원
중급
도서 소개
텍스트 마이닝에는 자연어 처리, 통계, 딥러닝 기법에 대해 많은 지식이 필요하지만, 이론적인 내용에 얽매이다 보면 정작 구현은 너무 먼 이야기가 되어 버리기 쉽다.
이 책에서는 실무에 바로 적용할 수 있는 실전적인 예제를 중심으로 텍스트 마이닝을 설명한다. 특히 초보자를 위해 텍스트 전처리 과정의 개념과 다양하고 상세한 활용방법을 기초부터 설명한다. 문서 분류와 감성 분석 같은 텍스트 마이닝 작업을 대상으로 다양한 머신러닝 기법을 사용하는 예를 보여주며, 차원을 축소하고 결과를 시각화하는 방법, 토픽 모델링을 수행하고 토픽 트렌드를 구해서 시각화하는 방법을 설명한다.
기본적인 딥러닝 기법을 이용한 문서 분류 외에, 최근 많이 사용되는 BERT를 이용한 미세조정학습까지 포함한다. 또한 한국어 문서 분석에 자신을 갖도록 대부분의 장에 관련 예제를 충분히 다뤘다.
★ 이 책에서 다루는 내용 ★
- 토큰화, 어간 추출, 표제어 추출, 불용어 처리, 품사 태깅과 같은 텍스트 전처리 기법
- 단어 빈도 그래프, 워드 클라우드 그리기
- 카운트 벡터, TF-IDF 벡터로 문서를 변환하고, 문서 간 유사도 구하기
- 다양한 머신러닝/딥러닝 기법으로 문서 분류와 감성 분석 수행
- KoNLPy를 이용해 한국어 문서를 변환하고 다양한 머신러닝 알고리즘으로 분석
- 문서 벡터의 차원 축소, LDA 토픽 모델링, 토픽 트렌드를 구하고 시각화
- Word2Vec, ELMo와 같은 워드 임베딩 기법과 Doc2Vec의 이해
- BERT의 이해와 활용, 파이토치를 이용한 미세조정 학습의 실습, 한국어 문서에 대한 BERT 사용법 실습
도서 상세 이미지

저자 소개
박상언
2007년 3월부터 경기대학교 경영정보전공 교수로 재직하고 있으며, 주요 관심분야는 텍스트마이닝, 머신러닝, 딥러닝 등이다. KAIST에서 전산학 학사, 경영공학 석사와 박사학위를 취득했다.
강주영
2005년 9월부터 아주대학교 e-비즈니스학과 교수로 재직하고 있으며, 주요 관심분야는 빅데이터, 텍스트 마이닝, 지능정보시스템, 블록체인 등이다. 포항공대에서 컴퓨터공학 학사, 서울대에서 컴퓨터공학 석사, KAIST에서 경영공학 박사학위를 취득했다. 현재 아주대 경영빅데이터센터장, 한국빅데이터학회지 편집위원장, 한국지능정보학회 부회장을 역임하며, 빅데이터 및 텍스트마이닝 분야 관련 프로젝트, 자문 및 연구를 수행한다.
정석찬
1999년 3월부터 동의대학교 e비즈니스학과 교수로 재직하고 있으며, 주요 관심 분야는 인공지능, 빅데이터, e비즈니스, 기술정보수용, 정보화전략 등이다. 부산대학교 기계설계학사와 오사카부립대학 경영공학 석사와 박사 학위를 취득했으며, 한국전자통신연구원 선임연구원으로 전자상거래 및 ERP 관련 기술 개발을 담당했다. 과학기술정보통신부 정보화전략위원회 위원, 부산정보산업진흥원 상임이사 등을 역임했으며, IT Innovation 대상 지식경제부 장관상 표창(2008), 정보통신 유공자 부산광역시장 표창(2018), SW산업 발전 유공 홍조근정훈장을 수훈(2019)했다. 현재 동의대학교 부산IT융합부품연구소장과 인공지능그랜드ICT연구센터장을 맡고 있다.
목차
- [1부] 텍스트 마이닝 기초
- ▣ 01장: 텍스트 마이닝 기초
- 1.1 텍스트 마이닝의 정의
- 1.2 텍스트 마이닝 패러다임의 변화
- 1.2.1 카운트 기반의 문서 표현
- 1.2.2 시퀀스 기반의 문서 표현
- 1.3 텍스트 마이닝에 필요한 지식과 도구
- 1.3.1 자연어 처리 기법
- 1.3.2 통계학과 선형대수
- 1.3.3 시각화 기법
- 1.3.4 머신러닝
- 1.3.5 딥러닝
- 1.4 텍스트 마이닝의 주요 적용분야
- 1.4.1 문서 분류
- 1.4.2 문서 생성
- 1.4.3 문서 요약
- 1.4.4 질의응답
- 1.4.5 기계번역
- 1.4.6 토픽 모델링
- 1.5 이 책의 실습 환경과 사용 소프트웨어
- 1.5.1 기본 실습 환경
- 1.5.2 자연어 처리 관련 라이브러리
- 1.5.3 머신러닝 관련 라이브러리
- 1.5.4 딥러닝 관련 라이브러리
- ▣ 02장: 텍스트 전처리
- 2.1 텍스트 전처리의 개념
- 2.1.1 왜 전처리가 필요한가?
- 2.1.2 전처리의 단계
- 2.1.3 실습 구성
- 2.2 토큰화
- 2.2.1 문장 토큰화
- 2.2.2 단어 토큰화
- 2.2.3 정규표현식을 이용한 토큰화
- 2.2.4 노이즈와 불용어 제거
- 2.3 정규화
- 2.3.1 어간 추출
- 2.3.2 표제어 추출
- 2.4 품사 태깅
- 2.4.1 품사의 이해
- 2.4.2 NLTK를 활용한 품사 태깅
- 2.4.3 한글 형태소 분석과 품사 태깅
- 2.4.4 참고자료
- 2.1 텍스트 전처리의 개념
- ▣ 03장: 그래프와 워드 클라우드
- 3.1 단어 빈도 그래프 – 많이 쓰인 단어는?
- 3.2 워드 클라우드로 내용을 한눈에 보기
- 3.3 한국어 문서에 대한 그래프와 워드 클라우드
- ▣ 01장: 텍스트 마이닝 기초
- [2부] BOW 기반의 텍스트 마이닝
- ▣ 04장: 카운트 기반의 문서 표현
- 4.1 카운트 기반 문서 표현의 개념
- 4.2 BOW 기반의 카운트 벡터 생성
- 4.3 사이킷런으로 카운트 벡터 생성
- 4.4 한국어 텍스트의 카운트 벡터 변환
- 4.4.1 데이터 다운로드
- 4.5 카운트 벡터의 활용
- 4.6 TF-IDF로 성능을 높여보자
- ▣ 05장: BOW 기반의 문서 분류
- 5.1 20 뉴스그룹 데이터 준비 및 특성 추출
- 5.1.1 데이터셋 확인 및 분리
- 5.1.2 카운트 기반 특성 추출
- 5.2 머신러닝과 문서 분류 과정에 대한 이해
- 5.3 나이브 베이즈 분류기를 이용한 문서 분류
- 5.4 로지스틱 회귀분석을 이용한 문서 분류
- 5.4.1 릿지 회귀를 이용한 과적합 방지
- 5.4.2 라쏘 회귀를 이용한 특성 선택
- 5.5 결정트리 등을 이용한 기타 문서 분류 방법
- 5.6 성능을 높이는 방법
- 5.7 카운트 기반의 문제점과 N-gram을 이용한 보완
- 5.7.1 통계로는 알 수 없는 문맥 정보
- 5.7.2 N-gram의 이해
- 5.7.3 N-gram을 이용한 문서 분류
- 5.8 한국어 문서의 분류
- 5.8.1 다음 영화 리뷰에 대한 영화 제목 예측
- 5.8.2 성능을 개선하기 위한 노력
- 5.1 20 뉴스그룹 데이터 준비 및 특성 추출
- ▣ 06장: 차원 축소
- 6.1 차원의 저주와 차원 축소의 이유
- 6.2 PCA를 이용한 차원 축소
- 6.3 LSA를 이용한 차원 축소와 의미 파악
- 6.3.1 LSA를 이용한 차원 축소와 성능
- 6.3.2 LSA를 이용한 의미 기반의 문서 간 유사도 계산
- 6.3.3 잠재된 토픽의 분석
- 6.3.4 단어 간 의미 유사도 분석
- 6.4 tSNE를 이용한 시각화와 차원축소의 효과
- ▣ 07장: 토픽 모델링으로 주제 찾기
- 7.1 토픽 모델링과 LDA의 이해
- 7.1.1 토픽 모델링이란?
- 7.1.2 LDA 모형의 구조
- 7.1.3 모형의 평가와 적절한 토픽 수의 결정
- 7.2 사이킷런을 이용한 토픽 모델링
- 7.2.1 데이터 준비
- 7.2.2 LDA 토픽 모델링 실행
- 7.2.3 최적의 토픽 수 선택하기
- 7.3 Gensim을 이용한 토픽 모델링
- 7.3.1 Gensim 사용법과 시각화
- 7.3.2 혼란도와 토픽 응집도를 이용한 최적값 선택
- 7.4 토픽 트렌드로 시간에 따른 주제의 변화 알아내기
- 7.1 토픽 모델링과 LDA의 이해
- ▣ 08장: 감성 분석
- 8.1 감성분석의 이해
- 8.1.1 어휘 기반의 감성 분석
- 8.1.2 머신러닝 기반의 감성 분석
- 8.2 감성 사전을 이용한 영화 리뷰 감성 분석
- 8.2.1 NLTK 영화 리뷰 데이터 준비
- 8.2.2 TextBlob을 이용한 감성 분석
- 8.2.3 AFINN을 이용한 감성 분석
- 8.2.4 VADER를 이용한 감성 분석
- 8.2.5 한글 감성사전
- 8.3 학습을 통한 머신러닝 기반의 감성 분석
- 8.3.1 NLTK 영화 리뷰에 대한 머신러닝 기반 감성 분석
- 8.3.2 다음 영화 리뷰에 대한 머신러닝 기반 감성 분석
- 8.4 참고문헌
- 8.1 감성분석의 이해
- ▣ 09장: 인공신경망과 딥러닝의 이해
- 9.1 인공신경망의 이해
- 9.1.1 인공신경망의 구조와 구성요소
- 9.1.2 인공신경망에서의 학습
- 9.1.3 손실 함수의 이해
- 9.1.4 경사하강법
- 9.2 딥러닝의 이해
- 9.2.1 딥러닝이란?
- 9.2.2 층이 깊은 신경망의 문제점
- 9.2.3 딥러닝에서의 해결방안
- 9.2.4 다양한 딥러닝 알고리즘
- 9.2.5 딥러닝 개발 및 활용환경
- 9.1 인공신경망의 이해
- ▣ 04장: 카운트 기반의 문서 표현
- [3부] 텍스트 마이닝을 위한 딥러닝 기법
- ▣ 10장: RNN - 딥러닝을 이용한 문서 분류
- 10.1 왜 RNN일까?
- 10.1.1 RNN의 이해
- 10.1.2 RNN이 문서 분류에 적합한 이유
- 10.1.3 RNN의 문서 분류 적용방안
- 10.2 워드 임베딩의 이해
- 10.2.1 워드 임베딩이란?
- 10.2.2 BOW와 문서 임베딩
- 10.2.3 워드 임베딩과 딥러닝
- 10.3 RNN을 이용한 문서 분류 - NLTK 영화 리뷰 감성분석
- 10.3.1 워드 임베딩을 위한 데이터 준비
- 10.3.2 RNN이 아닌 일반적인 신경망 모형을 이용한 분류
- 10.3.3 문서의 순서정보를 활용하는 RNN 기반 문서분류
- 10.4 LSTM, Bi-LSTM과 GRU를 이용한 성능 개선
- 10.1 왜 RNN일까?
- ▣ 11장: Word2Vec, ELMo, Doc2Vec의 이해
- 11.1 Word2Vec - 대표적인 워드 임베딩 기법
- 11.1.1 Word2Vec 학습의 원리
- 11.1.2 Word2Vec 활용 - 학습된 모형 가져오기
- 11.1.3 FastText - 워드 임베딩에 N-gram 적용
- 11.2 ELMo - 문맥에 따른 단어 의미의 구분
- 11.2.1 Word2Vec의 문제점
- 11.2.2 ELMo의 구조
- 11.3 Doc2Vec - 문맥을 고려한 문서 임베딩
- 11.1 Word2Vec - 대표적인 워드 임베딩 기법
- ▣ 12장: CNN - 이미지 분류를 응용한 문서 분류
- 12.1 CNN의 등장과 작동 원리
- 12.2 CNN을 이용한 문서 분류
- 12.2.1 CNN을 이용한 문서 분류의 원리
- 12.2.2 CNN을 이용한 NLTK 영화 리뷰 분류
- ▣ 13장: 어텐션(Attention)과 트랜스포머
- 13.1 Seq2seq: 번역에서 시작한 딥러닝 기법
- 13.2 어텐션을 이용한 성능의 향상
- 13.3 셀프 어텐션(Self-attention)과 트랜스포머
- 13.3.1 셀프 어텐션의 이해
- 13.3.2 트랜스포머의 구조
- 13.3.3 인코더의 셀프 어텐션 원리
- 13.3.4 디코더의 작동 원리
- ▣ 14장: BERT의 이해와 간단한 활용
- 14.1 왜 언어 모델이 중요한가?
- 14.2 BERT의 구조
- 14.3 언어모델을 이용한 사전학습과 미세조정학습
- 14.4 사전학습된 BERT 모형의 직접 사용방법
- 14.5 자동 클래스를 이용한 토크나이저와 모형의 사용
- ▣ 15장: BERT 사전학습 모형에 대한 미세조정학습
- 15.1 BERT 학습을 위한 전처리
- 15.2 트랜스포머의 트레이너를 이용한 미세조정학습
- 15.3 파이토치를 이용한 미세조정학습
- ▣ 16장: 한국어 문서에 대한 BERT 활용
- 16.1 다중 언어 BERT 사전학습 모형의 미세조정학습
- 16.2 KoBERT 사전학습 모형에 대한 파이토치 미세조정학습
- ▣ 10장: RNN - 딥러닝을 이용한 문서 분류
예제 코드
- GitHub 저장소: https://github.com/wikibook/textmining
- ZIP 형식으로 다운로드: https://github.com/wikibook/textmining/archive/refs/heads/main.zip
정오표
-
4쪽, 본문 9번째 줄
크기가 작은 경우에는 벡터가 대부분
0인값들로 이루어지고,==>
크기가 작은 경우에는 벡터가 대부분
0이 아닌값들로 이루어지고, -
70쪽, 본문 2번째 줄
빈도수 상위
20개의단어를 출력한다.==>
빈도수 상위
10개의단어를 출력한다. -
91쪽, 본문 밑에서 첫 번째 줄
값들부터
20개씩출력해서==>
값들부터
10개씩출력해서 -
102쪽, 예제 코드의 첫 번째 줄
From sklearn.naive_bayes import MultinomialNB==>
from sklearn.naive_bayes import MultinomialNB -
103쪽, 예제 코드의 첫 번째 줄
Print('#First document and label in test data:', X_test[0], y_test[0])==>
print('#First document and label in test data:', X_test[0], y_test[0]) -
104쪽, 페이지 상단 예제 코드의 첫 번째 줄
From sklearn.feature_extraction.text import TfidfVectorizer==>
from sklearn.feature_extraction.text import TfidfVectorizer -
143쪽, 본문 10번째 줄
$ \sum\nolimitsk, \sum\nolimits{k}^{T} $는 각각
==>
$ \sum\nolimitsk, V{k}^{T} $는 각각
-
143쪽, 본문 11번째 줄
$ \sum\nolimitsk, \sum\nolimits{k}^{T} $를 구하면 되는데,
==>
$ \sum\nolimitsk, V{k}^{T} $를 구하면 되는데,
-
147쪽, 본문 5번째 줄
즉 TFIDF는 유사도가
좁은범위에 분포하게 되는데,==>
즉 TFIDF는 유사도가
넓은범위에 분포하게 되는데, -
150쪽 예제 코드의 7~9번째 줄
print('#Top 20 유사 뉴스의 인덱스(tfidf):', sim_index) sim_labels = [tfidf.get_feature_names_out()[i] for i in sim_index] print('#Top 20 유사 뉴스의 카테고리(tfidf):', sim_labels)==>
print('#Top 20 유사 단어의 인덱스(tfidf):', sim_index) sim_labels = [tfidf.get_feature_names_out()[i] for i in sim_index] print('#Top 20 유사 단어 리스트(tfidf):', sim_labels) -
150쪽, '실행 결과'와 본문 1~4번째 줄
[실행 결과] #components_의 shape: (100, 1000) #singular_values_의 shape: (100,) #변환된 단어-잠재의미 행렬의 shape: (1000, 100) 1000 #Top 20 유사도(tfidf): [1.0, 0.73, 0.72, 0.69, 0.66, 0.58, 0.56, 0.56, 0.54, 0.54, 0.52, 0.52, 0.52, 0.51, 0.51, 0.5, 0.5, 0.49, 0.48, 0.47] #Top 20 유사 뉴스의 인덱스(tfidf): [812 314 754 829 594 679 720 650 785 565 101 435 606 545 854 746 669 856 611 564]#Top 20 유사 뉴스의 카테고리(tfidf): [‘space’, ‘exploration’, ‘sci’, ‘station’, ‘office’, ‘propulsion’, ‘reports’, ‘planetary’, ‘shuttle’, ‘national’, ‘astro’, ‘international’, ‘operations’, ‘missions’, ‘technical’, ‘satellites’, ‘probes’, ‘telescope’, ‘orbiter’, ‘nasa’]위 예제에서는
==>
[실행 결과] #components_의 shape: (100, 1000) #singular_values_의 shape: (100,) #변환된 단어-잠재의미 행렬의 shape: (1000, 100) 1000 #Top 20 유사도(tfidf): [1.0, 0.73, 0.72, 0.69, 0.66, 0.58, 0.56, 0.56, 0.54, 0.54, 0.52, 0.52, 0.52, 0.51, 0.51, 0.5, 0.5, 0.49, 0.48, 0.47] #Top 20 유사 단어의 인덱스(tfidf): [812 314 754 829 594 679 720 650 785 565 101 435 606 545 854 746 669 856 611 564] #Top 20 유사 단어 리스트(tfidf): [‘space’, ‘exploration’, ‘sci’, ‘station’, ‘office’, ‘propulsion’, ‘reports’, ‘planetary’, ‘shuttle’, ‘national’, ‘astro’, ‘international’, ‘operations’, ‘missions’, ‘technical’, ‘satellites’, ‘probes’, ‘telescope’, ‘orbiter’, ‘nasa’]위 예제에서는
-
172쪽, 본문 밑에서 2번째 줄
에러가 발생하니 주의해야
있다.==>
에러가 발생하니 주의해야
한다.