Tag Archives: 검색

자연어처리(NLU)를 하기 위한 소프트웨어 아키텍쳐 – 걸음마단계부터 인간 수준으로 진화하는 방향에 대해 알아본다

자연어 처리의 역사는 1950년대로 거슬러 올라가야 합니다. 당시 지금과 같은 컴퓨터 기술이 없었을때도 로봇이 사람의 말을 알아들을 수 있을까에 대한 의구심이 있었습니다. 또한 어떻게 하면 로봇이 사람의 말을 인지할 수 있을까에 대한 궁금증 또한 있었습니다.

인공지능의 가장 큰 도전과제는 어떻게 지식을 이해하고 표현할 것인가일 것입니다. 이해하는 것과 표현하는 것은 다를 것 같지만, 결국 그 둘의 공통분모는 이를 어떻게 정보화 할 것이냐에 대한 결과로 도출이 됩니다.

자연어처리라는 학문은 NLU라고 부르며 Natural Language Understanding의 줄임말입니다. 즉, 자연어에 대한 이해…

우리가 사용하는 언어는 일련의 규칙을 가지고 있으며, 여러가지 상황이 얽혀 있습니다. 소프트웨어 측면에서는 Multiple Query의 조합(Combination)이라고 할 수 있으며, 이는 어떠한 상황(State)에 대한 정보도 포함합니다.

이를 흐름도로 도식화 하면 다음과 같이 나타 낼 수 있습니다.

자연어처리(NLU)를 하기 위한 소프트웨어 아키텍쳐 - 걸음마단계부터 인간 수준으로 진화하는 방향에 대해 알아본다

우리가 어떠한 사실이나 개체를 인지할때는 대화를 통해서 알게 됩니다. 이것이 축적되면 굳이 대화를 나누지 않아도 우리 머리속에 그러한 상황정보가 남게 되고, 굳이 여러 대화를 나누지 않아도 한방에 알 수 있게 되는 것입니다.

결국 우리가 자연어처리 시스템을 구축한다고 하면 결국 “대화형 시스템”을 구축한다라고… 말해야 하는 것이 맞습니다. 대화형 시스템의 3단계 레이어를 도식화 하면 다음과 같이 나타 낼 수 있습니다.

자연어처리(NLU)를 하기 위한 소프트웨어 아키텍쳐 - 걸음마단계부터 인간 수준으로 진화하는 방향에 대해 알아본다

위의 그림에서 Dialogue Manager에서 핵심적인 기능은 있는 정보를 오케스트레이션(잘 버무리는 것; Dialog Orchestration)입니다. 이를 가능하게 하려면 양질의 메타데이터와 그에 따른 빅데이터가 있어야 가능할 것입니다.

자연어처리(NLU)를 하기 위한 소프트웨어 아키텍쳐 - 걸음마단계부터 인간 수준으로 진화하는 방향에 대해 알아본다

대화 시 상황정보를 받아들이는 계층을 도식화 하면 다음과 같이 표현 할 수 있습니다. 소프트웨어적 측면에서는 다음의 4단계로 나눌 수 있습니다.

  1. 명령(Command)
  2. 질문(Question)
  3. 할 일(Task)
  4. 잡담(Chat)

자연어처리(NLU)를 하기 위한 소프트웨어 아키텍쳐 - 걸음마단계부터 인간 수준으로 진화하는 방향에 대해 알아본다

지금까지 구현된 대화형 솔루션은 3번까지입니다. 4번의 경우 일부 업체들이 그러한 기술을 구현했고, 계속 발전하고 있는 상태입니다.

대화형 솔루션의 궁극의 목표는 누가 말했느냐… 까지 구현하는 것일 것입니다.

자연어처리(NLU)를 하기 위한 소프트웨어 아키텍쳐 - 걸음마단계부터 인간 수준으로 진화하는 방향에 대해 알아본다

이러한 정보를 효과적으로 오케스트레이션하는 방법론으로는 다음과 같은 접근이 가능할 것입니다.

자연어처리(NLU)를 하기 위한 소프트웨어 아키텍쳐 - 걸음마단계부터 인간 수준으로 진화하는 방향에 대해 알아본다

마지막으로 자연어 처리는 Rule-based DM(Dialog Management) 또는 Data-based DM(Dialog Management)를 기반으로 동작하게 될 것입니다.

자연어처리(NLU)를 하기 위한 소프트웨어 아키텍쳐 - 걸음마단계부터 인간 수준으로 진화하는 방향에 대해 알아본다

현실적으로 자연어처리 소프트웨어를 만든다면  “자연어 처리로 무엇을 할 것이냐”에 대한 답을 가지고 있어야 가능 할 것입니다.

