로그인회원가입장바구니고객센터마이페이지회사소개
kangcom
전체
Home >   >   > 

자연어 텍스트 처리를 통한 검색 시스템 구축

 [아파치 솔라, 루씬, OpenNLP 등 오픈소스 활용 에이콘 데이터 과학 시리즈]
   
지은이 그랜트 잉거솔, 토마스 모튼, 드류 패리스   |   출판사 에이콘  |   발행일 2014년 12월 23일
 
클릭하시면 큰 도서이미지를 보실 수 있습니다.
판매가 40,000원36,000원 10%
마일리지 5% 2,000원
발행일 2014-12-23
ISBN 8960776505 | 9788960776500
기타정보 번역서 | 460쪽 | 일반
예상출고일 1~2일 이내 (근무일기준)
배송비 무료배송
   
종합지수 0p
   
 

[자연어 텍스트 처리를 통한 검색 시스템 구축]은 검색과 자연어 처리에 대한 기초적인 지식을 소개하고, 아파치 솔라, OpenNLP 등의 오픈 소스를 이용해서 실제로 기능을 사용하는 법을 알려주는 책이다. 책에는 텍스트 길들이기 기법, 솔라나 머하웃 등의 라이브러리, 텍스트 처리 애플리케이션을 구축하는 방법 등을 수록하고 있다.



[요약 ]

현대 웹 서비스에서 검색은 빼놓을 수 없는 기능이다. 사용자는 검색에
익숙하고, 검색 결과의 앞부분에서 곧바로 자신이 원하는 링크를 찾길 바란다.
사용자의 기준을 만족시키기는 어렵지만, 다행히 잘 만들어진 오픈 소스가 이미
존재한다. 이 책은 검색과 자연어 처리에 대한 기초적인 지식을 소개하고,
아파치 솔라, OpenNLP 등의 오픈 소스를 이용해서 실제로 기능을 사용하는 법을
알려준다. 이 책은 검색이나 자연어 처리를 서비스의 기능으로 제공해야 하는
개발자에게 좋은 길잡이가 되어줄 것이다.



[ 이 책에서 다루는 내용 ]

인생에는 정보가 너무나 많고, 우리는 거기에 압도당해 있다. 다행히도 영리한
개발자에게 많이 필요한 구명줄을 던져줄 수 있는 구조화되지 않은 텍스트를
관리하기 위한 실용적인 도구와 기법들이 있다. 이 책에서 그 도구와 방법들을
찾아볼 수 있다. 이 책은 실제 애플리케이션에서 텍스트를 다루는 방법에 대한
실용적인 예제 중심의 안내서다. 전문(full-text) 검색, 고유명사 인식,
클러스터링, 태그 부착, 정보 추출, 요약 같은 유용한 기법을 소개한다. 독자는
실제 사용 사례의 기반 지식을 체계적으로 받아들이면서 다양한 사례를 탐구할
수 있다.



■ 텍스트 길들이기 기법

■ 솔라나 머하웃 등의 라이브러리

■ 텍스트 처리 애플리케이션을 구축하는 방법



이 책은 특수 용어를 피하고, 주제를 분명하고 간결하게 보여줘서 통계나 자연
언어 처리에 대한 배경 지식 없이도 이해할 수 있다. 예제는 자바로 돼 있지만,
개념은 어떤 언어에도 적용할 수 있다.



[이 책에 쏟아진 찬사 ]

“굉장히 복잡한 프로세스의 수수께끼 같은 면을 끄집어 냈다!

- 리즈 리디(Liz Liddy) / 시라큐즈 대학 정보학부 학과장



“텍스트 분석과 처리를 있는 그대로 보여준다. 분명하고, 실용적이며,
오픈소스를 사용해서 말이다!”

- 데이비드 바이스(David Weiss) / 캐럿 서치(Carrot Search) s.c.



“텍스트 문서에 갇혀 있는 정보를 어떻게 드러내고 활용하는지를 잘
보여준다.”

- 릭 바그너(Rick Wagner) / 레드 햇(Red Hat)



“텍스트 개념을 예제와 함께 익힘으로써, 텍스트 검색을 좀더 손쉬워진다.”

