인간 vs. AI 정규표현식 문제 풀이 대결 - 24개의 정규표현식 퍼즐로 알아보는 ChatGPT, 코파일럿 활용법
데이비드 머츠 지음, 김모세 옮김 / 제이펍 / 2023년 10월
평점 :
장바구니담기


책의 제목부터 매우 흥미롭습니다. AI와 대결이라니요.

보통 ChatGPT, 코파일럿등 AI를 통해서 가장 개발적으로 처음 접근하는 화두가 정규표현식입니다.

컨셥에 딱 맞죠. 예전에도 어딘가에서 내가 원하는 문자열 형태를 샘플로 여러개 입력을 하면 그에 맞는 정규표현식을 제공하는 사이트가 있을 거라고 생각을 했는데, 생각보다 그런 서비스를 하는 사이트는 없었습니다.

자주 사용은 안하는데, 딱 필요할때가 있는 정규표현식을 이번 기회에 이책을 통해서 좀 더 잘 활용 할수 있을 것 같은 생각이 들었습니다.

 

정규표현식을 대부분의 언어에서 지원을 합니다. grep, sed, AWK, perl 뿐만 아니라, Java, .net. javascript, GO, Rust 등등

생각해보면, 이렇게 다양한 언어에 대해서 공통적으로 적용할 수 있는 기능적인 부분인 정규표현식은 잘 활용하면 더욱 더 강력한 기능을 가지게 됩니다.

 

해당 책의 정규표현식 실습은 python의 re 표준 라이브러리로 실습환경을 구성합니다.

책의 서브 타이틀로도 나와 있는 것처럼, 24개의 퍼즐과 같은 패턴을 가지고 ChatGPT, 코파일럿을 통한 활용법을 학습합니다.
책의 표지가 동양풍의 그림이여서, 저자분이 동양분이신줄 알았는데, 저자분은 "데이비드 머츠" 이십니다.

시작하며에 있는 글 (이 책의 목적 및 다루는 내용에 대해서 가장 잘 요약하고 있는 글입니다.)
AI기반 도구들의 만들어내는 결과는 매우 놀랍다. 하지만 동시에 수많은 실패를 보면서 매우 어리석다는 것도 이해해야 한다.
바로 이것이 이 책의 주요 목적이다. 정규표헌식을 사용한 퍼즐들은 컴퓨터 프로그래밍의 모든 영역 중에서도 인공지능의 특이한 행동을 이해하기에 특히 적합하다. 

 

 

■ 퍼즐에 대해서

·  퍼즐에 대해서 저자분이 생각하는 정규식 풀이와 AI를 활용한 풀이법을 비교하가면서, 대결이라는 컨셥을 진행합니다.

<저자생각> vs <AI생각> 이렇게 2개를 직관적으로 비교하는 방식으로 하나의 주제를 설명하게 됩니다.

 

 

■ 수량자와 특별한 하위 패턴들

·  x로 시작하고 y로 끝나는 모든 단어를 매치하라(퍼즐1)

가장처음 나오는 예시로, 보통 전화번호 및 입력 속성을 체크하기 위해서 가장 보편적으로 사용하는 패턴이다.

단어를 구분짖기 위한 방식등을 포함해서, 해당 요청을 처리할수가 있다.

·  책의 AI코드 추출은 아래와 같이 영어로 chatgpt를 이용해서 결과물을 도출합니다.

 프롬프트 명령어는 한글이 아니라 영어로 입력하게 책이 구성되어 있다. 첫 예시라서 영어가 간단하지만 뒤로 갈수록 입력하는

문장의 길이는 길어집니다. 실제 이정도의 영어를 입력해서 원하는 결과를 도출하게는 어려울것이라고 생각합니다.

그래서 책을 통해서 간접체험하는 것이 반대로 생각하면 더 유용할 것 같습니다.

그리고 실제 ChatGPT에서 제공하는 결과 답변은 책과 다르게 제공 될 수 있으니 참고 하시면 됩니다.

첫 퍼즐에서 저자분은 findall()을 통해서 matching을 하였는데, finditer()에 대한 부분도 적용하면 좋은 가이드를 함께 제공합니다.

 

평균적으로 책에서 코파일럿 보다는 ChatGPT에서 정규식에 대해서는 조금 더 의미있는 도움되는 코드가 제공되는것 같습니다.

 

 

■ 구성 포맷

·  정규표현식을 이용해서 구성 포맷을 파싱할수 있다.

정규표현식을 수행해서, python의 딕셔너리 구성으로 반홤받을수 있다.

dict(re.findall(~~~)) 을 이용하는 방법을 이용하면 된다.

 

·  아래와 같은 시그널을 분석하는 상태시쿼스에서 유효하게 인코딩된 신호들을 식별하는 예시등을 통해서 일반적인

text형태의 구성, 연습에서 탈피하는 예시등이 좋았습니다.

 

■ 흥미로운 주제들

·  chapter4장에서 일반적으로 python에서 제공하는 함수를 정규표현식으로 작성하는 시도을 해봅니다. 

흥미로운 주제인것 같습니다.

≫ str.count() : 긴 문자열 안에 하위 문자열을 검색하는 기능

 포커플레이를 통해서 몇가지 시나리오를 정규표현식을 통한 기능 만들어보기

·  스트레이트, 플러시 카드 패 식별하기

· 포터 카드 패를 포 카드와 매치하기

· 포커 카드패를 풀 하우스와 매치하기

