Top

자연어 처리 쿡북 with 파이썬 [파이썬으로 NLP를 구현하는 60여 가지 레시피]

  • 원서명Natural Language Processing with Python Cookbook: Over 60 recipes to implement text analytics solutions using deep learning principles (ISBN 9781787289321)
  • 지은이크리슈나 바브사(Krishna Bhavsar), 나레쉬 쿠마르(Naresh Kumar), 프라탑 단게티(Pratap Dangeti)
  • 옮긴이지은
  • ISBN : 9791161752655
  • 30,000원
  • 2019년 01월 31일 펴냄
  • 페이퍼백 | 344쪽 | 188*235mm
  • 시리즈 : 데이터 과학

책 소개

소스 코드 파일은 여기에서 내려 받으실 수 있습니다.

요약

최고의 플랫폼인 파이썬과 자연어 툴킷(NLTK)을 이용해 자연어 처리(NLP)를 수행하는 다양한 방법을 알려주는 독창적인 레시피가 담긴 책이다. 자연어 이해(NLU), 자연어 처리, 구문 분석 등 다양한 주제를 포함해 자연어를 다루는 데 사용할 수 있는 60여 개의 레시피를 접할 수 있다. 자연어 처리에 입문하면서 궁금한 부분이 생기면 레시피를 찾아보듯이 필요한 부분을 꺼내볼 수 있게 구성했다. 실용적인 감정 분석부터 최신 딥러닝 기술의 적용 방법까지 배울 수 있다. 이 책을 마치면 파이썬으로 NLP를 구현하는 데 필요한 모든 지식을 얻게 될 것이다.

이 책에서 다루는 내용

■ NLTK에서 사용할 수 있는 다양한 말뭉치 탐색과 워드넷 말뭉치 사용법
■ HTML, RSS, PDF, 워드 문서 등과 같은 원시 텍스트 관리와 처리
■ 토큰화, 형태소 분석, 철자 검사기 등과 같은 기술을 사용해 원시 텍스트를 전처리하는 방법과 정규표현식을 사용한 구현
■ 정규표현식을 사용한 텍스트 분석의 패턴 일치 기본 사항
■ 품사 태거와 문법을 사용해 직접 만드는 방법
■ 개체명(NE) 추출 방법과 RD, 시프트 감소, 차트 파서 등의 파서
■ LSTM을 사용한 셰익스피어 소설에서의 텍스트 생성
■ BABI 데이터셋과 LSTM을 사용한 에피소드 모델링
■ 딥러닝을 통해 생성(generative) 방식으로 개발하는 챗봇

이 책의 대상 독자

NLP를 사용해 고급 텍스트 분석을 구현하고자 기존 기술을 업그레이드하려는 데이터 과학자, 데이터 분석가를 대상으로 한다. 자연어 처리에 대한 몇 가지 기본 지식이 있으면 좋다.

이 책의 구성

1장, ‘말뭉치와 워드넷’에서는 NLTK에서 기본 제공하는 말뭉치와 빈도 분포에 접근하는 방법을 알아본다. 워드넷이 무엇인지 알아보고 그 기능과 사용법을 탐구할 것이다.
2장, ‘원시 텍스트, 소싱, 정규화’에서는 다양한 형식의 데이터 소스에서 텍스트를 추출하는 방법을 보여준다. 웹상에서 원시 텍스트를 추출하는 방법도 배우게 된다. 이러한 이질적인 소스로부터 원시 텍스트를 정규화하고, 텍스트를 말뭉치로 조직화할 것이다.
3장, ‘전처리’에서는 토큰화, 스테밍, 원형 복원, 편집 거리와 같이 몇 가지 중요한 사전 처리 단계를 소개한다.
4장, ‘정규표현식’에서는 가장 기본적이고 간단하지만 가장 중요하면서 강력한 도구 중 하나를 다룬다. 텍스트 분석을 수행하는 방법으로 패턴 매칭의 개념을 배우게 되며, 이를 위해 정규표현식보다 더 좋은 도구는 없다.
5장, ‘품사 태깅과 문법’에서는 품사 태깅은 구문 분석의 기초를 형성하며 문법은 품사 태그 및 청크를 사용해 형성되고 변형될 수 있다. 자체 품사 태거 및 문법을 사용하고 또 작성하는 법을 배운다.
6장, ‘청킹, 문장 구문 분석, 의존성’에서는 기본 제공 청커를 사용하는 방법을 배우고 자체 청커(의존성 파서)를 학습/작성하는 데 도움을 준다. 6장에서는 훈련된 모델을 평가하는 방법을 배우게 된다. 7장, ‘정보 추출과 텍스트 분류’에서는 개체명 인식에 대해 자세히 알려준다. 내장된 개체명을 사용하거나 딕셔너리를 사용해 개체명을 생성할 것이다. 기본 제공되는 텍스트 분류 알고리즘과 애플리케이션 주변의 간단한 레시피를 사용하는 방법을 배워보자.
8장, ‘고급 NLP 레시피’에서는 지금까지 모든 수업을 결합하고 실제 응용문제에 쉽게 적용할 수 있는 응용 가능한 레시피를 만드는 방법에 관한 것이다. 텍스트 유사도, 요약, 감정 분석, 표현 합성, 대용어 처리 등과 같은 레시피를 작성한다.
9장, ‘NLP에서의 딥러닝 적용’에서는 이메일 분류, CNN 및 LSTM의 감정 분류, 마지막으로 저차원 공간에서의 고차원 단어 시각화와 같은 NLP 문제의 애플리케이션을 사용하는 딥러닝에 필요한 다양한 기본적인 사항을 전달한다.
10장, ‘NLP 분야에서 딥러닝의 고급 응용’에서는 딥러닝을 이용한 최첨단 문제 해결 방법을 설명한다. 단편적인 사건들로 이뤄진 데이터에 대한 답변, 다음 최상의 단어를 예측하기 위한 언어 모델링 그리고 생성 기법을 사용하는 챗봇(chatbot) 개발을 포함한다.