- 더그 워렌(Doug Warren) / 자바 웹 서비스(Java Web Services)



“텍스트 처리 도구와 기법에 대한 훌륭한 가이드”

- 줄리앙 니오슈(Julien Nioche) / 디지털페블(DigitalPebble, Ltd.)





[추천의 글 ]

고품질 텍스트 처리 능력에 대한 요구가 기하급수적으로 증가하는 이 시기에
어떤 식으로든 텍스트 정보에 의존하지 않는 분야나 산업을 생각하기는 어렵다.
급성장하는 웹 기반 경제는 극적으로 신속히 의존 정도를 늘렸다. 동시에 재능
있는 기술 전문가의 수요도 빠른 속도로 증가하고 있다. 이런 환경에 나온
훌륭하고 아주 실용적인 이 책은 실질적이고 현실적이며, 테스트된 지침과
설명을 제공해 준다.



몇 년간 나와 함께 일한 적이 있는 탁월하고 대단히 경험 많은 소프트웨어
엔지니어인 그랜트 잉거솔(Grant Ingersoll), 드류 패리스(Drew Farris)와
자연언어 처리 분야의 존경받는 기여자인 톰 모튼(Tom Morton)은 이 책에서
고도로 선별된 텍스트 처리자, 즉 자연언어 처리NLP 엔지니어 집단에 합류하는
데 관심이 있는 다른 기술 분야의 사람들을 안내하기 위한 현실적 과정을
제공한다.



내가 ‘세상을 위한, 세상 속에서의 학습’이라고 생각하는 것과 같은 방식으로
그랜트, 드류, 톰은 사실 아주 복잡한 프로세스에서 불가사의를 제거했다.
그들은 기존 도구, 구현된 예제, 잘 테스트된 코드에 집중해서 한 학기의 NLP
학습 과정을 수료하지 않고서도 이 책만으로도 가능하게 만들었다.



소프트웨어 엔지니어로서 독자가 예제와 코드 베이스, 여기서 참조한 오픈소스
도구를 자신의 것으로 익힐 수 있는 기초가 있다면, 예상한 것보다 더 빨리 진짜
전문가가 되고 실세계의 기회를 잡을 준비를 할 수 있을 것이다.

- 리즈 리디(Liz Liddy) / 시라큐즈 대학 정보학부 학과장





[이 책의 대상 독자 ]



이 책이 당신을 위한 것일까? 어쩌면 그럴지도 모른다. 대상 독자는 검색,
자연언어 처리, 기계학습 배경 지식이 (거의) 없는 소프트웨어 현업 종사자다.
사실 이 책은 많은 회사에서 본 것과 같이 새 애플리케이션이나 기존
애플리케이션에 검색과 기타 기능을 추가하는 과제가 주어진 개발 팀이면서 극히
적은 개발자만 텍스트 작업에 대한 경험이 있거나 아예 없는 작업 환경에 있는
현업 종사자들을 목표로 한다. 그들에게는 불필요한 지식 때문에 꼼짝 못하는 일
없이 개념을 이해하는 데 도움이 될 만한 입문서가 필요하다.



많은 경우 위키피디아나 중대한 학술 논문처럼 쉽게 접근할 수 있는 자료에 대한
참고 문헌도 제공한다. 그렇게 해서 독자가 원한다면 더 상세한 내용을 탐구할
수 있는 도약대를 제공한다. 게다가 대다수 오픈소스 도구와 예제가 자바로 돼
있지만, 개념과 아이디어는 수많은 다른 프로그래밍 언어로도 옮길 수 있기
때문에 루비 사용자(Rubyist), 파이썬 사용자(Pythonista), 기타 언어
사용자들도 이 책을 편하게 느낄 수 있다.



이 책은 학생들이 교실과 더 학술 지향적인 책에서 배운 개념을 구현할 필요가
있을 때 도움이 될 것이지만, 이 시스템에 연관된 수학에 대한 설명이나 주제에
대한 학술적인 엄격함을 구하는 사람을 위한 책은 결코 아니다.