예를 들면 다음과 같은 목표가 있어야 합니다.

  1. IPTV 서비스를 위한 콘텐츠 추천
  2. 홈표핑을 위한 제품 추천
  3. 제품 고장 처리를 위한 문제점 확인

아마도 가까운 미래에는 위와 같은 DM Engine이 많이 만들어져 있을 것이고, 이것을 다시 오케스트레이션 하는 통합 엔진이 나올 것입니다. 그러면 정말 인간과 가까와지는 천재 로봇이 나올지도 모르겠군요.

구라파닷컴 서버 이전 – 뉴욕에서 한국으로

이번에 저와 동거동락해 온 구라파닷컴(KURAPA.COM) 미국서버를 2014년 4월 4일 한국으로 옮겼습니다.

 

지난 주 금요일에 계약을 진행하여 바로 당일 서버를 오픈하였는데요,

주말 이틀간 시험서비스를 한 후 오늘 정식으로 이전 완료하였습니다.

 

OS는 이번에 이전하면서 Centos 5.x에서 Centos 6.x로 업그래이드 했습니다.

구라파닷컴 서버 이전 - 뉴욕에서 한국으로

전에는 VPS(Virtual Private Server) Hosting 업체가 별로 없었고,

미국 외에 가격적인 측면이나 서비스적인 측면에서 경쟁력 있는 한국 업체가 없어서

이전을 망설여왔습니다.

 

지금 한국 업체의 VPS를 사용 중인데,

여전히 서비스는 미국 VPS 업체보다 모자라는 점이 있습니다.

 

그러나 1:1 도움을 요청하면, 한국인 특유의 친절한 서비스를 받을 수 있어 좋았습니다.

 

또 서버가 미국에 있으니 네이버(NAVER)에서 크롤링(Crawling)을 해가지 않아

네이버(NAVER) 검색 시 검색이 안되는 문제가 있었는데요.

 

한국으로의 서버 이전으로 이는 좀 개선의 여지가 있다고 판단됩니다.

 

전에는 서버가 미국에 있어 접속이 느렸지만,

이제 서버가 한국에 있으니… 전처럼 느리거나 하지는 않을 것 같습니다.

 

구라파닷컴 서버 이전 - 뉴욕에서 한국으로

 

서버 이전 및 플렛폼 변경에 따른 카테고리 분류 작업 완료

기존에 Dynamic DNS방식을 이용하여 서비스 하던 kurapa.com을 VPS(Virtual Private Server) 방식으로 변경하면서 서비스 플렛폼 소프트웨어를 범용 플렛폼인 워드프레스(WP, Word Press)로 변경하였습니다.

서버 이전 및 플렛폼 변경에 따른 카테고리 분류 작업 완료

범용 플렛폼인 워드프레스(WP)로 바꾸면서 생긴 장점이라 한다면 쉬운 사용성과 역시 유지보수일 것 같습니다.

일부 아쉬운 점은 블로그를 홍보하기 위한 수단이 제약적이라는 것입니다.

왜냐하면 국내 서비스를 주름잡고 있는 네이버나 다음은 소위 크롤링 봇을 거의 운영하고 있지 않고 고객의 움직임에 기반하고 있기 떄문인 것으로 생각됩니다.

이 경우 콘텐츠에 대한 레이팅(Rating)은 고객의 움직임에 의존할 수 밖에 없다는 단점이 있는데요, 이 때문에 이슈가 되는 것은 잘 찾아 낼 수 있다는 장점이 있지만, 반대로 신규 콘텐츠는 발굴이 안되는 단점도 가지고 있습니다.

크롤링을 하지 않으니 검색이 될 턱이 없겠죠.

kurapa.com은 현재 카테고리 분류 작업을 완료 한 상태로, 다음 단계는 메타블로그 등록을 생각하고 있습니다. 여기에 RSS를 통한 효과적인 정보 전달 방법을 고려 할 예정인데요. 이는 기존 워드프레스 플렛폼에서는 지원이 안되는 부분이기 때문에 프로그래밍을 해야 될 것 같습니다.

구글 검색시 순위 올리기

아직 진행중이지만, 구글 댄스로 인해 많은 블로그의 페이지 랭크에 변화가 있습니다. 재미있는 것은 한국의 유명한 블로그 혹은 메타블로그의 랭크가 5에 수렴한다는 사실인데요, 이것으로 페이지 랭크 알고리즘을 추적해 볼 수 있습니다.

구글의 웹 검색 순위는 페이지 랭크를 이용하는 것으로 알려져 있지만, 지금에 와서는 이 말은 전혀 틀린 이야기가 됩니다. 페이지 랭크 알고리즘에 따르면 새로 만들어진 웹문서가 전적으로 불리하게 작용합니다. 따라서, 구글은 페이지 랭크에 개인화 검색 결과를 섞어서 순위를 정하게 됩니다. 구글에서 “핵실험”으로 검색을 할 경우, 많은 뉴스 페이지들을 볼 수 있고, 그 문서가 만들어진 날짜가 보통 10월 이후입니다.

