자연어처리에 관련된 업무를 하기 위해서 가장 필요한 지식은 바로 품사에 대한 이해이다. 우리가 학창 시절에 공부를 했기 때문에 다들 품사가 무엇인지 어느정도 알고 있을테지만, 자연어처리를 더욱 잘 이해하기 위해서는 품사에 대한 이해를 학창 시절 이상으로 끌어올려야 한다.
게다가 자연어처리를 하는 대다수는 컴퓨터 공학을 전공한 이과생들이기 때문에 문과생들보다 품사에 대한 이해가 상대적으로 떨어질 수 있기에 자연어 처리를 할 때 사용하는 품사들의 종류가 무엇인지 조금 더 자세히 알아 볼 필요가 있다.
형태소 분석
품사를 붙이는 행위를 PoS(Part of Speech, 품사) Tagging이라고 한다. 형태소 분석은 의미있는 가장 작은 단위의 말(형태소)을 분석한다라는 뜻을 담고 있기에 Pos Tagging 즉 품사 태깅 행위를 현업에서는 구분없이 동의어로 상당히 자주 사용한다.
하지만 정확히는 형태소 분석은 말 그대로 형태소를 분석하는 모든 행위(어근, 접두사/접미사등 속성 구조 파악까지)를 하지만 품사 태깅은 형태소의 품사를 붙이는 역할까지만 하는 것이다.
형태소를 분석하기 위해서는 어디까지 어떻게 품사를 지정할 것인지가 중요하지만, 세종대왕님이 이런 것을 남기지 않았기 때문에 국어학자들 상당수가 아직도 통일된 의견을 내놓고 있지 못하고 있다. 그러다보니 아직도 동일한 문장을 다양하게 해석하게 되는 경우가 많은데 컴퓨터를 사용하는 자연어처리(NLP)는 이런 모습이 더욱 심해진다.
컴퓨터는 형태소를 분석하는 것 이상으로 성능(얼마나 빨리 분석하는지)까지를 고려해야 한다. 형태소 분석기가 너무 느리다면 아무도 사용을 안할 것이기에 의미를 전달할 수 있을 정도로만 형태소를 분석하는 경우가 많아지고 있으며 최근에는 형태소 분석기라는 용어를 사용하지 않는 형태소 분석기들도 등장하고 있다.
한글 형태소 품사
위 표는 우리나라에서 가장 많이 사용하는 품사 태그 집합들이며, 가장 우측은 서울대에서 만든 꼬꼬마 형태소 분석기의 품사 태그 집합이다. 다만 꼬꼬마 형태소 분석기는 세종 품사를 활용해서 만든 포크(fork, 상속하여 독립)된 태그라서, 사실상 새로운 품사 집합이라 말하기는 무의미하다.
아무튼 세종 품사와 심광섭 교수님[2]의 품사 태그를 가장 많이 사용하는데 최근에는 세종 품사쪽으로 많이 기울어진 모습을 보여준다. 아무래도 세종 품사의 경우 국가 주도의 프로젝트이며, 최근 챗봇(Chatbot) 등에서는 인간인지 헷갈릴 정도의 수준으로 대화를 하고 있는데 이런 수준으로 분석을 하기 위해서는 품사가 더욱 정교해야만 하기 때문에 수많은 형태소 분석기들은 결국에는 세종 말뭉치를 사용하는 것이라 볼 수 있다.
핵심 품사
그러면 자연어처리를 하기 위해서는 이 수많은 품사를 그럼 다 이해를 해야 하는 것일까? 정답은 그래야 할 수도 있고, 아닐 수도 있다.
위에 말했다시피 정말 우리나라 굴지의 챗봇을 만들거나 인간의 언어를 완벽히 이해하는 시스템을 만들기 위해서는 국어학자 수준의 이해도가 필요하다. 하지만 대다수는 이런 시스템을 만들지 않을 것이며, 이정도로 큰 규모를 만든다면 당연히 국어학자 혹은 언어학자와 같이 co-work를 통해서 개발을 진행하게 된다.
대다수의 자연어처리 시스템(ex: 분류, 유사 문서)은 4개 정도의 품사만 알아도 분석하는데 크게 지장이 없다. 핵심 품사로는 "명사", "동사", "부사", "형용사" 정도이며, 여기서 +@로 1~2개 품사가 더 생길수도 있지만, 명사 하나로만 분석하는 프로젝트들도 상당히 많다. 수많은 형태소 분석기가 "명사"만 따로 뽑는 기능을 별도로 제공하는 것이 바로 그 방증(傍證)이다.
핵심 품사가 아닌 다양한 품사를 모두 이해하는 것으로는 인간과 대화를 시도하는 고성능의 챗봇이 그 대표적인 예이다.
다음 포스트
References
[1] 꼬꼬마 한국어 형태소 분석기 - 한글 형태소 품사 태그표, http://kkma.snu.ac.kr/documents/?doc=postag
[2] 심광섭, 양재형, "인접 조건 검사에 의한 초고속 한글 형태소 분석기", 정보과학회논문지 : 소프트웨어 및 응용 제31권 제1호 pp.89-99, 2004. 1
[3] 카카오i 랜선 친구 외개인아가 (1)기획편, https://tech.kakaoenterprise.com/78
'Zero to 시리즈 > Zero to 자연어처리(NLP)' 카테고리의 다른 글
[NLP] 개체명 인식(Named Entity Recognition) 구현하기 (0) | 2022.04.22 |
---|---|
[NLP] Java 금칙어 생성법 (0) | 2022.04.17 |
[NLP] 코모란(Komoran) 사용자사전 만들기 (2) | 2022.04.10 |
[Java] 코모란(Komoran) 형태소분석기 사용하기 (3) | 2022.04.07 |
[NLP] 형태소 분석 확인 사이트 (0) | 2022.03.10 |