사용자가 어떤 웹 서비스를 사용하면서 글을 읽고, 추천을 하고, 댓글을 달고, 친구를 맺고, 상품을 구입할 때마다, 웹 서비스에 데이터가 쌓입니다. 그리고 이러한 데이터를 잘만 가공한다면 사용자에게 의미있는 정보를 제공할 수도 있죠. 페이스북 같은 SNS는 내가 까맣게 잊고 있던 옛친구와 연락이 닿게 해주기도 하고요. 영화 사이트의 메인 화면에는 자신과 영화 고르는 성향이 비슷한 어떤 사용자가 별점을 높게 매긴 영화가 자동으로 추천될 테죠.
이런 것들을 쉽게는 ‘소셜 기능’이라고 하지만 프로그래밍 관점에서는 ‘집단지성 기능’이라고 할 수 있습니다.

『소셜 웹 기획』을 읽다 보면 웹 서비스에 추가하고픈 집단지성 기능들이 매 페이지마다 등장하는데요. (사실은 필수 기능이 아니면 모두 빼버리라고 말하고 있지만요. ^^) 이런 기능들은 쉽게 추가할 수 있을 것 같다가도, 구현하다보면 생각지도 못한 어려움을 겪게 됩니다.
예를 들어, ‘가장 인기있는 상품’을 메인 화면에 보여주기로 마음먹었다고 해보죠. 꽤 ‘간단해보이는’ 기능입니다. 어떤 상품이 판매된 데이터와 위시리스트에 담긴 데이터를 적절히 조합하여 점수를 매기면 되죠. 그런데 1년 전에 판매된 데이터와 어제 판매된 데이터에 같은 점수를 줘도 괜찮은 걸까요? 또, 한 사용자가 여러 번 구매한 경우에는 점수를 어떻게 줘야 할까요?

가장 간단하다고 느껴지는 기능조차 이렇게 여러 변수를 고려해야 하는데, 하물며 페이스북의 친구 초청이나 아마존의 추천 상품을 구현한다면 정말 다양한 데이터를 복잡한 수식으로 엮어내야 할 겁니다.
바로 이 때문에, 집단지성 알고리즘이 필요합니다.
『실전 예제로 살펴보는 집단지성 프로그래밍』은 이러한 집단지성 알고리즘의 다양한 형태를 소개하고 직접 만들어 봅니다. 블로그 검색, 웹 크롤러, 텍스트 분석, 클러스터링 등 얼핏 보기엔 조금 복잡한 용어들이 등장하지만, 예제 코드를 따라 만들어보면 개념을 좀더 쉽게 이해할 수 있겠지요? 또한, 자바 아키텍트로 활동했던 저자 답게 각 코드들을 객체지향적으로 설계해 두어, 실제 웹 사이트에 당장 적용하기에도 편리합니다.
토비 세가란의『집단지성 프로그래밍』이 존재하긴 했지만 파이썬이라 낯설고 내용도 어렵다고 느꼈던 분이라면, 『실전 예제로 살펴보는 집단지성 프로그래밍』을 통해 좀더 쉽게 ‘집단지성’을 구현해볼 수 있을 겁니다. ^^
ps 1. 번역자이신 전희원(고감자) 님의 블로그에서도 검색이나 클러스터링에 관련된 다양한 자료를 보실 수 있으니, 참고하세요~
ps 2. 이 책의 예제 코드는 https://github.com/haven-jeon/CIIA_Korean에서 받으실 수 있습니다.
아.. 정말… 요즘 너무하세요
이렇게 좋은 책들만 출판하시면… 안 사볼 수가 없잖습니까… ㅠㅠ
좋아요좋아요
개인적으로 집단지성 프로그래밍의 예제는 파이썬이라 더 좋았었는데~아 이책의 예제는 자바로 구현한 것 같군요…더욱 더 실용적인 예제일려나~서점 나가봐야겠네요~ 기대됩니다.
좋아요좋아요
번역자께서는 『집단지성 프로그래밍』보다는 예제 난이도가 쉬운 편이라고 하십니다.
(저희가 보기엔 잉크가 체계적으로 묻어 있는 종이 수준이라는 점에서 매한가지…;;)
좋아요좋아요