텍스트에서 통찰을 이끌어내는 98가지 자연어 처리 전략
추천사
- 탄탄한 기초와 수많은 연구를 바탕으로 머신러닝이 필요한 비지니스 프로젝트에 도입할 수 있는 실용적인
예제를 가득 채운 도서
- 실력을 한 단계 높이고자 하는 데이터 엔지니에게 추천
- 코드를 중심으로 설명을 하기 때문에 시간과 수고를 줄여줌
- 텍스트 분석 및 NLP 분야에 활용할 유용한 방법과 기술을 포괄적으로 설명해 줌
NLP에 대한 설명보다는 현실에서 마주하는 어려움을 어떤 식으로 풀어가야 하는지를 알려주는 전략 및 코드를
제공하는데 초점을 맞추고 있다.
대상 독자
- 샘플 결괄를 빠르게 만들어 프로젝트의 성공 가능을 검토하려는 독자
- 문제를 풀기 위한 베이스라인(머신러닝 모델이 넘어야 하는 최소한의 성능)을 빠르게 작성해야 하는 독자
텍스트 분석이란 텍스트 형태로 제공되는 방대한 양의 정보를 분석할 수 있는 컴퓨터 프로그램을 개발하는 것
# Book Contents
1. 텍스트 데이터에서 찾는 통찰
2. API로 추출하는 텍스트 속 통찰
3. 웹사이트 스크래핑 및 데이터 추출
4. 통게 및 머신러닝을 위한 텍스트 데이터 준비
5. 특성 엔지니어링 및 구문 유사성
6. 텍스트 분류 알고리즘
7. 텍스트 분류기
8. 비지도 학습 : 토핑 모델링 및 클러스터링
9. 텍스트 요약
10. 단어 임베딩으로 의미 관계 탐색
11. 텍스트 데이터를 이용한 감성 분석
12. 지식 그래프 구축
13. 프로덕션에서 텍스트 분석 사용
* 라이브러리 : spacy 2.3.2 기준으로 작성
Chapter1. 텍스트 데이터에서 찾는 통찰
텍스트에서 단어와 구의 빈도분석은 주요한 데이터 탐색 방법이다.
절대 단어 빈도는 대게 그다지 흥미롭지 않지만 상대적 빈도나 가중 빈도는 중요하다.
텍스트를 토큰화하고, 불용어(stop words)를 필터링하고, 빈도 다이어그램(frequency diagrams)과
워드 클라우드(word cloud)를 사용해 텍스트 콘텐츠를 분석하는 방법을 알게 된다.
텍스트 벡터화에 필요한 요소인 TF-IDF 가중치 개념도 알게된다.
자연어 처리(NLP)에서 뉴스, 트윗, 이메일, 업무 통화와 같이 텍스트 문서로 구성된 데이터 셋을 말뭉치(corpus)
라고 한다. 말뭉치의 통계적 탐색은 다양한 양상을 보인다.
팬더스로 데이터 개요 확인
1. 요약 통계(summary statistics)를 계산
2. 누락된 값(misssing value)를 확인
3. 흥미로운 속성의 분포를 시각화
4. 범주 간의 분포를 비교
5. 시간 경과에 따른 변화를 시각화
간단한 텍스트 전처리 파이프라인 구축
텍스트 데이터 -> 변환 -> 토큰화 -> 불용어 제거 -> 준비된 토큰
Chapter2. API로 추출하는 텍스트 속 통찰
API는 사용자가 소프트웨어 응용 프로그램이나 구성요소, 서비스 등이 어떻게 구현되는지 몰라도 통신할 수 있도록
하는 인터페이스이다. API는 사용할 수 있는 요청의 종류, 사용되는 데이터 혀익, 예상 응답을 포함한 일련의
정의 및 프로토콜을 제공한다.
Chapter3. 웹사이트 스크래핑 및 데이터 추출
웹사이트 스크래핑 방법은 세가지 단계로 구성된다.
1. 웹사이트의 모든 URL을 생성
2. 도구를 사용해 해당 URL에서 페이지를 다운로드
3. 다운로드한 페이지에서 데이터를 추출
크롤링 : 웹사이트의 홈페이지에서 시작해 동일한 웹사이트의 링크를 모두 다운로드한다.
URL 생성기 : 약간 더 정교한 솔루션으로 포럼, 블로그처럼 계층적 구성으로 구성된 컨텐츠에 적합하다.
검색엔진 : 검색엔진에 특정 URL 요청해서 특정 URL만 다운로드한다.
사이트맵 : 웹사이트 최상위에서 sitemap.xml를 찾는다.
RSS : 뉴스피드용으로 고안되어 자주 변경되는 컨텐츠 소스를 구독하는데 널리 사용된다.
Chapter4. 통계 및 머신러닝을 위한 텍스트 데이터 준비
일반적으로 데이터 준비나 데이터 전처리에는 데이터를 분석의 기초가 되는 형태로 변환할 뿐만 아니라
분석에 방해가 되는 노이즈를 제거하는 과정도 포함된다.
텍스트 전처리 파이프라인
파이프라인은 원시 텍스트를 입력 받아 정리하고 변환하고 텍스트 컨텐츠의 기본 특성을 추출한다.
데이터 정리 및 토큰화를 위한 정규 표현식으로 시작한 다음에 스페이시 라이브러리를 사용한 언어처리에 중점을 둔다.
스페이시는 최신 API와 최첨단 모델을 갖춘 강력한 NLP 라이브러리이다.
Chapter5. 특성 엔지니어링 및 구문 유사성
문서 벡터화는 모든 머신러닝 작업의 기초이므로 자신만의 벡터화 객체를 설계하고 구현하는 데 시간을 할애할 것이다.
벡터화는 정교한 머신러닝 알고리즘의 기본 기술이지만 문서 간의 유사성을 계산하는 데 자체적으로 사용할 수 있다.
텍스트가 포함된 거의 모든 머신러닝 프로젝트(ex: 분류, 토픽 모델링, 감성 감지)에는 기본적으로 문서 벡터가 필요하다.
다양한 벡터화를 시도하고 매개변수를 사용하거나 조정해 생성된 특성 공간을 관찰하는 것이 좋다. 이 부분에 많은 시간을
투자해야 한다.
Chapter6. 텍스트 분류 알고리즘
텍스트 분류는 텍스트 데이터 및 텍스트 벡터화 같은 NLP 기술을 사용해 지정된 문서에 범주형 대상 변수를 할당하는
지도 학습 알고리즘의 예다. 분류 알고리즘은 다음 범주를 특성화할 수 있다.
- 이진 분류
- 다중 클래스 분류
- 다중 레이블 분류
텍스트 분류의 다음 단계는 적절한 알고리즘을 사용해 지도 머신러닝 모델을 훈련하는 것이다.
서포트 벡터 머신(SVM)은 텍스트 분류 작업에 사용되는 인기 있는 알고리즘이다.
모델의 정확도를 수치화하는 데 사용할 수 있는 메트릭 중 세가지를 소개하면
정확도(Accuracy), 정밀도(Precision), 재현율(Recall)이 있다.
Chapter7. 텍스트 분류기
- LIME을 사용한 분류
- ELI5를 사용한 분류
- 앵커를 사용한 분류
신뢰할수 있는 머신러닝 솔루션을 구축하려는 경우, 모델을 정작 신뢰하고 맡길수 있다는 점이 점차 중요해질 것이다.
Chapter8. 비지도 학습 : 토픽 모델링 및 클러스터링
토픽 모델링은 문서 모음에서 토픽(주제)을 찾는 통계 기술을 사용해 문제를 해결한다.
벡터화에 따라 다양한 종류의 주제를 찾을 수 있는데, 주제는 특성(단어, N-그램 등)의 확률 분포로 구성된다.
다양한 토픽 모델링 방법을 심층적으로 살펴보고 방법 간의 차이점과 유사점 찾고 사용 예를 제시한다.
다양한 알고리즘과 구현이 있으므로 다양한 방법을 실험하고 주어진 텍스트 말뭉치에 대해 어떤 방법이 최상의
결과를 산출하는지 확인하는 것이 좋다.
Chapter9. 텍스트 요약
텍스트 요약은 텍스트 정보를 몇 줄 또는 단락으로 짧게 압축해 대부분의 사용자가 이해할 수 있도록 한다.
요약 방법은 크게 '추출 방법'과 '추상화 방법'으로 분류한다.
추출 요약방법은 주어진 텍스트 본문에서 중요한 구 또는 문장을 찾고, 이들을 적절히 결합해 전체 텍스트의 요약을 생성한다.
추상화 요약방법은 사람처럼 의역해서 요약을 생성한다. 일반적으로 중요한 단어나 문장을 선택하는 것이 아니라 문법적으로
올바른 텍스트 요약을 제공하는, 구문과 문장을 생성 할 수 있는 심층 신경망(DNN)을 사용한다. 심층 신경망을 훈련하는
과정에서는 많은 훈련 데이터가 필요하고 자연어 생성, 의미론적 분할 같은 NLP 내의 여러 하위 도메인을 다뤄야 한다.
Chapter10. 단어 임베딩으로 의미 관계 탐색
유사성은 머신러닝 작업의 기본이다. 단어 가방 모델을 기반으로 '텍스트 유사도'를 계산하는 방법을 보았듯이
문서에 대한 TD-IDF 벡터가 두개 주어지면 코사인 유사도를 계산하며 이 정보를 사용해 유사한 문서를 검색, 클러스터링,
분류할 수 있다.
단어 임베딩을 훈련하기 위한 알고리즘으로 Word2Vec 및 FastText 임베딩이 있다.
Chapter11. 텍스트 데이터를 이용한 감성 분석
텍스트에서 감성을 이해하려면 직접적이지도 분명하지도 않은 측면을 추론해야 하기 때문에 어렵다.
텍스트 조각의 감성은 구, 문장, 문서에서 결정할 수 있다. 감성은 각 문장과 단락에서 계산할 수 있다.
감성분석을 수행하는 기술은 간단한 규칙기반 기술과 머신러닝 접근 방식으로 나눌 수 있다.
규칙기반 기술은 주석이 달린 훈련 데이터가 필요하지 않기 때문에 적용하기가 쉽다. 지도학습 방식은 더 나은 결과를
제공하겠지만 데이터에 레이블을 지정하는 노력이 추가로 필요하다.
- 어휘를 기반으로 한 감성 분석
- 텍스트 데이터에서 추가 특성을 구축한 후, 지도 머신러닝 알고리즘을 적용한 감성 분석
- 전이 학습 방법과 BERT 같은 사전 훈련된 언어 모델을 사용한 감성 분석
Chapter12. 지식 그래프 구축
지식 그래프는 큰 시멘틱 네트워크다. 사람, 장소, 이벤트 또는 회사와 같은 개체인 노드와 이러한 노드간의 형식화된
관계를 나타내는 간선(edge)로 구성된다.
정보 추출 과정
- 개체명인식 -> 상호 참조 연결 -> 개체 연결 작업 -> 관계 추출
https://gephi.org/
Chapter13. 프로덕션에서 텍스트 분석
Rest API(Fast API)를 사용해 동작하는 머신러닝 모델을 배포하는 방법을 소개하고 더 빠른 런타임을 위해
클라우드 인프라(GCP)를 사용하는 방법도 소개한다.
총평
텍스트 분석에 관한 책은 많이 있다. 하지만 텍스트 분석을 위해 전략적으로 설명해주는 책은 이 책이다.
머신러닝부터 딥러닝까지 수많은 기법에 대해 자세히 설명을 해주고, 유엔총회 연설문 부터 트위터, 뉴스기사 등
다양한 샘플 데이터셋을 이용해서 상황별로 가장 유용한 텍스트 분석 기법을 소개한다.
실제 모범 사례를 기반으로 상황에 맞춰 설계한 전처리 파이프라인 구축, 텍스트 분류, 감성분석 등 다양한 분야에 대해 알려주고 있다.
파이썬 라이브러리를 활용한 텍스트 분석을 쉽게 도전해 볼수 있도록 도와줄 것이다.
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."