하지만, 페이지 랭크 값이 높으면 왠지 자신의 웹사이트가 유명해 진 것 같은 기분이 들기도 합니다. 검색 결과에 있어서 페이지 랭크 값은 예전에 비해서 중요도가 많이 떨어졌지만, 그럼에도 불구하고 웹사이트를 알리는데 많은 도움을 주고 있습니다.

이상한 현상 1. 한국 블로그는 랭크 5 이상이 없다?

구글 댄스가 진행되면서 대부분의 유명 블로그는 랭크 5를 얻고 있습니다. 하물며, 올블로그나 미디어몹, 블로그플러스 등의 메타 사이트들도 5를 넘지 못합니다. 그렇다면 구글 한국 공식 블로그의 랭크는 몇일까요? 무려 7입니다. 랭크 7은 네이버보다 높고, 다음이나 조선일보와 같은 값입니다.

올블로그보다, 네이버보다 구글 한국 공식 블로그가 더 인기있다는데 동의할 사람이 있을까요?

랭크 5를 넘는 블로그는 한국에는 구글 한국 공식 블로그 외에 없는 것으로 보이고, 메타 블로그의 경우는 이글루스가 랭크 6, 다음 블로그가 랭크 6을 얻고 있습니다. 다음은 그렇다 쳐도 이글루스의 랭크 6은 어떻게 얻어졌을까요?

이 내용은 이후에 알아보기로 하고, 한국 블로그의 최고 랭크는 현재까지 구글 공식 블로그를 제외하고 최대 5라는 것은 이후의 글을 이해하는데 도움이 됩니다.

이상한 현상 2. 왜 5이상의 블로그는 존재하지 않는가?

블로그는 태생이 링크로 묶여 있는 커뮤니티이기 때문에 구글의 페이지 랭크에 매우 강합니다. 구글은 링크가 많은 페이지가 더 중요하다고 보기 때문인데요, 그렇다면 블로그는 다른 페이지들 보다 높은 랭크를 얻어야 합니다. 그리고, 그 점수도 빠른 속도로 올라가야 합니다.

페이지 랭크를 주의깊게 본 사용자라면 영문 페이지들이 한글 페이지보다 일반적으로 더 높은 값을 갖는다는 사실을 알 것입니다. 그리고, 이런 이유로 블로그로 돈을 벌려면 영문으로 해야 한다고 주장하기까지 합니다. 과연 영문 블로그가 일반적으로 한글 블로그보다 방문자가 많을까요? 그래서 랭크가 높게 나오는 것일까요?

그리고, 하필이면 왜 5 이상의 블로그는 없을까요?

이상한 현상 3. 바캠프(BarCamp) 한국 페이지는 왜 6일까?

바캠프 서울은 생긴지 오래되진 않았습니다. 그리고, 일반인들에겐 잘 알려져 있지 않습니다. 블로그를 둘러보아도 많은 링크가 있다고 보기도 어렵습니다. 하지만, 바캠프 서울의 랭크는 6. 이 점수는 어떻게 나온 것일까요? 과연 페이지 랭크는 백링크가 많은 웹페이지에 높은 점수를 부여하긴 하는 것일까요?

진실 1. 트러스트 랭크(TrustRank)

페이지 랭크가 알려지고, 구글 검색에 대한 SEO, 즉 검색 엔진 최적화라는 말이 생기면서 스팸이 빠른 속도로 늘었습니다. 스패머는 자동으로 페이지를 생성해서 서로 링크를 거는 방식으로 구글의 상위에 위치하는 방법을 썼는데, 이 부분은 팔글에서도 다룬 바 있습니다.

이런 이유로 생긴 것이 트러스트 랭크인데, 요약하면 구글은 랭크 10짜리 사이트를 인위적으로 정합니다. 공정성을 기하기 위해서 오픈 디렉토리에 등록된 웹사이트를 이용할 수도 있습니다. 아무튼 어떤 인위적인 방법으로 높은 점수의 웹사이트를 정하고, 거기에 링크된 웹페이지들의 점수를 계산합니다.

이런 이유로 영어로 된 웹사이트들의 점수가 더 높은 것입니다. 즉, 현재 랭크 10을 달리고 있는 구글닷컴(google.com), 애플닷컴(apple.com) 등에 링크가 걸린 웹페이지들은 왠만해선 7 이하로는 떨어지는 법이 없습니다. 따라서, 구글의 공식 블로그들은 매우 높은 랭크값을 얻을 수 있습니다. 구글 한국 공식 블로그의 랭크 7도 이런 것으로 설명이 됩니다.