경험자들도 이 책 곳곳에서 책이 설명하는 오픈소스 패키지를 사용하는 데 대한
흥미로운 정보를 찾을 수도 있겠지만, 이 책은 다수의 텍스트 기반
애플리케이션을 구축한 적이 있는 경험 있는 현장 실무자를 대상으로 하지는
않는다. 그렇지만 한 명 이상의 경험 있는 실무자들은 이 책이 이 분야에
신참자인 팀 구성원들에게 텍스트 기반 애플리케이션을 작성하는 데 관련된
아이디어와 코드에 대해 속도를 높이게 해 주는 훌륭한 방식이라고 우리에게
말해줬다. 궁극적으로 이 책이 현대 프로그래머를 위한 최신 안내서이면서, 처음
텍스트 기반 애플리케이션 프로그래밍 경력을 시작했을 때 우리가 바라던 바로
그 안내서이기를 바란다.





[ 이 책의 구성 ]



1장, '텍스트 길들이기 시작'에서는 텍스트 처리가 중요한 이유와 이것이 무엇
때문에 도전적인지 설명한다. 텍스트를 길들이는 데 오픈소스 라이브러리를
활용하기 위한 준비를 하면서 사실 기반 질의응답QA 시스템을 간단히 소개한다.



2장, '텍스트 길들이기 기초'에서는 텍스트 처리의 구성 요소인 토큰화, 청크화,
구문 해석, 품사 태그 부착을 소개한다. 또한 아파치 티카(Apache Tika)
오픈소스 프로젝트를 사용해서 몇 가지 일반적인 파일 형식에서 텍스트를
추출하는 방법을 살펴본다.



3장, '검색'에서는 검색 이론과 벡터 공간 모델의 기본 지식을 탐구한다. 아파치
솔라 검색 서버를 소개하고, 솔라를 사용해서 콘텐츠를 인덱스로 만드는 방법을
보여준다. 수량과 품질이라는 검색 성능 요소를 어떻게 평가하는지 배운다.



4장, '유사 문자열 일치'에서는 접두사와 n그램을 사용한 유사 문자열 일치를
살펴본다. 두 개의 문자 중첩 척도, 자카드 척도와 자로 윙클러 거리를 자세히
알아보고, 솔라를 사용해서 일치 후보를 찾고 순위화하는 방법을 설명한다.



5장, '인명, 지명, 사물 식별'에서는 개체명 인식 너머의 기본 개념을 소개한다.
개체명을 찾기 위해 OpenNLP를 사용하는 방법을 보이고, 몇 가지 OpenNLP 성능
고려 사항을 설명한다.



6장, '텍스트 클러스터링'에서는 텍스트 클러스터링만을 다룬다. 여기서
일반적인 텍스트 클러스터링 알고리즘 너머의 기본 개념을 배우고, 텍스트
애플리케이션을 향상시키는 데 클러스터링이 어떤 도움을 줄 수 있는지에 대한
예제를 살펴본다. 또한 아파치 머하웃을 사용해 문서 컬렉션 전체를
클러스터링하는 방법과, Carrot2를 사용해 검색 결과를 클러스터링하는 방법도
설명한다.



7장, '분류, 카테고리 분류, 테깅'에서는 분류, 카테고리 분류, 태그 부착
너머의 기본 개념을 설명한다. 카테고리 분류가 텍스트 애플리케이션에서 어떻게
쓰이는지, 어떻게 오픈소스 도구를 사용해서 분류기를 구축하고, 훈련하고,
평가하는지 보여준다. 또한 문서 카테고리 분류기를 구축하기 위해 머하웃의
나이브 베이즈 알고리즘 구현체를 사용한다.



8장, '질의응답 시스템 예제 구축'에서는 QA 시스템 예제를 구축하기 위해 앞서
다른 장에서 배운 모든 것들을 모은다. 이 단순한 애플리케이션은 위키피디아를
지식 기반으로 사용하고, 솔라(Solr)을 기준 시스템으로 사용한다.



9장, '길들여지지 않는 텍스트: 다음 개척지 탐구'에서는 검색과 NLP 다음에
나올 주제와 의미론, 담론, 화용론의 역할을 탐구한다. 여러 언어에 걸친 검색과
콘텐츠에서의 감정 감지, 거기에 더해 최근 생겨난 도구, 애플리케이션,
아이디어를 다룬다.


