예제로 배우는 자연어 처리 기초 [NLP 알고리즘, 텍스트 분류와 요약, 감성 분석]
- 원서명Natural Language Processing Fundamentals (ISBN 9781789954043)
- 지은이쇼홈 고시(Sohom Ghosh), 드와이트 거닝(Dwight Gunning)
- 옮긴이김창엽, 최민환
- ISBN : 9791161753959
- 35,000원
- 2020년 03월 20일 펴냄
- 페이퍼백 | 432쪽 | 188*235mm
- 시리즈 : acorn+PACKT, 데이터 과학
책 소개
요약
자연어 처리 분야에 입문할 때 필요한 기본기를 닦는 데 많은 도움을 주는 책이다. 텍스트 데이터를 수집하고 전처리하는 과정을 알아보고, 다양한 자연어 처리 알고리즘과 시각화를 적용해 텍스트 데이터에 내재된 지식을 추출하는 방법을 다룬다. 자연어 처리 과정에서 자주 활용하는 SpaCy, 젠심(Gensim)과 같은 라이브러리를 학습해, 실무에서 적용할 수 있는 애플리케이션을 개발할 수 있는 초석을 마련해 줄 것이다.
이 책에서 다루는 내용
■ 데이터 수집, 검증, 정제
■ 파이썬을 활용한 데이터 분석과 머신러닝 작업 수행
■ 전산언어학의 기초 이해
■ 자연어 처리 작업에 대한 일반적인 모델 구현
■ 적절한 평가 지표를 사용한 모델 성능 평가
■ 텍스트 데이터에 대한 시각화, 정량화, 탐색적 분석 수행
이 책의 대상 독자
NLP를 활용한 결과물을 만들고자 텍스트 데이터를 수집하고 분석하려는 초보자와 중급 수준의 데이터 과학자, 머신러닝 개발자 등에게 적합한 책이다. 파이썬에서 데이터 타입, 함수 작성, 라이브러리 불러오기를 사용해 코딩을 해봤다면 내용을 이해하기 좀 더 수월할 것이다. 언어학과 확률에 대한 경험이 있다면 역시 도움이 되겠지만 반드시 필요하지는 않다.
이 책의 구성
이 책은 파이썬 코드로 텍스트를 불러오는 매우 기초적인 작업부터 시작해 NLP에 적합한 형태로 텍스트를 정제, 어간 추출, 토큰화하는 데 필요한 파이프라인에 따라 진행된다. 그런 다음, 가장 일반적으로 사용되는 NLP 라이브러리를 사용해 NLP 통계적 방법, 벡터 표현, 모델 작성 등과 같은 기본기를 다진다. 마지막으로 여러 응용 분야에서 NLP 모델과 코드를 사용하는 실사례를 다룬다.
목차
목차
- 1장. 자연어 처리 소개
- 소개
- NLP의 역사
- 텍스트 분석과 NLP
- 예제 1: 기본적인 텍스트 분석
- NLP의 다양한 단계
- 토큰화
- 예제 2: 단순 문장의 토큰화
- PoS 태깅
- 예제 3: PoS 태깅
- 불용어 제거
- 예제 4: 불용어 제거
- 텍스트 정규화
- 예제 5: 텍스트 정규화
- 철자 수정
- 예제 6: 단어 및 문장 철자 수정
- 어간 추출
- 예제 7: 어간 추출
- 표제어 추출
- 예제 8: 표제어 추출을 사용해 기본 단어 추출
- NER
- 예제 9: 개체명 취급
- 단어 중의성 해결
- 예제 10: 단어 중의성 해결
- 문장 경계 인식
- 예제 11: 문장 경계 인식
- 실습 1: 원시 텍스트 전처리
- NLP 프로젝트 활성화
- 데이터 수집
- 데이터 전처리
- 피처 추출
- 모델 개발
- 모델 평가
- 모델 배포
- 요약
- 2장. 기본적인 피처 추출 방법
- 소개
- 데이터 타입
- 구조 기반 데이터 분류
- 내용 기반 데이터의 범주화
- 텍스트 데이터 정제
- 토큰화
- 예제 12: 텍스트 정제와 토큰화
- 예제 13: n-그램 추출
- 예제 14: 다른 패키지로 텍스트 토큰화 - 케라스와 TextBlob
- 토크나이저의 종류
- 예제 15: 다양한 토크나이저를 사용한 텍스트 토큰화
- 토큰화의 이슈들
- 어간 추출
- RegexpStemmer
- 예제 16: RegexpStemmer를 사용해 진행형 형태의 단어를 기본 단어로 변환
- 포터 형태소 분석기
- 예제 17: 포터 형태소 분석기
- 표제어 추출
- 예제 18: 표제어 추출
- 예제 19: 단어의 단수화와 복수화
- 언어 번역
- 예제 20: 언어 번역
- 불용어 제거
- 예제 21: 불용어 제거
- 텍스트로부터 피처 추출
- 원시 텍스트에서 일반적인 피처 추출
- 예제 22: 원시 텍스트에서 일반적인 피처 추출
- 실습 2: 텍스트에서 일반적인 피처 추출하기
- 단어 모음
- 예제 23: BoW 생성
- 지프의 법칙
- 예제 24: 지프의 법칙
- TF-IDF
- 예제 25: TF-IDF 표현
- 실습 3: 텍스트에서 특수한 피처 추출하기
- 피처 엔지니어링
- 예제 26: 피처 엔지니어링(텍스트 유사도)
- 단어 구름
- 예제 27: 단어 구름
- 다른 시각화 방법들
- 예제 28: 다양한 시각화(종속 구문 분석 트리와 개체명)
- 실습 4: 텍스트 시각화
- 요약
- 3장. 텍스트 분류기 개발
- 소개
- 머신러닝
- 비지도 학습
- 계층적 군집화
- 예제 29: 계층적 군집화
- K-평균 군집화
- 예제 30: K-평균 군집화
- 지도 학습
- 분류
- 로지스틱 회귀
- 나이브 베이즈 분류기
- K-최근접 이웃
- 예제 31: 텍스트 분류(로지스틱 회귀, 나이브베이즈, KNN)
- 회귀
- 선형 회귀
- 예제 32: 텍스트 데이터를 사용한 회귀분석
- 트리 기반 방법
- 랜덤 포레스트
- GBM과 XGBoost
- 예제 33: 트리 기반 방법(의사 결정 트리, 랜덤 포레스트, GBM, XGBoost)
- 샘플링
- 예제 34: 샘플링(단순 무작위 추출법, 층화 추출법, 다단계 추출법)
- 텍스트 분류기 개발
- 피처 추출
- 피처 엔지니어링
- 상호 연관된 피처 제거
- 예제 35: 높은 상관관계 피처들 제거(토큰)
- 차원 축소
- 예제 36: 차원 축소(PCA)
- 모델 유형 결정
- 모델 성능 평가
- 예제 37: RMSE와 MAPE 계산
- 실습 5: 엔드 투 엔드 텍스트 분류기 개발
- NLP 프로젝트를 위한 파이프라인 구축
- 예제 38: NLP 프로젝트를 위한 파이프라인 구축
- 모델 저장 및 불러오기
- 예제 39: 모델 저장 및 불러오기
- 요약
- 4장. 웹에서 텍스트 데이터 수집하기
- 소개
- 웹 페이지를 스크래핑해 데이터 수집하기
- 예제 40: HTML 파일에서 태그 기반 정보 추출하기
- 웹 페이지에서 내용 불러오기
- 예제 41: 온라인 텍스트 데이터 수집
- 예제 42: 주피터 노트북의 내용 분석하기(HTML 형식)
- 실습 6: 온라인 HTML 페이지에서 정보 추출하기
- 실습 7: 정규 표현식을 사용해 데이터 추출 및 분석하기
- 준정형 데이터 다루기
- JSON
- 예제 43: JSON 파일 다루기
- 실습 8: 온라인 JSON 파일 다루기
- XML
- 예제 44: 로컬에 있는 XML 파일 다루기
- API를 사용해 실시간 데이터 불러오기
- 예제 45: API를 사용한 데이터 수집
- API 생성
- 실습 9: 트위터에서 데이터 추출하기
- 로컬 파일에서 데이터 추출하기
- 예제 46: 로컬 파일에서 데이터 추출하기
- 예제 47: 로컬 파일에 다양한 작업 수행
- 요약
- 5장. 토픽 모델링
- 소개
- 토픽 찾기
- 테마 찾기
- 탐색적 데이터 분석
- 문서 군집화
- 차원 축소
- 역사 분석
- 단어 모음
- 토픽 모델링 알고리즘
- 잠재 의미 분석
- LSA - 동작 방식
- 예제 48: 잠재 의미 분석을 활용한 로이터 뉴스 기사 분석
- 잠재 디리클레 할당
- LDA 동작 방식
- 예제 49: 항공사 트윗에 있는 토픽
- 토픽 핑거프린팅
- 예제 50: 토픽 벡터를 사용한 문서 시각화
- 실습 10: 제퍼디 질문에 대한 토픽 모델링
- 요약
- 6장. 텍스트 요약과 텍스트 생성
- 소개
- 자동 텍스트 요약이란?
- 자동 텍스트 요약의 이점
- 텍스트 요약의 고수준 뷰
- 목적
- 입력
- 출력
- 추출적 텍스트 요약
- 추상적 텍스트 요약
- 시퀀스 투 시퀀스
- 인코더-디코더
- TextRank
- 예제 51: TextRank 기초
- 젠심을 사용한 텍스트 요약
- 실습 11: 젠심 텍스트 요약기를 사용해 다운로드한 페이지 요약하기
- 단어 빈도를 이용한 텍스트 요약
- 예제 52: 단어 빈도수 텍스트 요약
- 마르코프 체인을 사용한 텍스트 생성
- 마르코프 체인
- 예제 53: 마르코프 체인을 사용한 텍스트 생성
- 요약
- 7장. 벡터 표현
- 소개
- 벡터 정의
- 벡터 표현을 사용하는 이유
- 인코딩
- 문자 수준 인코딩
- 예제 54: ASCII 값을 사용한 문자 인코딩
- 예제 55: 넘파이 배열을 사용한 문자 수준 인코딩
- 위치 기반 문자 수준 인코딩
- 예제 56: 위치를 사용한 문자 수준 인코딩
- 원핫 인코딩
- 원핫 인코딩의 주요 단계
- 예제 57: 문자 원핫 인코딩 - 수동적인 방법
- 예제 58: 케라스를 활용한 문자 수준 원핫 인코딩
- 단어 수준 원핫 인코딩
- 예제 59: 단어 수준 원핫 인코딩
- 단어 임베딩
- Word2Vec
- 예제 60: 단어 벡터 학습
- 사전 학습된 단어 벡터 사용
- 예제 61: 사전 학습된 단어 벡터 불러오기
- 문서 벡터
- 문서 벡터의 활용
- 예제 62: 영화 대화를 문서 벡터로 변환하기
- 실습 12: 문서 벡터를 활용해 유사한 영화 대사 찾기
- 요약
- 8장. 감성 분석
- 소개
- 왜 감성 분석이 필요한가?
- 감성 분석의 성장
- 감성의 수익 창출
- 감성의 유형
- 주요 아이디어와 용어
- 감성 분석의 응용 분야
- 감성 분석에 사용하는 도구들
- 주요 클라우드 제공업체의 NLP 서비스
- 온라인 마켓플레이스
- 파이썬 NLP 라이브러리
- 딥러닝 라이브러리
- TextBlob
- 예제 63: TextBlob 라이브러리를 사용한 기본적인 감성 분석
- 실습 13: TextBlob 라이브러리를 사용해 트윗 감성 분석하기
- 감성 분석 데이터의 이해
- 예제 64: 감성 분석 데이터 불러오기
- 감성 모델 학습
- 예제 65: TF-IDF와 로지스틱 회귀를 사용한 감성 모델 학습
- 요약
- 부록