서울대 웹사이트(랭크 8 )를 보면 재미있는 사실을 알게 됩니다. 서울대 첫페이지에는 각 과별 웹사이트가 링크되어 있는데, 랭크를 확인해 보면 보통 랭크 5 이상은 된다는 것을 알 수 있습니다. 서울대 메인 페이지에 링크가 걸린다면 손쉽게 랭크 7 까지는 올릴 수 있겠지요.

진실 2. 롱테일 이론은 통하지 않는다

아무리 많은 백링크를 갖고 있는 웹페이지라도 트러스트 랭크를 통하지 않고는 일정 점수 이상 오르기는 불가능합니다. 다음은 정말 많은 백링크를 가지고 있는 한국의 대표 포털이지만, 겨우 페이지 랭크는 7, 네이버는 6입니다. 그리고, 다음 메인에 링크가 되어 있는 다음 블로그는 랭크 6.

한국에서 랭크 7을 넘기위해서는 어떻게 해야 할까요?

진실 3. 블로그는 악마의 5를 뛰어넘을 수 없다

물론 이 말은 현재의 진실이지만, 미래의 진실일 수는 없습니다. 왜냐하면 한국엔 구글 공식 블로그가 있기 때문입니다. 현재 구글 공식 블로그의 랭크는 7. 그 곳엔 십여개 블로그의 링크가 걸려 있습니다. 이삼구글도 그 곳에 링크가 있어서, 구글 댄스 이후의 값은 랭크 5. 그리고, 김중태 블로그도 역시 랭크 5입니다.

만약, 한국 블로고스피어에 페이지 랭크 5를 돌파하는 일이 발생하려면, 6 이상의 웹사이트에 고정 링크가 있어야 합니다. 세가지 시나리오가 있을 수 있습니다.

1. 다음 블로그 메인페이지에 블로그로 향하는 고정 링크가 존재
2. 이글루스 메인페이지에 블로그로 향하는 고정 링크가 존재
3. 구글 한국 공식 블로그에 고정 링크가 존재

3번은 현재에도 있는 것이니만큼, 한국 블로고스피어의 랭크 값이 올라가려면 김중태 블로그나 이삼구글 블로그가 랭크 5를 넘어야 합니다. 아니면, 1,2와 같은 방법이 적용되어야 합니다. 그렇지 않기 때문에 현실적으로 랭크 6 이상의 블로그는 현존하기가 매우 힘듭니다.

능동적 시나리오

페이지 랭크에 목숨걸 일은 없지만, 재미로 한다면, 블로고스피어의 전체적인 랭크 값을 올리기 위해, 우선적으로 높은 랭크 값을 갖는 웹페이지에 어느 한 블로그가 링크되는 일이 발생되어야 합니다. W3C(랭크 10)도 좋고, PHP.net(랭크 9)도 좋습니다. 한국에선 외국에 인용이 많이 되는 에트리(etri.re.kr, 랭크 9)가 좋겠죠. 아무튼, 이런 웹사이트 메인에 블로그 링크가 걸려야 합니다.

일단, 그런 블로그의 랭크 값이 올라가면, 그 블로그는 자신이 좋다고 생각하는 블로그를 자신의 메인 페이지에 걸어줍니다. 그리고, 그런 식으로 밑으로 뻗어나아가면 전체적인 블로그 점수가 높아집니다.

이상은 구글 댄스가 진행 중이어서 생각해 본 이삼구글의 가상 시나리오 입니다. 툴바가 설치되지 않았다면, 리플넷에서 제공하는 페이지 랭크 알아보기를 이용해 보세요. livepr에선 더 자세한 값을 알 수 있습니다.

이 모든 것이 복잡하다고 생각한다면, 페이지 랭크를 살짝 무시해버리는 센쓰가 필요합니다. 🙂

Update

페이지 랭크 6의 블로그가 존재합니다. 역시, 구글 한국 공식 블로그에 링크된 두 곳입니다. 김중태 블로그 중 구글(Google) 관련 글 모음과 하늘은 블루님의 블로그 (하늘은 블루님 감사~)

Update2

페이지 랭크는 웹사이트의 랭크가 아닌 “페이지”의 랭크입니다. 첫페이지만을 이야기 한 이유는 일반적으로 첫페이지 랭크가 가장 높기 때문이고, 그렇지 않은 경우도 많이 있습니다. 김중태 블로그의 경우도 첫페이지 보다는 구글 관련 글 모음 쪽이 랭크가 높습니다. 이삼구글 블로그도 구글 댄스 전에는 첫페이지 보다는 사이트맵(blog.repl.net/index.php/sitemap/) 쪽의 랭크가 더 높았습니다.

Update3

한국에서 랭크 5를 넘는 블로그가 존재합니다. 개발관련 웹사이트에 링크가 됐기 때문으로 풀이가 됩니다.