1장. 텍스트 길들이기 시작
1.1 텍스트 길들이기가 중요한 이유
1.2 미리보기: 사실 기반 질의응답 시스템
1.2.1 안녕하세요, 프랑켄슈타인 박사님
1.3 텍스트를 이해하기는 어렵다
1.4 길들여진 텍스트
1.5 텍스트와 지능적인 앱: 검색과 그 너머
1.5.1 검색과 일치
1.5.2 정보 추출
1.5.3 정보 그룹화
1.5.4 지능적인 애플리케이션
1.6 정리
1.7 참고 자료

2장. 텍스트 길들이기 기초
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.2.5 문장 탐지
2.2.6 구문 분석과 문법
2.7.7 시퀀스 모델링
2.3 일반 파일 형식에서 콘텐츠의 전처리와 추출
2.3.1 전처리의 중요성
2.3.2 아파치 티카를 사용한 콘텐츠 추출
2.4 정리
2.5 참고 자료

3장. 검색
3.1 검색과 패싯 사례: 아마존
3.2 검색 개념 개론
3.2.1 콘텐츠로 색인 만들기
3.2.2 사용자 입력
3.2.3 벡터 공간 모델로 문서 순위화
3.2.4 결과 표시
3.3 아파치 솔라 검색 서버 소개
3.3.1 솔라 처음 실행
3.3.2 솔라 개념 이해
3.4 아파치 솔라를 사용한 콘텐츠 색인
3.4.1 XML을 사용한 인덱스
3.4.2 솔라와 아파치 티카를 사용한 콘텐츠 추출과 인덱스 작성
3.5 아파치 솔라로 콘텐츠 검색
3.5.1 솔라 질의 입력 파라미터
3.5.2 추출된 콘텐츠에 대한 패싯
3.6 검색 성능 요소 이해
3.6.1 품질 판단
3.6.2 수량 판단
3.7 검색 성능 개선
3.7.1 하드웨어 개선
3.7.2 분석 개선
3.7.3 질의 성능 개선
3.7.4 대안적인 채점 모델
3.7.5 솔라의 성능 개선을 위한 기법
3.8 검색 대안
3.9 정리
3.10 참고 자료

4장. 유사 문자열 일치
4.1 유사 문자열 일치에 대한 접근 방식
4.1.1 문자 겹침 척도
4.1.2 편집 거리 척도
4.1.3 n그램 편집 거리
4.2 유사 일치 문자열 검색
4.2.1 접두사를 사용한 일치 확인을 솔라로 수행
4.2.2 접두사 일치를 위한 트라이 사용
4.2.3 일치 확인을 위한 n그램 사용
4.3 유사 문자열 일치 애플리케이션 작성
4.3.1 검색에 사전 입력 추가
4.3.2 검색을 위한 질의 철자 검사
4.3.3 레코드 일치 확인
4.4 정리
4.5 참고 자료

5장. 인명, 지명. 사물 식별
5.1 개체명 인식에 대한 접근법
5.1.1 규칙을 사용한 이름 인식
5.1.2 이름 인식에 통계적 분류기 사용
5.2 OpenNLP를 사용한 기본적인 개체 인식
5.2.1 OpenNLP로 이름 찾기
5.2.2 OpenNLP로 식별된 이름 해석
5.2.3 확률 기반 이름 필터링
5.3 OpenNLP를 이용한 심도 있는 개체 식별
5.3.1 OpenNLP로 복수의 개체 유형 인식
5.3.2 후드 아래: OpenNLP가 이름을 식별하는 방법
5.4 OpenNLP의 성능
5.4.1 결과의 품질
5.4.2 실행 시간 성능
5.4.3 OpenNLP의 메모리 사용량
5.5 OpenNLP 개체명 식별을 새 도메인의 요구 사항에 맞추기
5.5.1 모델 훈련 이유와 방법
5.5.2 OpenNLP 모델 훈련
5.5.3 모델링 입력 바꾸기
5.5.4 이름을 모델로 만드는 새로운 방법
5.6 정리
5.7 추가 자료

