교재링크(광고 아님): freelec.co.kr/book/인공지능을-위한-수학/

 

 

형태소(morpheme)

가장 작은 말의 단위로 하나 이상의 형태소가 모여 단어(word)나 문장(sentence)이 된다. 가장 작은 단위이므로 품사(part)보다도 작은 단위다.

 

형태소 분석(morphology analysis)

문장을 형태소로 분해하는 과정을 말한다. 품사 분류까지도 수행한다. 예를 들어 보면 아래와 같다.

문장 할아버지가 방에 들어가신다.
분석 할아버지/가/ 방/에/ 들어/가신다.

그런데, 교재에 따르면 동양권의 언어들이 서양권과 달리 형태소 분석이 상당히 난해하다고 한다. 위의 예에서 아래처럼 잘못 분석도 가능하다.

오류 할아버지/가방/에/ 들어/가신다.

(극단적인 예지만)동양권 언어들은 이 때문에 서양권에 비해 자연어 처리가 훨씬 까다롭다고 한다.

여담으로, 이 과정은 컴파일러(compiler)의 어휘분석(lexical analysis 또는 scanning) 과정과 비슷해 보인다. 이후의 단계들 역시 컴파일러와 비슷한 일을 하는 것으로 보이는데, 이에 대해 차후 별도 포스팅을 할까 한다.

 

구문 분석(syntax analysis)

형태소들 간의 의미 있는 관계를 분석하는 과정. 이 부분은 컴파일러의 그것과 하는 일이 유사하며 용어마저 동일하다. 그도 그럴 것이 컴파일러 역시 자연어 처리 분야를 기반으로 하여 만들어진 도구이기 때문이다.

구문 분석 단계에서는 형태소끼리 묶어가면서 트리 형태로 그래프를 만든다. 위의 형태소 분석 예를 이용하여 1단계만 묶어보면,

명사구 할아버지/가
명사구 방/에
동사구 들어/가신다

이런 식으로 묶을 수 있을 것이다. 그리고, 이 결과를 가지고 또 한단계 묶는 것을 반복하여 더이상 묶을 수 없게 되면 분석이 끝난 것이다.

 

의미 문석(semantic analysis)

구문 분석 결과를 토대로 의미를 분석하는 단계이며 마지막 단계인데, 사실 상 가장 구현하기 어려운 과정이라고 한다. 왜 가장 어려운지는 굳이 설명이나 증명은 필요 없어 보일만큼 참 막막한 단계다. 교재에서는 우선 구문 분석 결과를 토대로 벡터를 만들어서 갖가지 벡터 연산을 통해 처리하는 해법을 제시하였다. 이를 벡터 공간 분석이라고 표기하였는데, 구글에서 아무리 찾아봐도 안나오는 걸 보아 오기(誤記)일 수 있겠고, 아래에 설명할 명칭이 명확한 것 같다.

 

벡터 공간 모델(vector space model)

자연어를 처리함에 있어 벡터를 활용하여 대수적으로 해결하는 모델이란고 한다. 코사인 유사도(cosine similarity)를 이용한 TF-IDF 방식이 유명하다고 한다. 참고로, 코사인 유사도는 아래를 참고하시면 좋다.

 

3장 선형대수(7~8절) - 기본편 - 인공지능을 위한 수학

교재링크(광고 아님): freelec.co.kr/book/인공지능을-위한-수학/ 3-7 벡터의 노름 3-8 코사인 유사도 3-7 벡터의 노름 L1 노름(L1 norm) : 벡터의 모든 성분의 절대값을 합한 값. $$ x = (x_1, x_2, ... , x_n)..

swjman.tistory.com

 

TF-IDF(Term Frequency - Inverse Document Frequency)

어떤 문서들에 대해 어떤 단어가 제일 중요한지를 통계적 데이터화 해 놓는 기법을 뜻한다. 코사인 유사도를 통해 빌딩하는 것 같은데, 나중에 기회가 되면 짚어 보겠다.  ...였는데, 7절에 내용이 이미 있었다. 이제 공부만 하면 되겠네.

 

N-gram 분석

문장을 분해할 때 사전에 딱 들어맞게 분해하는데 한계가 있어, 차라리 특정한 규칙으로 의미없이 분해하는 기법. 예를 들어, 3-gram이라면 아래와 같이 분해된다.

문장 할아버지가 방에 들어가신다.
3-gram(음절단위, syllable unit) 할아버/아버지/버지가/지가□/가□방/□방에/...
3-gram(어절단위, word phrase unit) /할아버지가 방에 들어가신다./

뭔가 단무지스러운데... NLP에서 얼마나 활용되는지는 더 살펴봐야겠다.

교재에서는 '분석'(analysis)이라고 표기하였으나, 그보다는 '추출'(extract)이 많이 검색된다. 분석은 어떤 데이터를 해석하여 정보를 만드는 것이고, 추출은 새롭게 가공된 데이터가 산출되는 것이므로, 아무래도 practical한 문서들이 더 검색 되는 것 같다.

 

 

Posted by JMAN