· 포커 카드 패에서 트리플, 원 페어를 매치하기

포커에 대해서 기본적으로 게임 방식을 아시면 조금 더 흥미로운 주제로 생각이 됩니다.

이러한 부분도 정규표현식으로 의도한 결과물을 추출해 볼수 있다는 것은 조금은 다른 관점으로 정규표현식을 접근하고

활용할수 있는 계기를 제공해 줍니다.

 IPv4주소 테스트 하기

조금은 현실적인 정규표현식 예시도 다양하게 연습하고, 실제 어떤것이 정답은 없지만 원하는 결과를 체크할 수 있는

다양한 시도를 저자 관점 & AI부분을 통해서 자기가 이해하고, 사용하기 편한 코드를 도출해 나갈수 있습니다.

 

■ 정규식에 기본적인 시작

·  책의 내용을 처음부터 보기 보다는 뒤에 별도로 구성된 정규표현식의 소개 내용을 먼저 살펴보시고, 책의 내용을 학습한다면

더 나은 효과를 얻으실수 있습니다. 기본적인 내용부터 잘 설명되어져 있습니다.

 


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
개발자의 하루를 바꾸는 코파일럿 & 챗GPT - AI 코딩 도구와 페어 프로그래밍하기
마이클 D. 캘러핸 지음, 정원창 옮김 / 한빛미디어 / 2023년 9월
평점 :
장바구니담기


이 책을 궁금해 하시고, 관심이 있는 독자분은 개발자일 확율이 높습니다. 챗GPT는 범용적으로 사용되는 AI도구이지만, 코파일럿은 개발을 하는 코드적인 부분이 많기 때문입니다. 처음 copilot이 나왔을때 코드에 대한 어시스턴트를 제공하는 것을 보고 매우 놀랐습니다.

벌써 출시된지 1년이 넘어가고 있습니다. 그만큼 기술은 더 안정적이고 많은 요즘은 살펴보지 못했지만, 많은 변화가 있을것 같습니다.

 

책에서는 한가지 Copilot만 사용하지 않고 챗GPT도 함께 개발적인 입장에서 바라보고, 내용을 설명하고 있습니다.

코파일럿과 챗GPT는 소프트웨어 개발자의 작업을 돕도록 설계된 AI기반 도구입니다. 두 도구 모두 머신러닝 알고리즘을 사용해 지능적인 제안과 지원을 제공하지만, 각각 개발 과정에의 서로 다른 측면을 위해 만들어졌습니다. 주요 차이점 한가지는 코파일럿은 코드완성과 제안에, 챗GPT는 자연어 처리에 초점을 둡니다.코파일럿을 사용하면 주요 코드 스내펫을 생성할수 있고, 챗GPT를 사용하면 텍스트 응답이나 코드를 생성할수 있습니다. (p.27)

 

 

코파일럿은 우리가 많이 사용하는 github에서 제공하고 있습니다. github를 MS에 인수했기 때문에 결국 MS가 생성하는 AI라고 볼수도 있습니다. 우리고 공개 저장소에 저장하고 있는 다양한 github의 소스를 기반으로 학습한 데이터를 제공한다는 것은 너무 좋은 데이터를 이용한 인공지능 학습이 가능할 것입니다. 하지만 public 저장소에 있는 소스 코드는 어느 누구나 접근할수 있기 때문에, 어느 기업이나 받아다가 사용할수 있는 데이터 이기도 합니다.

책에서 사용하는 prompt명령어는 아래에서 다운로드 가능합니다.

https://walkingriver.gumroad.com/l/pair-programming-bonus

 

■ copilot 관련 비용 관련

·  무료 trial을 제공합니다. 다만 유료로 이제 상용화 서비스로 변경이 되었습니다.

·  https://docs.github.com/ko/copilot/overview-of-github-copilot/about-github-copilot-for-individuals

 

· 다양한 IDE를 제공하고 있습니다.

https://docs.github.com/ko/copilot/getting-started-with-github-copilot?tool=jetbrains

· 테스트 환경은 VSCode를 활용하여서 구성합니다.

 

■ 책에서 다루는 사항

· 여러가지 AI분야가 있지만, 아래의 2가지 사항에 대해서 설명하고 있습니다.

· 책에서는 AI찬양을 하지 않습니다. AI도구의 한계를 설명하고, 라이센스 문제, 윤리적인 사항등을 사전에 언급해주는 것이 단순히 무조건 좋다라는 것을 설명하는 책이 아닌것 같아서 막연하게 좋다 라고 생각하는 관점에 대해서 우선적으로 주의점을 잘 인지 할수 있게 구성되어 있습니다. 

· 책의 구성에 재미있는 부분이 있습니다. 코파일럿과 ChatGPT 한가지만 이용하는 것이 아니고, 2개를 적절히 사용하고 같은 주제에 대해서 검색을 통해서 하나하나 좋은점, 차이점을 알아보고 비교해보고 각 AI툴에 대해서 장단점을 파악할수 있습니다.

아래 그림처럼 코파일럿에 조회한 내용도 실습해보고, ChatGPT의 내용도 함께 사용하면서, 같이 경험하는 것은 추후 활용시에 도움이 됩니다. 기존에 알고 있던 코드나 경험이 있는것은 상대적으로 코파일럿이 직관적으로 코드를 제공하니 더 편하게 느낄수 있고 약간의 설명이나 서술형으로 개념을 다시 잡고 싶은 경우는 ChatGT가 더 도움이 될수 있을것이고 개개인 마다 느끼는 것이 다르지만 사용해보면서 상황에 맞게 사용할수 있는 경험을 노하우가 늘어날 것으로 생각됩니다.

