API 정리하기

개발 일지를 보니... 마지막으로 자연어처리 API를 수정한 것이 벌써 두 달 전입니다. 아 이런 적폐를... 하여간 9월 개강하면서 센터 사업 만드느라 정신없이 지냈고 10월에는 프로젝트 보고서 마감에... 개발사들과 미팅을 하면서 시간을 보내다보니 어느덧 늦어진 나의 논문 !!!!! -______-;;;;

아마 rmaster를 방문해주시는 여러분들도 한글 처리하면서 겪어본 문제일텐데 잠깐 문제점만 지적하고 넘어갈까요?

보기:
영화에 나온 주인공은 아름다웠다.
아름다운 주인공이 나온 영화였다.
영화는 아름다운 주인공으로 빛났다.
영화에 아름다운 주인공이 나와 좋았다.

문제:
위의 문장을 하나의 intent에 포함되도록 Word Bag을 만들라.

어떻게 해야 할까요? 형태소 분석을 시도해보겠습니다. 먼저, 영화에 나온 주인공은 아름다웠다.

['영화', 'Noun'],['에', 'Josa'],['나온', 'Verb'],['주인공', 'Noun'],['은', 'Josa'],['아름다웠', 'Adjective'],['다', 'Eomi']

어설픈데 조사는 Josa, 어미는 Eomi라고 씁니다. 정리하면, "영화-나온-주인공-아름다웠"이 intent를 구성합니다.

다음 문장을 볼까요? 아름다운 주인공이 나온 영화였다...
['아름다운', 'Adjective'], ['주인공', 'Noun'], ['이', 'Josa'], ['나온', 'Verb'], ['영화', 'Noun'], ['였', 'Verb'], ['다', 'Eomi'], ['.', 'Punctuation']

추려보면, 아름다운-주인공-나온-영화 입니다.

두 개의 intent가 겹치려면 1)아름다우+어ㅆ과 2)아름다우 + ㄴ이 같다는 사실이 드러나야 합니다. 한국은 자음 혹은 모음 첨가와 축약이 있어서 단어대 단어로 matching하기가 까다롭습니다. 영어는 불규칙 변화가 있지요. want -> wanted 이런 것처럼

불규칙 변화는 용언에 집중됩니다. 형용사, 동사, 부사에 해당됩니다. 불규칙으로 된 단어에 표식을 남겨봅니다. 그리고 순서를 정리해보겠습니다.

n영화-n주인공-v나온-a아름다웠#
n영화-n주인공-v나온-a아름다운#

같은 방식으로 정리하면,
"영화는 아름다운 주인공으로 빛났다"는
n영화-n주인공-v빛났다#-a아름다운#

그리고,
"영화에 아름다운 주인공이 나와 좋았다"는
n영화-n주인공-v나와#-v좋았다#-a아름다운#

한 번 다 모아 봅시다.
n영화-n주인공-v나온#-a아름다웠#
n영화-n주인공-v나온#-a아름다운#
n영화-n주인공-v빛났다#-a아름다운#
n영화-n주인공-v나와#-v좋았다#-a아름다운#

순서를 재구성하니, n의 일치율은 100%, v의 일치율은 50%, a의 일치율은 100%입니다. 단어 뒤에 #가 붙은 경우 불규칙 용언의 유사도 계산 함수에 넣어 일치서을 비교한다고 가정한 경우입니다. Intent 가중치 계산은 다음 식을 따릅니다.

Intent = w1*n+w2*v+w3*a

아무래도 명사에 가중치가 많이 가고, 부사쪽에도 가중치가 높게 들어가야 하겠습니다. 주제가 '영화'라고 되어 있으면 '감성엔진'을 ON 시켰어야 하니까요. 아무래도 마음을 보여주는 부사어에 초점이 있어야 좋습니다.

문제를 다시 바꾸면,
1) 불규칙 용언 유사도를 계산하는 함수는 무엇인가?
2) 가중치 계산을 하는 deep learning 모형은 무엇인가?

이 둘로 나눌 수 있겠습니다.

Intent 결과를 DNN으로 학습시켜 유사 문장들에 있어 가중치 결정을 하도록 하는 전형적인 데이터 마이닝 문제로 돌려볼 수 있겠습니다.

이 API를 만들다가 그만 시간이 지나갔는데... 조만간에 다시 발동을 걸어봐야겠습니다. @.@ 

댓글

이 블로그의 인기 게시물

Bradley-Terry Model: paired comparison models

xlwings tutorial - 데이터 계산하여 붙여 넣기

R에서 csv 파일 읽는 법