저자/역자 소개

지은이의 말

자연어 처리에 관심을 가지고 이 책을 선택해 주신 독자분들께 감사 인사를 전한다. 이 책은 NLP 솔루션을 기초부터 이해하고 구현하기 위한 실용적인 관점을 제공한다. 자연어 툴킷(NLTK)에 내장된 데이터 소스에 접근하고 자신의 소스를 만드는 것으로 시작하는 여정을 도와줄 것이다. 그런 다음 텍스트 정규화(normalization), 전처리(preprocessing), 품사 태깅(POS tagging), 구문 분석(parsing) 등 복잡한 NLP 솔루션을 작성하게 된다.
이 책에서는 자연어 처리에서의 딥러닝 적용에 필요한 다양한 기본 사항이자, 최첨단 기술을 다룬다. 케라스(Keras) 소프트웨어를 사용해 딥러닝의 응용에 대해 설명할 것이다.
이 책은 다음과 같은 목표로 썼다.
1. 다양한 기본 지식을 자세하게 설명해 초보자가 작업 속도를 높일 수 있도록 설계했다. 그리고 선택한 데이터에 알고리즘을 적용할 때, 좀 더 명확하게 이해할 수 있도록 다양한 개념을 새롭고 쉽게 설명할 것이다.
2. NLP의 딥러닝 애플리케이션에 대한 새로운 트렌드를 소개한다.

지은이 소개

크리슈나 바브사(Krishna Bhavsar)

서비스업, 은행업, 헬스케어 등과 같은 다양한 산업 영역에서 10년간 근무하며 자연어 처리, 소셜미디어 분석, 텍스트 마이닝 작업을 했다. Stanford CoreNLP, IBM의 SystemText와 BigInsights, GATE, NLTK와 같은 다양한 NLP 라이브러리에서 텍스트 분석과 관련된 산업 문제를 해결하기 위해 연구했다. 또한 유명 TV 프로그램과 인기 있는 리테일 브랜드와 제품에 대한 소셜미디어 반응을 분석하는 일을 하고 있다. 2010년 NAACL에서 감정 분석 기술에 관한 논문을 발표했다. 최근에 NLP 파이프라인/툴 세트를 만들어 대중에게 오픈소스로 공개했다. 학문과 기술 외에도 오토바이와 축구에 대해 열정을 지니고 있다. 여가 시간에는 여행하고 탐험하는 것을 좋아한다. 오토바이로 인도를 일주하고 배낭여행으로 동남아시아와 유럽의 대부분의 국가를 여행했다.

나레쉬 쿠마르(Naresh Kumar)

「포춘(Fortune)」이 선정한 5백대 기업에서 대규모 인터넷 애플리케이션을 설계, 구현하고 운용하는 데 수십 년 이상의 전문 경험을 보유하고 있다. 전자상거래, 웹 호스팅, 의료, 빅데이터 및 분석, 데이터 스트리밍, 광고, 데이터베이스 등의 분야에서 실무 경험을 쌓은 풀스택 아키텍트다. 오픈소스를 신봉하며 적극적으로 기여한다. 리눅스 시스템 내부에서부터 프론트엔드에 이르기까지 최신식의 기술을 알고자 노력한다. 인도 라자스탄주(Rajasthan)에 있는 비츠 필라니(BITS-Pilani)대학에서 컴퓨터과학과 경제학을 복수 전공했다.