6장. 텍스트 클러스터링
6.1 구글 뉴스 문서 클러스터링
6.2 클러스터링 기초
6.2.1 클러스터링의 대상인 세 가지 텍스트 유형
6.2.2 클러스터링 알고리즘의 선택
6.2.3 유사도 결정
6.2.4 결과에 라벨 붙이기
6.2.5 클러스터링 결과의 평가 방법
6.3 간단한 클러스터링 애플리케이션 설정
6.4 Carrot2를 사용한 검색 결과 클러스터링
6.4.1 Carrot2 API 사용
6.4.2 Carrot2를 사용한 솔라 검색 결과 클러스터링
6.5 아파치 머하웃을 사용한 문서 컬렉션 클러스터링
6.5.1 클러스터링용 데이터 준비
6.5.2 K 평균 클러스터링
6.6 아파치 머하웃을 사용한 주제 모델링
6.7 클러스터링 성능 분석
6.7.1 자질 선택과 축소
6.7.2 Carrot2 성능과 품질
6.7.3 머하웃 클러스터링 벤치마크
6.8 감사의 말
6.9 정리
6.10 참고 자료

7장. 분류, 커테고리 분류, 태깅
7.1 분류와 카테고리 분류 소개
7.2 분류 과정
7.2.1 분류 체계 선택
7.2.2 텍스트 카테고리 분류를 위한 자질 찾기
7.2.3 훈련 데이터의 중요성
7.2.4 분류기 성능 평가
7.2.5 분류기를 생산 환경에 배치
7.3 아파치 루씬으로 문서 카테고리 분류기 작성
7.3.1 루씬으로 텍스트 카테고리 분류
7.3.2 MoreLikeThis 카테고리 분류기에 사용할 훈련 데이터 준비
7.3.3 MoreLikeThis 분류기 훈련
7.3.4 MoreLikeThis 카테고리 분류기로 문서를 카테고리 분류
7.3.5 MoreLikeThis 카테고리 분류기 테스트
7.3.6 생산 단계에서의 MoreLikeThis
7.4 아파치 머하웃으로 나이브 베이즈 분류기 훈련
7.4.1 나이브 베이즈 분류 방식으로 텍스트를 카테고리 분류
7.4.2 훈련 데이터 준비
7.4.3 테스트 데이터 숨겨두기
7.4.4 분류기 훈련
7.4.5 분류기 테스트
7.4.6 부트스트래핑 프로세스 개선
7.4.7 솔라와 머하웃 베이즈 분류기 통합
7.5 OpenNLP로 문서 카테고리 분류
7.5.1 회귀 모델과 최대 엔트로피 문서 카테고리 분류
7.5.2 최대 엔트로피 문서 카테고리 분류기를 위해 훈련 데이터 준비
7.5.3 최대 엔트로피 문서 카테고리 분류기 훈련
7.5.4 최대 엔트로피 분류기 테스트
7.5.5 생산 시스템에서의 최대 엔트로피 문서 카테고리 분류
7.6 아파치 솔라를 사용하는 태그 추천기 작성
7.6.1 태그 추천을 위한 훈련 데이터 수집
7.6.2 훈련 데이터 준비
7.6.3 솔라 태그 추천기 훈련
7.6.4 추천 태그 생성
7.6.5 태그 추천기 평가
7.7 정리
7.8 참고 자료

8장. 질의응답 시스템 예제 구축
8.1 질의응답 시스템의 기초
8.2 QA 코드 설치와 실행
8.3 표본 질의응답 아키텍처
8.4 질문의 이해와 답변 생성
8.4.1 답변 유형 분류기 훈련
8.4.2 질의를 청크로 분리
8.4.3 답변 유형 계산
8.4.4 질의 생성
8.4.5 후보 패시지 순위화
8.5 시스템 개선을 위한 과정
8.6 정리
8.7 참고 자료

9장. 길들여지지 않는 텍스트: 다음 개척지 탐구
9.1 의미론, 담론, 화용론: 고수준 NLP 탐구
9.1.1 의미론
9.1.2 담화
9.1.3 화용론
9.2 문서와 컬렉션 요약
9.3 관계 추출
9.3.1 접근 방식 개요
9.3.2 평가
9.3.3 관계 추출을 위한 도구
9.4 중요한 콘텐츠와 인물 식별
9.4.1 전반적 중요도와 권위
9.4.2 개인적 중요도
9.4.3 중요성에 대한 자료와 포인터
9.5 정서 분석을 통해 감정 감지
9.5.1 역사와 비평
9.5.2 도구와 데이터 요구
9.5.3 기본적 극성 알고리즘
9.5.4 고급 주제
9.5.5 정서 분석을 위한 오픈소스 라이브러리
9.6 교차 언어 정보 검색
9.7 정리
9.8 참고 자료