· 책에서 소개되는 주제는 아래와 같습니다.

언뜻 보면 java, python등 언어에 대한 실제 코드에 대한 부분은 없지만, 책의 주제를 실습하다 보면, 어떻게 AI툴을 사용할지 어떻게 활용할지 경험하는 예제로 충분한 내용이 제공됩니다. 보통 많이 어려워하는 정규표헌식의 경우도 재미있게 우리가 원하는 결과물을 도출하는 과정으로 구성되어 있습니다. 샘플 데이터 생성 같은 부분은 우리가 어떻게 쉽게 테스트 할수 있는 dummy파일을 생성하고 머신러닝등에도 활용할수 있는 부분으로 활용을 할수도 있습니다. 프로젝트 관리등에 대한 부분은 개발적인 부분은 아니지만 추후 다른 방향으로 어떻게 AI툴을 활용할수 있는지 알게 됩니다.

2장 셸 스크립팅 명령
3장 깃 명령
4장 일반적인 알고리즘
_4.2 배열 조작
_4.3 문자열 조작
5장 RxJS 학습하기
6장 앵귤러 httpClient
7장 정규 표현식
8장 데이터 생성
_8.1 로렘 입숨 텍스트
_8.2 미국 대학교 리스트
_8.3 임의의 고객 리스트
_8.4 색상
_8.5 영화 제목
_8.6 자동차 제조사와 모델
_8.7 개 품종
_8.8 카드 덱
_8.9 우노 카드 덱
_8.10 식료품 리스트
_8.11 주식 기호 리스트
_8.12 주식 가격 흐름
_8.13 정리


9장 애자일 프로젝트 관리
_9.1 프로젝트 콘셉트


10장 애플리케이션 만들기
_10.1 아이오닉 앱 개발 시작하기


11장 유닛 테스트
_11.1 대상 서비스
_11.2 서비스 API
_11.3 테스트 프레임워크
_11.4 코파일럿 테스트
_11.5 챗GPT 테스트
_11.6 HTTP 호출 테스트
_11.7 정리

이 책의 가장 큰 장점은 Copilot, ChatGPT 2개를 한꺼번에 경험하면서 조금 더 활용도를 높이기 위한 비교 기법과 각 AI도구의 다른 결과물을 통해서 나에게 맞는 방식으로 AI툴의 활용도를 높이는 방법을 제공합니다. 


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
모두의 한국어 텍스트 분석 with 파이썬 - 기초부터 챗GPT까지, 누구나 쉽게 시작하는 자연어 처리 모두의 시리즈
박조은.송영숙 지음 / 길벗 / 2023년 5월
평점 :
장바구니담기


사용자의 수집데이터의 사이즈에 차이는 있지만, 서비스를 하는 입장에서는 데이터는 무조건 저장되고 누적됩니다.

로그인이 필수인 개인화된 페이지도 있고, 로그인이 없는 누구나 사용하는 서비스 페이지들도 있습니다.

데이터는 User들이 신규로 생성하는 데이터도 있지만, 통계성의 성격을 가지는 데이터들, 정형데이터/비정형데이터등 다양한 성격의 데이터는 어느 회사나 보유중입니다.

 

그러면 우리는 이것을 가지고 새로운 요구사항을 구현할수도 있고, 조금 더 나은 서비스를 위해서, 새로운 Value를 찾아보기 위해서 다양한 시도를 합니다. 여기서 중요한 부분은 대부분의 데이터가 한글이라는 부분입니다.

 

일반적인 데이터 분석책이 현재 많이 출간되어 있고, 대부분 파이썬을 이용해서 구현을 많이 합니다.

이 책의 제목은 "모두의 한국어 텍스트 분석" !! 이다.

 

저자분도 이책의 집필시에 아래와 같은, 누구나 궁금해 하는 사항에 대해서 고민하고 이 책을 구성하셨던 부분이 처음에 눈에 들어왔습니다.

 

저자는 집필의도를 통해서 우리가 이 책에서 얻을 수 있는 사항은 아래와 같습니다. 

  • 텍스트 분석을 하는 방법을 전반적으로 알아봅니다.
  • 한국어라는 언어에 대해서 무슨 차이가 있고, 한국어를 조금 더 잘 활용해 볼 수 있을 것이다.

 

■ 책이 실습구성은 풍성

· 의지만 있으면, 학습할수 있는 충분한 구성이 되어있습니다.

· 코랩으로 바로 실행 지원

https://github.com/pytextbook/pytextbook

  소스 코드를 바로 코랩의 실행하는 환경을 제공하는 것은 생각보다 장점이 많습니다. runtime으로 실습하는 것은 시간절약에 많은 도움이 되고 궁금한 것을 바로바로 실습해볼수 있어서 독자 입장에서 매우 만족합니다.

 

· 유투브 영상도 제공합니다.

저자분이 책의 내용을 전부 설명하는 것은 아니지만, 책과 중복되는 부분도 많고 충분히 시작하는데 도움되는 영상 목록입니다.

https://www.youtube.com/playlist?list=PLaTc2c6yEwmp35y9Z868VlV9NQpG-eBb6 

 

 

■ 환경구성과 파이썬 기본 문법

· 1장~3장까지 내용 구성이 됩니다.

