본문 바로가기

IT & Insight/IT News

시리’가 아직까지 말귀를 못 알아듣는 까닭

인터넷 고양이의 크기

“인터넷 데이터가 크고 기하급수적으로 더 커질 것”이라는 얘기는 이제 뉴스가 아니다. 세상에 모래알 개수는 몇 개일까 따위의 질문에 대해, 모래알 개수 자체보다 그것을 추산하는 방법이 흥미롭다. 흥미로운 질문 하나. 인터넷 데이터 전송량 중 고양이가 차지하는 비율은 얼마나 될까? 잘 모르겠지만, 꽤 많을 듯하다. 아직 추산은 못 해 봤다. 좋은 방법이 있으면 꼭 알려주길 바란다.

bigpy_001

위 이미지는 구글 이미지 검색에서 ‘cat videos’를 검색했을 때 나온 결과 중 일부이다. 구글은 얘네들이 고양이인 줄 어떻게 알았을까? 할리우드 영화처럼 고양이 얼굴을 인식했을까? 어떤 회사 제품은 진짜로 고양이 얼굴 인식을 하는 듯하다. 아래 그림처럼.

bigpy_02

구글이라면 고양이 얼굴을 인식하겠다고 나서도 무리는 아니겠지만, 고양이 얼굴 인식은 문제를 너무 특수하게 접근하는 편이다. 그보다는 보다 일반적이고 더 쉬운 방법이 있다. 이미지나 동영상이 삽입된 웹페이지의 글자를 읽으면 된다.

bigpy_03

인터넷 트래픽의 절반 이상이 비디오라고 해도, 텍스트 설명이나 대화가 추가되지 않은 동영상이나 사진은 검색엔진 등이 발견할 가능성이 매우 낮다.

‘cat’과 ‘video’란 단어가 동시에 들어 있는 것을 찾아내는 것은 상대적으로 수월한 편이다. 그런데 이것은 이미 우리가 검색할 때 ‘cat’, ‘video’라고 단어를 각각 제시해 준 덕분이다. 애플 시리나 구글 나우 같은 서비스를 이용할 땐 어떤가. 그들이 무척 아름다운 여성의 음성으로 대답해 주기 때문에 우리도 상냥하게 다음과 같이 물어본다.

bigpy_04

시리 귀에 경 읽기.

이 때부터 일어나야 하는 일이 어려운 일이다. 저 문장을 안 봤다 치고, 눈을 감고 시리 입장에서 생각해 보자. 우리의 관심은 음성-텍스트 변환 (Voice-to-Text)은 아니니, 일단 글자는 다 맞게 텍스트로 변환된다고 가정하자. 아직은 이런 가정이 당연하진 않지만.

음성-텍스트 변환은 잘 됐지만, 시리는 아직 귀가 어두운 할머니 같은 반응을 보인다. 위에서 일어난 일을 추정해 보자면, ‘시리’라는 단어와 ‘검색’이라는 단어는 문장에서 성공적으로 추출해 냈다. 하지만 ‘검색’이라는 동사에 목적어인 ‘고양이 비디오’는 2개의 단어로 이뤄진 구문이다. 이 부분이 어려운 이유는 동사의 목적어가 단어가 아닌 구문이기 때문이다. ‘고양이’ 한 단어로 목적어를 정해 물어보면 할머니는 갑자기 명석하고 세련된 비서로 되돌아온다. 즉, 시리에겐 ‘고양이 비디오’가 같은 개념을 형성하는 목적어라고 인식하는 것이 어렵다. 이상적인 경우라면 다음과 같은 일이 일어났어야 했다.

  • 시리 고양이 비디오 검색 → 검색: 고양이, 비디오

비교적 간단한 예시였지만, 위 경우에서 시리는 실망스럽게도 수행에 실패한 반면, 훨씬 더 복잡한 명령을 잘 처리하는 경우도 있다. “오늘 저녁 여섯 시에 약속 잡아줘”라는 명령은 위 예시보다 훨씬 복잡하다. 시리는 일단 텍스트-음성 변환을 완벽히 해냈고, 더 훌륭한 것은 명령도 잘 수행했다는 점이다. 작업의 수행은 동사가 중요한데, 아래의 예시에서 보듯 시리 입장에서는 쉽지 않은 동사이다.

  • ‘잡아줘’ → 잡다