프라탑 단게티(Pratap Dangeti)

인도 방갈로르의 리서치 및 혁신 연구소인 TCS에서 구조화, 이미지, 텍스트 데이터를 위한 머신 러닝과 딥러닝 솔루션을 개발한다. 해석학 및 데이터 과학 분야 양쪽에서 많은 경험을 쌓았다. 산업공학과 운영 연구 프로그램으로 IIT 봄베이에서 석사 학위를 받았다. 인공지능 애호가이자 여가에는 미래의 기술과 혁신적인 방법론에 관해 읽기를 좋아한다. 또 『머신 러닝과 통계』(에이콘, 2018)를 저술하기도 했다.

옮긴이의 말

이 책의 원제는 『Natural Language Processing with Python Cookbook』이다. 제목에서 알 수 있듯이 파이썬보다는 자연어 처리에 초점 맞춰져, 파이썬은 도구로 사용하는 셈이다. 파이썬은 다양한 라이브러리가 잘 갖춰져 있어 텐서플로(TensorFlow)를 비롯한 ‘딥러닝’용 언어로 주목받는 것은 물론, 프로그래밍 초보자나 학생들의 코딩 입문용에 이르기까지 전천후로 쓰이는 언어다. 바꿔 말해, 자연어 처리를 배우기에 적합한 언어인 것이다. 파이썬 언어의 문법을 모르더라도 책에 나오는 레시피를 차근차근 따라 해보며 동작 원리를 파악할 수 있지만, 구문(syntax)을 세세하게 설명하지 않으므로 파이썬의 기본적인 이해는 필요하다. 만약 파이썬을 처음 접한다면 입문서를 읽어보거나 간단한 강의를 먼저 경험해볼 것을 추천한다. 이 책은 짤막한 레시피 형태의 구성으로 언제든 필요한 부분을 펼쳐볼 수 있게 돼 있다. 다만 이전 레시피가 다음 레시피에 활용되는 경우가 많으니 처음 한 번은 순서대로 읽어보고, 이후 코드 실습과 함께 원하는 부분을 다시 찾아볼 것을 권한다. 이 책에서는 자연어 처리와 관련된 전반적인 영역에 걸쳐 부품이자 재료들을 제공하고 있으니, 두 가지 혹은 그 이상의 레시피를 다양한 방식으로 조합한다면 다채로운 애플리케이션을 만들어볼 수 있을 것이다.
번역과 관련해 한마디 덧붙인다면 항상 용어의 선택이 가장 어렵다. 실무 현장에서는 갈수록 대부분의 IT 용어와 프로그래밍 용어가 원어(영어) 그대로 쓰이는 듯하다. 딥러닝을 심층 학습이라고 부르지 않는 것이 한 예다. 그렇지만 NLP는 ‘자연 언어 처리’라는 고유 영역이 있어 이 분야에서 통용되는 우리말이 있는 경우는 우리말로 옮겼다. 가령 ‘POSpart of speech’는 품사로 통일했고 ‘corpus’, ‘copora’는 ‘코퍼스’가 아니라 ‘말뭉치’로 적었다. 단, ‘브라운 코퍼스’와 같이 고유명사처럼 쓰이는 단어만 일부 예외를 뒀음을 참고하길 바란다.

옮긴이 소개

지은

인포메이션 아키텍처, 데이터 시각화, 콘텐츠 큐레이션 등 다방면에 관심이 많다. 장르를 불문하고, 글을 짓는 작가들 그리고 어떤 언어로 된 글을 다른 언어의 글로 옮기는 데 힘을 쏟고 있는 모든 이에게 경의를 표한다.

목차