저자 : 그랜트 잉거솔

저자 그랜트 잉거솔 (Grant Ingersoll)은 검색과 자연언어 처리 도구를 개발하는 루시드 이미지네이션Lucid Imagination의 창업자다. 루시드 이미지네이션을 창업하기 전에는 시라큐즈 대학의 자연언어 처리 센터의 시니어 소프트웨어 엔지니어였다. 자연언어 처리 센터와 그 이전에는 MNIS-텍스트와이즈(TextWise)에서 정보 검색, 질의응답, 클러스터링, 요약, 카테고리 분류를 수반하는 다수의 텍스트 처리 애플리케이션을 개발했다. 아파치 루씬(Lucene) 자바 프로젝트의 커미터이면서 강연자이자 트레이너이고, 아파치 머하웃(Mahout) 기계학습 프로젝트의 공동 창립자다. 시라큐즈 대학에서 컴퓨터과학 석사학위를 받았으며, 암허스트 칼리지에서 수학과 컴퓨터과학 학사학위를 받았다.



저자 : 토마스 모튼

저자 토마스 모튼 (Thomas Morton)은 텍스트 처리와 기계학습 분야의 소프트웨어를 개발하고 연구를 수행한다. 최근 5년 동안 OpenNLP 텍스트 처리 프로젝트와 최대 엔트로피 기계학습 프로젝트의 주요 개발자이자 관리자였다. 2005년, 펜실베이니아 대학에서 컴퓨터과학 박사학위를 받았고, 업계에서 텍스트 처리와 기계학습을 기업 수준의 개발에 적용하는 일을 수행했다. 현재 필라델피아에 있는 컴캐스트 인터랙티브 미디어(Comcast Interactive Media)에서 소프트웨어 아키텍트로 일하고 있다.



저자 : 드류 패리스

저자 드류 패리스 (Drew Farris)는 대규모 분석과 분산 컴퓨팅 및 기계학습을 주로 하는 전문 소프트웨어 개발자이자 기술 컨설턴트다. 전에는 텍스트와이즈(Textwise)에서 일하면서 자연언어 처리와 분류, 시각화 기법을 조합해서 다양한 텍스트 조사와 관리, 검색 애플리케이션을 만들었다. 아파치 머하웃, 루씬, 솔라 등의 여러 가지 오픈소스 프로젝트에 기여했고, 시라큐즈 대학 정보학부의 정보자원관리 석사학위와 컴퓨터그래픽스 학사학위를 보유하고 있다.



역자 : 임혜연

역자 임혜연은 소프트웨어가 세상을 더 좋게 바꿀 수 있는지 고민하며 사는 개발자다. 프로그래밍 언어와 사람이 쓰는 언어 모두에 관심이 있다. 옮긴 책으로는 에이콘출판사에서 발간한 『데이터 접근 패턴』(2013)이 있다.


등록된 서평이 없습니다.
바로바로 HTML5...
김지훈, 김도균, 이현우, 진정원
선택된 상품을 찜하실 수 있습니다. 선택된 상품을 바로구매 하실 수 있습니다.
 
전체평균(0)
회원평점   회원서평수 0
에이콘 출판사의 신간
자바 데이터 분석
존 R. 허바드 [옮긴이] 김명훈 저
31,500원
(10%↓+5%)
 
보안 빅데이터 분석 플랫폼 구축과 활용
김대용 저
31,500원
(10%↓+5%)
 
Functional Programming in C++
이반 추키츠 [옮긴이]김점갑 저
31,500원
(10%↓+5%)
 
스프링 부트 2 레시피
마틴 데이넘 [옮긴이]최정호, 임진욱, 김명훈 저
27,000원
(10%↓+5%)
 
사운드 디자인
앰버 케이스, 애런 데이 저
25,200원
(10%↓+5%)
 
이메일주소수집거부