‘잡다’라는 동사가 일정을 생성해 달라는 요청으로 해석이 되는 것은 매우 문맥적이다. 만약 다른 방식으로 얘기하면, 다른 의미가 돼야 한다.

이봐 시리, 거기는 택시 회사가 아니야....

이봐 시리, 거기는 택시 회사가 아니야….

‘자연’스러우니까 자연어

컴퓨터과학에서 우리 인간이 말하거나 쓴 글은 기계어인 컴퓨터 프로그래밍 언어와 대비해 ‘자연어’라고 부른다. 시리나 구글 나우 같은 인공지능은 컴퓨터니까 자연어를 그냥은 못 알아듣는다. 자연어를 처리하는 알고리즘과 통계적인 모델이 필요하다. 즉, 컴퓨터과학자들이 자연어 원리를 깨우치고 문장에서 명사·동사·형용사·조사가 무엇인지, 개별적인 단어로 인식해야 하는지, 단어들의 조합인 구문으로 인식해야 할 때는 어떤 방식으로 해야 하는지 알 수 있는 방법을 컴퓨터에게 알려줘야 한다. 이런 것은 앨런 튜링이 ‘만능 기계'(Universal Machine)를 생성했을 때부터 수리논리학자와 이후 컴퓨터과학자들의 주된 목표 중 하나였다. 자연어 처리하는 기법과 관련한 기술은 ‘자연어 처리(NLP, Natural Language Processing)’라고 부른다.

출처 : http://cs.na.infn.it/images/dialog.jpg

출처 : http://cs.na.infn.it/images/dialog.jpg

튜링의 전쟁

자연어 처리는 1950년대 앨런 튜링까지 거슬러 올라간다. 튜링의 생각은 이러했다. ‘단순한 산수를 할 수 있으면 단계적인 추론도 할 수 있어야 하고, 추론을 할 수 있으면 인간과 마찬가지로 지능을 가졌다고 할 수 있다. 지능을 갖게 할 수 있으면 말도 이해할 수 있다.’ 실천적인 논리학자인 튜링은 컴퓨터의 ‘인공지능’은 독일의 이니그마 암호를 푸는 것에 그치지 않을 거라 생각했다.

1950년 튜링은 ‘컴퓨터 기계장치와 지능’이라는 논문을 발표했다. 당시 ‘컴퓨터’는 ‘산수를 수행하는 인력’을 의미했기에, 튜링은 ‘기계장치’라는 표현을 써서 인간이 아닌 컴퓨터임을 분명히 했다.

산수를 수행하는 인간 ‘컴퓨터'(출처 : http://en.wikipedia.org/wiki/Computer)

산수를 수행하는 인간 ‘컴퓨터'(출처 : http://en.wikipedia.org/wiki/Computer)

앨런 튜링

앨런 튜링

한글 자연어 처리

자연어 처리는 컴퓨터과학이 발전한 영미에서 주로 시작돼 서유럽 언어를 중심으로 발전돼 왔다. 언어로 의사소통하는 것은 인간의 주요한 특징인데, 한 가지 언어로 의사소통할 수 있다고 해서 다른 언어로 바로 의사소통할 수 있는 건 아니다. 한 가지 언어를 익히는 데는 매우 많은 시간의 읽기·쓰기·말하기·듣기가 필요하다. 인공지능 완성 기준이 적절하게 교육받은 성인의 수준이라면, 그러한 지적인 능력은 가진 성인이 영어로 의사소통하다가 필요하다고 해서 갑자기 한국어로 의사소통하기는 어렵다. 이러한 사실을 받아들일 수 있다면, 설령 컴퓨터가 오늘 당장 인공지능을 달성한다고 해도, 그리고 그 컴퓨터가 일단 영어로 의사소통이 가능하다고 해도, 한국어를 이해하게 만드는 데는 또 다른 노력이 필요하다는 논리적인 결론을 받아들일 수 있다.

만약 그렇다면 컴퓨터 메모리는 인간의 두뇌보다 훨씬 빠른 속도로 입·출력을 할 수 있기 때문에 시간은 줄어들긴 하겠지만, 한국어 학습을 위해 필요한 데이터의 총량이 줄어들지는 않을 것이다. 우리처럼 유치원, 초등학교, 중·고등학교, 대학을 거쳐오면서 소설들을 읽어내야 할 것이다. 또한 우리는 문자를 처리할 뿐만 아니라 문자에 의지해 어떠한 개념을 형성하고 계발한다. 즉, 중학교에서 어떤 소녀에게 느끼는 감정을 황순원의 ‘소나기’를 통해 투영하고 계발하면서 어떤 글자의 조합은 우리에게 진정한 의미가 된다. 한국어로 읽은 ‘소나기’와 영어로 읽은 것이 같은 개념에 닿기는 매우 어렵다. 전자회로로 된 두뇌의 입·출력의 속도가 훨씬 빠르다고 해서 문자와 내재적 개념의 형성이 연결되는 과정을 우회할 수 있지는 않다. 게다가 아마 청소년기에 같은 반 여학생을 향해 느끼는 호르몬 충만한 감정들은 아무리 고도로 발달된 컴퓨터라도 충실히 이해하기는 어려울 것이다.

자연어 처리에 관한 얘기는 곧 인공지능의 완성을 향한다. 그렇기 떄문에 자연어 처리는 지능과 의식에 관한 얘기를 피해가기 어렵다. 여러가지 다른 ‘자연어’를 상대로 한다면 더욱 더 그렇다.

그렇다면 자연어 처리는 인공지능의 완성을 반드지 전제로 해야 하는 것일까? 시리가 당분간은 더 똑똑해지긴 상당히 어렵겠지만, 그렇다고 아예 말귀를 못알아듣는 천치처럼 행동하지는 않는다. 컴퓨터 게임과 같이 매우 잘 통제된 상황에서 인공지능은 상당히 발전했다. 자연어 처리의 대상은 일반적으로는 컴퓨터 게임만큼 통제가 어렵기 때문에, 컴퓨터 게임에서 인공지능만큼 일을 잘 해내기는 어려울 것이다. 그럼에도 불구하고 인터넷의 많은 텍스트 문서를 활용해 어느 정도 통계적으로 유의미한 결과를 도출해 낼 수 있다.

현재 한글 자연어 처리는 명사, 동사, 조사, 대명사 등과 같은 것을 분리해 내기 위해 여러 유능한 연구자들이 노력하고 있다. ‘고작 그 정도?’라고 생각할 수 있겠지만, 인공지능이 내재적인 개념을 형성하지 않은 채로 통계적인 방법만을 의존하는 동안은 아마 크게 바뀌기는 어려울 것이다.

파이썬과 한글 자연어 처리

파이썬은 언제나 그렇듯, 여러 다른 라이브러리를 적극적으로 받아들일 수 있다. 지난 10여년간 한국의 여러 학자들이 연구한 한글 자연어 처리 중 상당수가 오픈 소스 형태로 공개됐다. 파이썬 쪽에서는 2014년 서울대에서KoNLPy(박은정, 2014) 파이썬 패키지를 공개했다. 이 패키지는 C/C++, 자바, 스칼라 등으로 공개된 자연어 처리 소프트웨어 라이브러리를 파이썬에서 쉽게 사용할 수 있는 형태로 제공하고 있다. 2014년 파이콘 한국에서 처음 소개됐다.

KoNLPy

‘코 엔 엘 파이’라고 읽는다는 친절한 설명.

자연어 처리 소프트웨어는 적어도 현재 시점에서는 모두 통계적 방법론을 활용한다. 어떤 텍스트로 통계 모델을 훈련하느냐에 따라 결과가 매우 달라질 수 있다는 얘기다. 그런데 훈련할 텍스트를 어떻게 선택하느냐는 결국 인간의 판단과 지능에 달려 있다. 그러니 같은 자연어 처리 모듈이라고 해도 그것을 어떻게 훈련시켰는지에 따라 매우 다른 성능과 결과를 보인다.

이러한 문제는 인공지능의 근본적인 문제가 해결되지 않는 이상은 이 틀에서 벗어나기는 어려울 것이다. 하지만 적어도 훈련을 위한 데이터를 취득하고, 통계 모델을 학습시키고, 훈련된 모델을 적용하는 과정은 되도록 편리해야 한다. 파이썬은 이러한 전체 과정을 보다 효과적으로 진행하는 데 매우 이상적인 언어이자 플랫폼이다.