목차
  • 1장. 말뭉치와 워드넷
    • 도입
    • 내장 말뭉치에 액세스하기
    • 외부 말뭉치의 다운로드, 로드하고 액세스하기
    • 브라운 코퍼스에서 세 가지 장르의 의문사 단어를 모두 세기
    • 웹 및 채팅 텍스트 말뭉치 파일의 빈도 분포 작업 탐색하기
    • 모호한 단어에서 워드넷을 사용해 모든 뜻을 탐색하기
    • 워드넷을 이용한 별개의 두 synsets을 선택하고 하위어와 상위어의 개념 탐구하기
    • 워드넷에 따라 명사, 동사, 형용사, 부사의 평균 다차원을 계산하기

  • 2장. 원시 텍스트, 소싱, 정규화
    • 소개
    • 문자열 작업의 중요성
    • 더 깊이 있는 문자열 연산
    • 파이썬에서 PDF 파일 읽기
    • 파이썬으로 워드(Word) 문서 읽기
    • PDF, DOCX, 일반 텍스트 파일을 가져와 사용자 정의 말뭉치 만들기
    • RSS 피드의 내용 읽기
    • BeautifulSoup을 이용한 HTML 파싱하기

  • 3장. 전처리
    • 개요
    • 토큰화-NLTK의 내장 토크나이저 사용법 배우기
    • 스테밍-NLTK의 내장 스테머 사용법 배우기
    • 원형 복원-NLTK의 WordnetLemmatizer 사용법 배우기
    • 불용어-불용어 말뭉치 사용법 및 불용어가 만들어내는 차이점 확인하기
    • 편집 거리-두 문자열 간의 편집 거리를 찾기 위한 알고리즘 작성
    • 두 단문 처리 및 둘 사이의 공통 어휘 추출하기

  • 4장. 정규표현식
    • 개요
    • 정규표현식–*, +, ? 배우기
    • 정규표현식–$와 ^ 그리고 단어의 시작과 끝이 아닌 것을 사용하는 방법 학습하기
    • 여러 개의 리터럴 문자열 및 하위 문자열 발생 찾기
    • 날짜 정규식과 문자 집합 또는 문자 범위 생성 방법 배우기
    • 모든 다섯 글자 단어를 찾고 일부 문장에서 약어를 작성
    • 독자적인 정규식 토크나이저 작성 방법
    • 자체 정규식 스테머 작성법 배우기

  • 5장. 품사 태깅과 문법
    • 소개
    • 기본 제공 태거 탐색하기
    • 자체 태거 작성하기
    • 자체 태거 학습시키기
    • 자체 문법 작성법 배우기
    • 확률적 CFG 작성하기
    • 재귀적 CFG 작성하기

  • 6장. 청킹, 문장 구문 분석, 의존성
    • 소개
    • 내장 청커 사용하기
    • 간단한 자체 청커 작성하기
    • 청커 학습시키기
    • 재귀적 파생 구문 분석
    • shift-reduce 구문 분석
    • 의존성 문법과 투영 종속성 분석
    • 차트 파싱하기

  • 7장. 정보 추출과 텍스트 분류
    • 소개
    • 내장 NER 사용
    • 딕셔너리 생성, 반전, 사용하기
    • 피처셋 선택하기
    • 분류기를 사용해 문장 분할하기
    • 문서 분류하기
    • 문맥 기반 품사 태거 만들기

  • 8장. 고급 NLP 레시피
    • 소개
    • NLP 파이프라인 생성하기
    • 텍스트 유사도 문제 해결하기
    • 주제 식별하기
    • 텍스트 요약하기
    • 대용어 처리하기
    • 단어의 중의성 해소
    • 감정 분석 수행
    • 고급 감정 분석 탐구
    • 대화형 비서 혹은 챗봇 만들기

  • 9장. NLP에서의 딥러닝 적용
    • 소개
    • TF-IDF 생성 후 DNN을 사용해 이메일 분류하기
    • 합성곱망 CNN 1D를 이용한 IMDB 감정 분류하기
    • 양방향 LSTM을 사용하는 IMDB 감정 분류하기
    • 신경 워드 벡터 시각화를 사용해 고차원 단어를 2D에 시각화하기

  • 10장. NLP분야에서 딥러닝의 고급 응용
    • 소개
    • LSTM을 사용해 셰익스피어의 문장에서 고급 자동 텍스트 생성하기
    • 메모리 네트워크를 사용해 에피소드 데이터에 대한 질의 응답하기
    • 순환 신경망 LSTM을 사용해 다음 단어를 예측하는 언어 모델링
    • 순환 신경망(LSTM)을 사용하는 생성형 챗봇

관련 블로그 글

컴퓨터와 인간의 소통 방법, 자연어 처리


 


 

최근 핸드폰, 스피커, 리모콘 등 다양한 기계를 음성 인식으로 조작하는 모습을 쉽게 볼 수 있다.

단순한 기계 조작은 물론이고 실제 사람과 대화하듯이 궁금한 것을 묻고 답하는 것도 가능하다.

이외에도 기계 번역, 챗봇, 검색 엔진 등 다양한 분야에서 자연어 처리 기술을 쉽게 찾아볼 수 있다.

 





자연어: 일반 사회에서 자연히 발생하여 쓰이는 언어로, 인공적으로 만들어진 언어인 인공어와 구분하여 부르는 개념 