· 코랩은 데이터 분석하는데 너무나 많은 편리성을 제공합니다. 한번만 경험하면 쉽게 사용할 수 있습니다.

· 파이썬의 내용이 좋았습니다.  파이썬의 모든 내용을 다루지 않습니다.(파이션책이 아니기 때문에)
 이 책은 텍스트 분석을 위한 "파이쎤 문자열"에 대해서 상세히 설명합니다. 이런 부분이 목적에 맞게 문자열을 더 자유롭게 다루는 방법이 있어서 책의 목적에 맞는 내용 구성이라고 생각합니다.

· 판다스(https://pandas.pydata.org/), 넘파이 (https://numpy.org/)는 데이터분석의 기본 사항입니다. 

데이터 분석하는 과정에서 데이터를 axix축을 어떻게 잡는지도 중요하고, 분석하려고 하는 다양한 데이터를 row,colume구성으로 data조회를 하는 과정도 필요합니다. pandas는 sql쿼리문으로 조회하는 부분에 많은 것을 커버할수 있습니다. group by의 역활도 일반 쿼리보다 쉽게 구성하여서, 조금 다른 관점으로 장점도 많이 있습니다.

 

핵심되는 요소만 설명하고, 너무 과하지 않게 설명을 합니다. loc, iloc, series등에 대해서 설명을 하고, 가장 많이 사용하는 개념 및 함수에 대한 설명을 통해서, 이정도만 알고 있으면 충분히 데이터 분석을 경험 할수 있습니다. 추가적인 내용 및 더 궁금한 부분을 연관해서 찾아보면 추가적인 함수들도 학습 할수 있는 베이스 라인을 만든다고 보시면 될 것 같습니다.

 

 

 

■ 4장 : 단어 가방 모형과 TF-IDF

· 단어가방 모형 : 단어순서를 고려하지 않고, 중복발생 빈도를 중요하게 취급하는 방법

여기서는 사이킷런(scikit-learn)을 활용한다. 해당 라이브러리는 머신러닝을 하는데 기본적으로 사용됩니다.

우선 문장을 분석하는 것을 시도해봅니다. 문장은 공백으로, 콤파등으로 구분되어 질수 있습니다. 이것을 단어로 형태소 분석해서 숫자를 올리면 특정 단어가 많이 나오는 것을 분석해볼수 있습니다. 이것은 단어가방모델이고 여기서 조금더 추가하여서 단어의 위치에 따라서 의미가 달라지는 것을 다양한 기법을 적용해서 결과물을 도출해봅니다.

n-gram(단어 어절을 구성하는 단위), min_df, max_df를 통한 빈도수 설정, max_features (학습 단어개수제한), stop_word(불용어 제거)등을 사이키런에서 제공해주는 옵션값을 사용해서 데이터 분석을 합니다.

· 사이킷런을 TfidVectorizer를 통해서 TF-IDF변환을 통해서, 단어빈도, 문서빈도, 역문서빈도등을 적용하면서 각 문장간의 연관성을 추출합니다. 보통 결과를 이렇게 수치로 표현해서 가중치를 파악합니다. 이런 실행결과는 데이터 분석에서 많이 보는 결과입니다.

이러한 내용들이 하나하나 설명되어지면서, 분석에 대한 상세 설명이 되어집니다.

 

■ 5장. 연합뉴스 타이틀 주제 분류

· 소개하는 예제가 매우 관심을 가지게 됩니다. 업무에서도 어떻게든 적용해볼수 있지 않을까? 생각해볼수 있습니다. 제목 즉 타이틀은 모든 게시글에 있기 때문이죠. 이러한 데이터를 어떻게 텍스트 분석을 하고 어떠한 기술/라이브러리를 사용해서 어떠한 방식으로 구현되어 있는지 살펴보겠습니다.

 

아래 목차를 보면, "분류과정", "전처리", "불러오기" 등이 있습니다. 데이터를 처리하는데, 우리가 보유하는 데이터를 그냥 바로 분석할수 없습니다. 전처리라는 역활은 매우 중요한 과정이며, 이러한 과정은 데이터를 바라보는 관점을 달리 할수 있는 중요한 부분이라고 생각합니다. 

주요하게 살펴볼 사항은 아래 2가지 입니다.
· 간단한 텍스트 분류를 통해 머신러닝 알고리즘이 학습할수 있도록 단어를 수치화 하는 방법

· 머신러닝 모델을 통해 학습 및 예측하는 방법

· 사용되는 데이터
L (DACON, 데이콘 AI경진대회 플랫폼)에서 KLUE:한국어 자연어 이해 벤치마크 데이터 데이터를 이용합니다.

https://klue-benchmark.com/tasks/66/overview/description

 

· 라이브러리 import

pandas, numpy등은 기본적으로 import를 하는 사항이라고 보면 되고, 
한글처리를 위해서 아래 사항을 추가한다.

koreanize-matplotlib : 매트플립 차트에서 한글이 깨지지 않고 표현가기 위해서 설치

konlpy : 한국어 형태소 분석을 위해 설치

· https://konlpy.org/en/latest/

 

한국어에 대해서, 동일한 문장이여도 형태소 분석의 차이로 인해서 구문에 대한 파싱은 조금씩 다르게 표현됩니다.
책에서는 Okt를 사용해서 예제를 진행합니다.

· 당연히 학습, 시험 데이터 세트 분리를 진행하고 
해당 예시에서는 학습과 예측하는 기법으로는 사이키런의 랜덤 포레스트를 사용해서 진행합니다.

 

▶ 6장에서도 5장과 비슷한 과정이 있습니다. 
6장에서는 "국민청원 데이터 시각화 분류"를 진행합니다. 코랩으로 데이터를 호출해서 처리할수 있지만

pandas를 통해서도 데이터를 호출해서 사용할수 있습니다.
KoNLPy와 soynlp를 통해서 특정 형태소를 추출/제거를 수행하며, 머신러닝으로 텍스트 데이터를 이진 분류하는 내용이 있습니다.

· 6장에서는 조금 더 다양하게 pandas를 사용합니다. 조건을 걸어서 분류를 제한하고 merge등 조금 더 다양한 데이터 구조화를 연습해볼수 있습니다.
머신러닝에 대해서 이론적인 사항도 필요한 부분에 대해서 과하지 않게 핵심이 잘 정리되어서 설명되어 집니다.

 

 

■ 7장 ‘120다산콜재단’ 토픽 모델링과 RNN, LSTM

· 120다산콜재단 데이터를 토픽별로 분석시각화를 진행해봅니다.

· RNN, LSTM을 통한 모델링을 진행해봅니다.

· pyLDAvis를 이용해서 시각화를 연습해보면서, 기존에 멧플립등과 비교해보는 연습을 합니다

 

 

분석과정에서 데이터를 토픽별로 분류를 하고 난 후에 딥러닝 방법중에 하나인 순환신경망(RNN)모델로 학습해서 분류과정을 거칩니다.

잠재 디리클레 할당 (LDA)를 통해서 주어진 문서에 대해 각 문서에 어떤 주체(토픽)들이 있는지 서술하는 확률적인 토픽 분류 기법을 이용합니다. 사이킷런을 이용해서 해당 분류를 실행합니다.

 

 

▶ 8장의 내용은 조금더 현실감 있는 데이터 샘플을 이용해서 실습을 합니다.

많이들 이용하시는 인프런의 댓글을 가지고 텍스트 분석을 하는 과정은 매우 공감이 됩니다.

여기서 사용하는 데이터의 댓글을 실제 주변에 작성하신 분들이 있을수 있기 때문입니다.

과정은 비슷합니다. 해당 데이터를 어떻게 분류하고 학습시킬것인지 고민해야 합니다. 머신러닝을 통한 분류를 할지 딥러닝 기법을 사용하지 정하고, 학습데이터와 실제 예측을 위한 테스트 데이터르 분류해 놓아야 합니다.

가시적인 검증을 위해서 차트 라이브러리를 사용합니다. 인프런 분석시에는 KMeans 군집화를 통해 머신러닝 비지도 학습을 적용해보았고, 클러스터링의 분류 모델을 통해서 지도학습을 통해서 예측도 진행합니다.

 

이 책의 특징은 일반적으로 외부에 오픈된 dataset을 이용하는 것 보다 조금 더 한국어가 기본인 데이터를 활용하는 것이 매우 좋았습니다.

사례로 드는 예제는 주변에서 실제 익숙한 데이터를 사용해서, 데이터 분류 및 예측의 결과 값이 한글로 되어 있어서 영어로 분석하는 예시와는 또 다른 경험을 제공합니다.


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
AWS 기반 데이터 과학 - 엔드투엔드, AI/ML 파이프라인 구현하기 | 아마존 클라우드 컴퓨팅 분야 베스트셀러
크리스 프레글리.안티 바르트 지음, 서진호.최미영 옮김, 이용혁 감수 / 한빛미디어 / 2023년 4월
평점 :
장바구니담기


AWS에 수많은 서비스가 있습니다. 기본적으로 가장 많이 사용하는 EC2, S3, RDS등 웹서비스를 구성하기 위한 서비스 이외에 정말 많은 서비스가 제공됩니다. 이제 가지수를 하나하나 세워보는것은 의미가 없습니다. 서비스들이 계속 추가되고 그 속도가 매우 바쁩니다.

아래 왼쪽에는 대분류 카테고리 입니다. 이 항목이 "카테고리"입니다. 아래 "기계학습" 카테고리를 클릭했을때 오른쪽에 매우 다양한 AWS서비스 리스트를 확인할수 있습니다.

우리는 이렇게 다양한 모든 서비스를 다 사용할 수 없습니다. AWS에서 우리가 서비스하는 목적에 맞게 적절한 선택을 해야 합니다. 하지만 일반적으로 AWS를 다루는 책이 많이 있습니다. 일반적인 AWS의 필수기능 및 웹서비스를 하기 위한 항목, 가장 많이 사용하는 서비스에 대한 설명이 위주로 되어 있습니다. AWS를 사용하는 사용자 중에 "데이터 과학"에 대해서 사용하려면 어떠한 서비스를 이용해야 할지 막막한 부분인데, 그것에 대해서 좋은 자료를 찾는다면 해당 책이 그 답이 될 것 같습니다.

 

아래와 같은 주안점으로 책을 살펴보려고 합니다.

  • AWS 다양한 새로운 서비스에 대해서 잘 설명을 하고 있는지 궁금
  • 책의 가격이 저렴하지 않지만, 그 가격의 충분한 가치를 가지고 있을까?
  • 데이터과학에 대한 부분이 잘 설명되고 있는가?
  • AWS의 AI/ML분아 재직중이신 2분이 공동저자분에 내용구성에 기대감

 

 

 

처음 이 책을 보았을때, 좋았던 부분은 아래와 같습니다. 

우리가 데이터를 다루지 않는 분야가 있을까요? 아마 모두 어느 정도의 기능단위 개발 후에 누적된 데이터를 기반으로 다른 사업, 서비스의 고급화, 개인화, 추천등으로 이어지는 것은 매우 당연한 흐름입니다.

그러한 면에서 꼭 데이터과학에 대한 전문적인 직업 포지션을 가지고 있지 않은 분들도 이 책은 도움이 되는 부분이라고 생각이 들었습니다.

지금 당장은 사용하지 않지만, 추후에 온프레미스(On-premise) 환경에서 서비스를 구축하기 어려운 환경이면 결국 클라우드 시스템을 이용할수 밖에 없습니다. 이 책은 단순히 AWS에서  이러한, 저러한, 여러가지 서비스를 제공하고 있다는 소개 뿐만이 아니라, 데이터 과학을 즉 데이터를 잘 다루는 이론적인 부분도 충분히 설명이 되어 있기 때문에, 이러한 이론 및 구현하고 싶은 항목을 기준으로 AWS에 제품에 대한 전반적인 동작 방식 및 사용법을 알아갈수 있게 해줍니다. 또한 여려가지 AWS서비스의 구성 조합에 대한 적절한 조합 및 방향성을 알려주는 부분이 좋았습니다.

 

"이 책의 목표는 AWS에서 데이터 과학 프로젝트의 비용을 절감하고 성능을 향상하는 팁을 제공하는 것이다" (by. p.19)

 

 

■ 책이 구성

· 소개글이 매우 잘 되어 있고, 꼼꼼히 살펴보면 책의 구성과 언급되는 기술에 대해서 파악하기 용의합니다.

· 1장 : 아마존 AI.ML에 대해서 개략적 설명

· 2장 : 추천시스템, 자연어 이해 등등 아마존 Al과 ML스택을 적용

· 3장 : 세이지메이커 오토파일럿의 AutoML 사용

· 4~9장 : 데이터의 수집 및 분석, 피처 선택 및 엔지니어링, 모델훈련 및 튜닝, 아마존세이지메이커, 아마존 아테나, 아마존 레드시프트, 아마존 EMR, 텐서플로우, 파이토치, 서비리스 아피치 스파크를 활용한 모델배포, BERT기반 자연어 처리 NLP의 전체 모델 개발 라이프 사이클

· 10장 : 세이지메이커 파이프라인, 큐브플로우 파이프라인, 아파치 에어플로우, MLflow, TFX와 함께 MLOps를 사용해 모든 것을 반복하는 파이프라인으로 통합

· 11장 : 아마존 키네시스와 아파치 카프카를 사용한 실시간 데이터 스트림

· 12장 : AWS IAM, 인증, 권한부여, 네트워크 격리, 미사용 데이터 암호화, 전송중 양자 내성 네트워크 암호화, 거버넌스, 감사 가능성

 

각 항목마다 AWS의 서비스 제품들이 목적에 맞게 구성되어 있습니다. 책에서는 AWS의 제품명을 영어로 사용하지 않고 한글로 사용합니다. 4~9장에서 다루는 내용에서 "데이터의 수집 및 분석, 피처 선택 및 엔지니어링, 모델훈련 및 튜닝"에 대한 내용은 꼭 AWS와 무관한 부분으로 구성된 내용도 좋았습니다.

 

■ 책이 구성

· 이론적인 부분을 설명을 하면서, 자연스럽게 AWS에서 사용하게 될 일반적인 구성을 설명해주는것이 좋았습니다.

보통 서비스하는 항목들이 많아서, 어떤 서비스를 어떤 기능에 사용하게 될지 선택하기 어려운데, 이렇게 가이드를 주는내용은 곳곳에 언급됩니다. "그래서 AWS의 서비스를 전반적으로 파악하는데, 도움을 많이 받게 됩니다."

 

· 아주 좋은 AWS기술 스택 그림이다.
일반적으로 영어도 된 글자를 보다가, 어색할수 있습니다. 책에서는 가능한 대부분을 한글로 표기를 하였습니다.

혼돈을 막기 위해서 부록에서 영어서비스명과 한글로 번역한 사항이 정리되어 있습니다.

· 세이지메이커 오토파일럿은 투명한 AutoML의 표준이다.첵에서도 이것과 관련된 부분에 대해서 상세히 설명을 하고 있다.

 

· 데이터 분석을 위해서 서비스를 정했는데, 비용과 관련이 있는 부분은 항상 고민입니다. 그 이유는 각각의 인스턴스의 타입도 종류가 많습니다. 책에서는 이러한 부분도 설명되어 지고 있어서 실무에서 사용할때, 좋은 가이드를 세울수 있습니다.

 

■ 모범사례를 통해서 경험하는 간접체험

· 개인별 상품 추천 시스템 / 부적절한 동영상 감지 / 수요예측 / 가까 계정 식별 / 정보 유출 탐지 활성화 등등 2장에서 제시되는 사례목록은 아래와 같습니다.

CHAPTER 2 데이터 과학의 모범 사례

2.1 모든 산업에 걸친 혁신
2.2 개인별 상품 추천 시스템
2.3 아마존 레코그니션으로 부적절한 동영상 감지
2.4 수요 예측
2.5 아마존 프로드 디텍터를 사용한 가짜 계정 식별
2.6 아마존 메이시를 사용한 정보 유출 탐지 활성화
2.7 대화형 디바이스와 음성 어시스턴트
2.8 텍스트 분석 및 자연어 처리
2.9 인지 검색과 자연어 이해
2.10 지능형 고객 지원 센터
2.11 산업용 AI 서비스와 예측 정비
2.12 AWS IoT와 아마존 세이지메이커를 사용한 홈 자동화
2.13 의료 문서에서 의료 정보 추출
2.14 자체 최적화 및 지능형 클라우드 인프라
2.15 인지 및 예측의 비즈니스 인텔리전스
2.16 차세대 AI/ML 개발자를 위한 교육
2.17 양자 컴퓨팅을 통한 운영체제 프로그램
2.18 비용 절감 및 성능 향상
2.19 마치며

이러한 사항에 대해서 매우 흥미로운 사항들이 매우 많이 있습니다. 어느 도메인의 서비스에서도 모두 검토해서, 적용해볼만한 것들입니다.

이책은 AWS책이여서, 아래와 같이 AWS서비스를 활용한 구성도로 설명하는 부분이 매우 좋았습니다.

 

■ 데이터 수집하기

· 해당 분야는 정말 어느분들이나 관심있게 보실수 있는 분야입니다. 꼭 ML,AL을 다루지 않는다고 하여도 우리는 데이터를 collect하고 save하는 것은 서비스를 운영하는데, 필수요소입니다. 서버를 구매해서 환경구축을 하는것은 장점도 있지만, 단점도 분명히 존재합니다. 그래서 이러한 AWS의 서비스구성을 잘 알아두면 필요할 때, 파일럿 형태로 서비스를 구성해 볼수 있어서 장점이 더 많은것 같습니다.

· 데이터 레이크를 대규모의 다양한 데이터셋에 엑세스 할수 있도록 구성하는 것을 S3, 아테나, 글루 크롤러, 레드스피트 스펙트럼등을 통해서 코드베이스로 설명이 되어진다. 이론적인 부분만 설명하는 것이 아니라, 실제 구현샘플 코드를 기반으로 작성되어 있어서, 엔지니어 입장에서는 이해가 조금더 편하게 다가옵니다.

이런 비용절감 및 상세한 비교표는 이책에서만 있는 것이 아닐까 생각합니다.

 

■ 데이터 분석하기, 데이터셋 준비

· 본적적으로 세이지메이커, 레드시프트, 글루 데이터브루 를 활요하는 내용으로 구성됩니다.

· 일반적은 머신러닝, 딥러닝 책과는 조금 다른 느낌이 드는 책입니다. 이론적인 것보다 실제 서비스를 활용한 데이터 분석이라는 측면에서 조금더 가시적으고, 현업에서 사용하기에 무리가 없는 설명가이드 및 차트를 통한 가시화되는 부분이 책에 잘 녹아져 있습니다.

· 세이지메이커 프로세싱을 통한 피처 엔지니어링 부분에서 피처를 구성하고, 텐서플로우, 사이킷런, BERT를 사용하여 클러스터에 전체 데이터셋을 균형을 맞추고 분할/변환을 진행합니다.

· 세이지메이커 인프라를 활용하여서, 모델의 학습을 진행합니다.

 

 

■ 잘 만든것을 배포하기

· 프로덕션에 모델 배포하기위한 다양한 기법을 소개합니다. 모델을 업데이트 하고, 품질에 대한 검증을 AWS를 이용해서 구성하는것이 인상적이였습니다. 특히  AWS 람다 함수 및 아마존 API 게이트웨이의 부분은 일반적인 서비스에서도 참고할 만한 내용이며, 이러한 부분이 연결이 되어서 최종 파이프라인과 MLOps의 구성을 완성하게 됩니다.

· 마지막 장에 언급된 AWS 보안 부분은 일반적으로 알고 있는 IAM이외에 다른 고려사항도 언급되어 있어서, 관련된 부분을 AWS의 전반적으로 사용하는데 도움이 되는 내용으로 구성되어 있습니다.

12.1 AWS와 사용자 간의 공동 책임 모델
12.2 AWS IAM
12.3 컴퓨팅 및 네트워크 환경 격리
12.4 아마존 S3 데이터 액세스 보호
12.5 저장 시 암호화
12.6 전송 중 암호화
12.7 세이지메이커 노트북 인스턴스 보호
12.8 세이지메이커 스튜디오 보안
12.9 세이지메이커 작업과 모델 보안
12.10 AWS 레이크 포메이션 보호
12.11 AWS 시크릿 매니저를 통한 데이터베이스 자격 증명 보안
12.12 거버넌스
12.13 감사 가능성
12.14 비용 절감 및 성능 향상
12.15 마치며

책의 전반적인 수준이 높고, AWS를 사용하면서 일반적으로 알아야 되는 부분이 많아서 조금 놀랬습니다. 데이터 과학의 특화된 부분의 내용구성을 설명하면서, 자연스럽게 범용적으로 활용할수 있는 내용도 많았고, 비용절감적인 부분, 인스턴스의 비교표를 통해서 효율적으로 AWS를 사용할수 있는 노하우가 많이 설명되어지는 책이라고 생각합니다.

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
프런트엔드 개발자를 위한 테스트 가이드 - 셀레늄, 사이프러스, 퍼피티어, 플레이라이트 오픈소스 테스트 자동화 프레임워크 교과서, 2024 세종도서 학술부문
에란 킨스브루너 지음, 김완섭 옮김 / 제이펍 / 2023년 7월
평점 :
장바구니담기





책의 목차를 보는데, 처음보는 기술들이 많이 보였습니다. 기술이라고 표현한것은 처음보는 오픈소스 SW들에 대한 부분입니다.

이런 생각을 들었습니다. 블랙박스테스트를 하는데 이것이 프런트엔드 테스트라고 생각해도 될까?

사용자 화면에서 보이는 것을 뒤에 이루어지는 비지니스 로직을 검증하지 않았지만, 실제 화면에 입력되는 input value와 실제 화면에 보여지는 출력 value에 대해서 눈으로 확인하는것이니 100% 동일하지는 않지만, 비슷하다고 불수도 있지 않을까?

 

요즘은 자동화 AutomationTool들도 많이 나와 있습니다. 하지만, 해당 Tool을 실제 사용하기 위해서는 역시 따로 개발을 해야 합니다.

쉬운것이 없습니다. 책을 읽기전의 지식으로 "화면에 있는 것을 기준으로 동작테스트를 진행"하려고 한다면, 크롤링 기술 기반의 셀레니움 정도가 생각이 납니다. 하지만 요즘의 화면은 반응형 웹, 모두 동적 dom을 핸들링하고 있고, 기본적으로 Ajax등 비동기 동작을 하고 React, Vue등의 프런트프레임워크를 사용하기 때문에 실제 적용을 해보면 많은 시행착오가 발생할 것으로 생각이 됩니다.

 

 

  • 우선 책에서 어떠한 개념으로 프런트엔드 테스트를 바라보는지 살펴보고 싶습니다.
  • 활용가능한 다양한 SW를 살펴보고, 실제 업무에 적용가능한 것들이 어떠한 것이 있는지 체크해보고 싶습니다.
  • 테스트 개념에 대해서도 다시한번 remind하고 개념을 다시 살펴보고 싶습니다.

 

PART I 프런트엔드 웹 테스트 소개

PART II 웹 애플리케이션 개발자를 위한 지속적인 테스트 전략

PART III 프 런트엔드 자바스크립트 테스트 자동화 프레임워크 가이드

총 3개의 파트로 크게 구성되어 있습니다. 

 



 

■ 웹테스트 

https://npmtrends.com/cypress-vs-playwright-vs-puppeteer-vs-selenium-webdriver

 

1 기준으로 사용빈도를 조회해보면, cypress puppeteer 가장 많이 사용되는것을 볼수 있다.



 

- 프레임워크 4대장 소개 : p.37의 내용인데 위사항만 보면 처음으로 시도해볼만한 프레임워크는 cypress가 눈에 들어온다.



책에서는 위 4가지 모두 실습하는 방법이 소개됩니다.

 



 

■ cypress 시작해보자 (p.45)

# 설치

npm install cypress


# GUI실행

npx cypress open

- 참고 url

https://example.cypress.io/

https://docs.cypress.io/guides/end-to-end-testing/writing-your-first-end-to-end-test

 

https://docs.cypress.io/guides/references/cypress-studio (처음 접하는 분들을 위한 cypress tool)

 

https://chrome.google.com/webstore/detail/cypress-recorder/glcapdcacdfkokcmicllhcjigeodacab/related?hl=ko  (구글 플로그인) 

 

- 왼쪽 화면을 보면, 단위테스트 하는 것처럼 녹색 Pass다 된 화면이다.



 

 

■ 4가지 프레임워크중에 어떠한 것을 사용해야 할것인가?

대표적으로 많이 사용하는 것이 있지만, 회사마다 / 업무마다 모두 상이합니다.

그래서 우리는 선택을 해야 합니다. p.64/p65에 걸쳐서 각 기능별 비교표를 제공합니다.

이것을 기준으로 프레임워크를 선택하는데 바로미터를 제공합니다.



 

 

■ 프런트앤드 프레임워크 소개 및 기타 내용

요즘 많이 사용하고 있는 frontend framework를 소개합니다.

기본 설치 및 특징점, 테스트시 참고해야 하는 부분들이 설명되어집니다.

해당 부분은 frondend개발자 분이 보시면, 기초적인 내용일수도 있지만 실제 테스트를 하는 입장에서는 해당 기술요소를 모두다 알기가 쉽지 않습니다. 또한 frondend 개발자분도 아래의 모든 사항을 다 알수없습니다.

이러한 소개는 프런트앤트 테스트를 할때, 개념을 잡아주고 실습해볼수 있는 좋은 내용구성 같습니다.



 

 

 

6장에서는 테스트를 하기 위해서 필요한 테스트 기법, 전략등에 대해서 소개됩니다.

내용이 진부하지 않고, 웹을 테스트 하기 위한 소개 및 이론이여서 테스트 조직에서 기준을 잡을때 참고되는 부분이 있습니다.



 

PART3에서는 위에서 언급된 4가지 테스트 도구에 대해서 조금더 심화 과장을 설명하고, 차이점을 비교하는 구성으로 되어 있습니다.

프런트엔드 테스트를 위해서 좋은 책이 출간된것 같습니다. 보통 이렇게 4가지 기술을 처음부터 끝가지 비교해가면서 소개하는 구성이 쉽지 않은데 이 책을 통해서 현재 지금 자신에게 가장 맞는 테스트툴을 찾을수 있는 정보와 설명을 충분히 제공하는 책이라고 생각합니다.



댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo