컴퓨터가 유머를 이해할 수 있다면

by SL

구글 크롬의 재치있는 에러 메시지에 많은 사람이 재미있어 한 기억이 난다.

지구에서 유머 감각을 가진 생물종은 인간밖에 없다고 한다. 바로 그 지성의 총체, 유머에 대한 계산 모델을 탐구하는 연구 소갯글이 IEEE Intelligent Systems에 Computational Humor라는 제목으로 실렸다. 따끈따끈한 내용은 아니고 벌써 5년이나 지난 2006년의 글이지만 Computational Humor(계산 유머?) 연구의 동향을 살펴볼 수 있다.

Frame-Shifting Humor in Simulation-based Language Understanding

by Benjamin Bergen and Seana Coulson

유머를 이해하려면 먼저 텍스트(구어든 문어든)의 내용을 있는 그대로 파악하는 능력부터 갖춰야 한다. 하지만 이게 말처럼 쉽지 않은 건 명시적으로 언급된 내용을 이해하는 것뿐 아니라 빠진 부분을 스스로 채워 넣는 능력이 필요하기 때문이다. 화자가 상식적으로 가정하고 있는 명제를 찾아야 하고, 맥락에 따라 단어의 여러 의미 중 적당한 것을 골라야 하며, 이어질 상황을 예측도 해야 한다.

이 글에서는 저자네 연구팀이 개발한 시스템을 홍보소개한다. 분석(Analysis) 파트와 시뮬레이션 파트로 나뉘어서, 상황에 맞게 입력을 해석하고, 그 입력에 따라 뒤에 나올 내용과 상황을 예측하고, 또 그 예측에 의거해 다음 입력을 해석하는 시스템을 통해 아래의 유머를 이해하는 과정을 설명한다.

“Everyone had so much fun diving from the tree into the swimming pool, we decided to put in a little… water

앞부분에서 암묵적으로 가정했던 것이 뒷부분에서 깨지는 반전을 기계적으로 발견할 수 있다는 건데, 그런데 이게 정말 유머 맞나? 영어 문화권 사람들은 재미있어하나?

Embodied Conversational Agents: “A Little Humor Too”

by Anton Nijholt

두 번째 글에서는 보다 특정한 형태의 유머에 초점을 맞췄다. Incongruity-resolution theory(우리말로 뭔가요? 부조화 해결 이론?)와 관련이 있는데, 그냥 예를 보는 게 쉬울 것 같다. 옷가게에서 쇼핑 중인 여성과 점원의 대화다.

Lady: “May I try on that dress in the window?”
Clerk: (doubtfully) “Don’t you think it would be better to use the dressing room?”

즉, 두 가지로 해석할 수 있는 모호한 문장을 던져서 의미상 충돌을 만들고, 그 오해를 통해 웃음을 주는 방식이다. 그러나 이런 모호함과 오해가 항상 웃기지는 않기 때문에 저자는 유머 이론과 인공지능의 언어를 통해 유머와 단순한 오해 사이의 경계를 설명하려 애쓴다.

이 연구 그룹에서 추진하는 프로젝트는 유머하는 채팅 로봇이다. 글에서는 대명사(anaphora)의 대상을 의도적으로 오해해서 유머를 날리는 정도를 얘기했는데, 다양한 이론을 적용하겠다는 포부를 밝혔으니 5년이 지난 지금의 성과에도 한 번 관심을 가져보자.

Automatic Production of Humorous Expressions for Catching the Attention and Remembering

by Oliviero Stock and Carlo Strapparava

세 번째 글은 유머의 심리/감정적인 요소를 강조하며 시작한다. 너무 무겁고 진지해지지 않도록 긴장을 풀어주고, 창의성을 발휘하게 도우며, 쉽게 사람들의 시선을 끄는 것으로도 부족해 기억력까지 향상시켜주는 유머 니가 짱이다. 이런 효과를 살려 광고나 헤드라인 작성에 활용할 수도 있겠다지만, 저자가 소개하는 프로젝트는 HAHAcronym, 알파벳 약자에 재미난 풀이를 만들겠다는 것이다.

흥미로운 것은 단어에 묻어 있는 감정을 계산하려는 시도다. “fear”나 “cheerful” 같이 직접적으로 느낌을 드러내는 단어도 있지만, “monster”나 “mom”도 거의 그에 상응하는 수준의 감정을 지니고 있다. 저자는 단어가 함께 등장(co-occurrence)하는 패턴을 통계적으로 분석해서 단어 간의 감정적 유사도를 계산하고, 이를 단어 조합에 활용하는 얘기를 한다. 이건 꼭 유머가 아니더라도 글 속에 있는 단어의 느낌을 분석해서 따뜻한 글 / 차가운 글로 분류하거나, 글의 느낌을 색상으로 시각화해도 재미있을 것 같다.

The STANDUP Interactive Riddle Builder

by Graeme Ritchie, Ruli Manurung, Helen Pain, Annalu Waller and Dave O’Mara

마지막으로 소개하는 연구는 가장 실용적인 내용을 담고 있다. 이 연구팀은 자동으로 수수께끼(난센스 퀴즈)를 만들어주는 소프트웨어를 만들었다.

Q: What kind of berry is a stream?
A: A current currant

어떻게? 우선 스키마, 이를테면 “발음이 같은 단어 중 하나는 명사, 다른 하나는 형용사인 것을 찾으라”고 사람이 입력해 두면 프로그램은 사전을 뒤져 조건에 맞는 단어 쌍을 가져온다. 그러면 또 사람이 미리 저장해 둔 문제와 문장을 만드는 패턴 몇 가지를 적용해서 자동으로 위와 같은 수수께끼를 만드는 것이다. 여기 소개된 연구 중에서는 가장 간단한 듯하지만, 또 그만큼 현실적인 방안이 아닐까 싶다.

읽고 나서 네 마디

  • 기계가 유머를 다루는 게 무슨 의미가 있냐고 사람들이 딴죽을 엄청 걸었나 보다. 유저 인터페이스 디자인 등에 활용할 수 있다며 이런 연구의 필요성을 계속 강조하는 걸 보면.
  • WordNet 같은 사전이 구축되어 있으니까 이런 연구에 무척 유용하게 쓰이는구나.
  • 틀려도 부담이 없는 곳에 이런 연구 결과를 많이 응용해 보면 좋겠다. 온라인 게임 NPC가 썰렁하더라도 유머 한 마디씩 날려주면 게이머들이 좋아하지 않을까? 어이없어하려나? (중요한 건 미리 입력된 걸 그대로 내뱉는 게 아니라 상황이나 문맥, 상대에 따라 스스로 유머를 만드는 것)
  • fun 말고 pun이라는 단어가 있었구나. 뜻은 말장난. 재담.