인공어: 자연적으로 생성된 자연어와 달리 한 사람이나 여러 사람의 의도와 목적에 따라 만들어진 언어

 

자연어 처리란 사용자가 입력하는 자연어를 분석하고 처리해 컴퓨터가 이해할 수 있는 형태로 만드는 기술이다.

자연어 처리에는 사람들이 사용하는 다양한 단어와 각 단어가 사용되는 상황, 상호작용하는 방식 등 방대한 양의 언어 데이터가 필요하며, 사용자가 입력한 데이터의 형태, 구문, 의미 등의 분석을 통해 텍스트를 이해하고 적합한 결과를 출력한다.

지난해 10월 구글은 AI 언어 모델인 버트(BERT)를 발표했다.

버트는 구글의 딥러닝 아키텍처인 '트랜스포머'로 구성된 자연어 처리 모델로 대표적인 자연어 처리 평가 지표인 GLUE(General Language Understanding Evaluation) SQuAD(Stanford Question Answering Dataset) 중 일부 항목에서 인간보다 뛰어난 성적을 보이면서 많은 주목을 받기도 했다.

 



 


활용 사례 1.

태블로 소프트웨어(Tableau Software)는 자연어 질의를 지원하는 애스크 데이터(Ask Data)를 발표했다.

애스크 데이터를 사용해 확인하고 싶은 내용을 입력하면 그에 대한 답변을 시각화 자료로 보여준다.


활용 사례 2.

아시아나항공의 챗봇 서비스 아론(Aron)에서는 간단한 문의는 물론 항공권 예약과 구매까지 가능해졌다.

아론은 애저(Azure)와 루이스(LUIS)를 활용해 개발됐으며, 다양한 메신저와 애플리케이션을 통해 서비스를 제공하고 있다.


활용 사례 3.

퀄컴 테크놀로지는 아마존의 '알렉사 보이스 서비스' 개발 키트를 기반으로 개발한 퀄컴 스마트 오디오 플랫폼을 시연했다.

차량에 설치된 스마트 오디오 플랫폼을 통해 음성으로 길을 검색하거나 음악, 영상을 재상할 수도 있다.

 





자연어 처리 with 파이썬은 파이썬과 자연어 툴킷(NLTK)을 이용해  자연어 처리(NLP)를 수행하는 다양한 방법을 알려주는 독창적인 레시피가 담긴 책이다.

자연어 이해, 자연어 처리, 구문 분석 등 다양한 주제를 포함해 실용적인 감정 분석부터 최신 딥러닝 기술의 적용 방법까지 자연어를 다루는 데 사용할 수 있는 60여 개의 레시피를 접할 수 있다.

자연어 처리에 관심이 있는 독자라면 이 책을 통해 다양한 상황에서 자연어 처리를 어떻게 구현하는지 확인해보자.



CC

크리에이티브 커먼즈 라이센스 이 저작물은 크리에이티브 커먼즈 코리아 저작자표시 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안

정오표

정오표

[p.14 : 아래서 3행]
원시 텍스트, 소싱, 정규화
->
처리 전 텍스트, 소싱, 정규화

[p.30 : 3행]

[p.41: 코드 2행]

[p.42: 3번 코드]

->

[p.44 : 9행]
Types of beds(Hyponyms)
->
bed의 형태(하위어)

[p.56 : 끝에서 1행]
https://www.dropbox.com/sh/bk18dizhsu1p534/AABEuJw4TArUbzJf4Aa8gp5Wa?dl=0
->
http://bit.ly/nlp-python-cookbook

[p.58 : 3행]
for i in range(0,readpdf.getNumPages()-1):
->
for i in range(0, read
pdf.getNumPages() ):
또는
for i in range(read_pdf.getNumPages()):

[p.63 : 3행]

[p.75 : 1행]

[p.75 : 3행]

[p.79 : 16행]
출력 :"
->
출력 : "

[p.115 : 7행]
('2017',
->
('2018',

[p.115 : 12행]
('2017',
->
('2018',

[p.181 : 8행]
'Bangalore' | 'Karnataka'
->
'Seoul' | 'Korea'

[p.213 : 이미지 안 3행]
Bangalore?",
->
Seoul?",

[p.249 : 5행]

[p.251 : 아래서 5-6행]

[p.267 : 이미지 안 15행]
unknown built-in chat engine {}
->
알 수 없는 내장 채팅 엔진 {}

[p.271 : 아래서 2행]
모두 종료되면 engines are excited-> exited my Engine()을
->
모두 종료되면 myEngine()을