데이터 사이언스/자연어 처리

2. 자연어처리 - 토큰화, 벡터화, TF-IDF

내일의승기 2022. 6. 29. 16:22

자연어 처리를 위한 전처리 과정은, 일반적인 데이터 형식에서 쓰이는 정수, 실수, 문자열의 전처리 과정과 차이가 있다.

 

정수, 실수로 이루어져있는 데이터프레임을 다룬다고 하면, 보통 결측값을 채워주고, 정규화 혹은 표준화를 하고,

그 외에 특성 공학을 이용하여 차원을 확장하거나 축소할 것이다. 문자열이라면 원 핫 인코딩을,

범주형 데이터라면 ordinal 인코딩을 또 할 수 있을 것이다.

 

자연어는 다르다. 문장으로 이루어진 데이터를 처리하기 위해서는, 각 단어들을 벡터 공간 안에 할당해야 한다.

그렇다고 해서, '나는 자연어 처리를 하고 있습니다.' 라는 문장을

['나는', '자연어', '처리를', '하고', '있습니다']와 같이 할당해서는 안되는데,

내가 이해한 바로는 그 이유는 두 가지가 있다.

 

첫째로, 형태소 분리 작업이 안되어있기 때문이다.

'나는 자연어 처리를 공부하고 있습니다.' 라는 문장과, '자연어 처리는 어렵습니다.' 라는 문장이 있다고 해보자.

다짜고짜 어절 단위로 끊었다가는,

['나는', '자연어', '처리를', '하고', '있습니다']['자연어', '처리는', '어렵습니다'] 두 문장으로 나누어질텐데,

그렇다면 두 문장에서 '처리'라는 말은 같은 의미로 쓰이고 있음에도 불구하고

컴퓨터는 '처리를''처리는' 이라는 서로 다른 의미로 인식하게 되기 때문이다.

 

둘째로, 컴퓨터는 문자열에 대한 수학적 연산을 수행하지 못한다.

사람과 같이, 문자를 있는 그대로 받아들일 수 없으므로, 컴퓨터가 읽을 수 있는 숫자형으로 바꿔주어야 한다.

 

이에, 위 두 문제를 해결하기 위하여 토큰화벡터화 작업이 필요하다.

 

하지만, 토큰화 이전에 kospacing, hanspell 등의 패키지를 통해 맞춤법을 수정함으로써

토큰화가 더욱 잘 이루어질 수 있도록 처리를 해놓아야 한다.

토큰화

 

토큰화란, 단어를 형태소 단위로 끊어 각각의 결과물을 배열 내에 할당하는 것을 의미한다.

이러한 토큰화를 지원하는 패키지가 파이썬의 KoNLPy이다.

그리고 그 KoNLPy내의 (다만 별도로 pip install을 해야한다) mecab, 한나눔, okt, 코모란 등을 통해

토큰화를 할 수 있다.

각각의 모듈들은 서로 기능과 장단점이 다르므로, 각자의 필요에 맞게, 혹은 직접 써보고 가장 성능이 우수한 것으로

판단되는 것을 사용하면 된다.

 

이러한 토큰화를 통해 문장을 형태소 단위로 추출할 수 있지만, 명사 단위로도 추출이 가능하다.

 

나아가 토큰화 작업은 n-gram, 즉 연속한 n개의 단어들을 한 쌍으로 묶어서도 이루어 질 수 있다.

 

벡터화

 

토큰화를 하였다면, 이후에는 벡터화를 진행해야 한다. 당장 지금의 형태만으로는 수학적으로 사용할 여지가 적기 때문이다.

단순히 정수형으로 바꾼다고 하면, tensorflow 내의 keras를 이용하여 총 단어 갯수만큼의 인덱스에 각각의 단어를 할당하는 방법도 있다.

하지만, 이는 단지 정수로 되어있는 명목 변수로 바꾸는 것에 지나지 않는다.

겉보기에는 숫자로 되어있지만, 여전히 어떠한 연산을 통하여 프로그래밍적인 의미를 갖게 하기는 어렵다.

 

이 문제를 해결하기 위해 필요한 개념이 TF-IDF이다.

 

TF-IDF(Term Frequency - Inverse Documents Frequency)

 

TF-IDF란 용어 빈도에 역문서 빈도를 곱한 값을 의미한다.

특정 단어의 문서 내 중요도를 파악하는 작업이다.

TF는 용어의 사용 빈도를 의미한다. 의미 파악이 어렵지 않다.

반면 IDF는 다소 생경하게 느껴질 수 있는데,

'파이썬으로 배우는 자연어처리 인 액션' 책에 의하면,

IDF가 이해되지 않는다면 '이 토큰이 이 문서에 등장한다는 것이 얼마나 이상한 일인가?' 라는 관점에서 생각해 보라 말한다.

특정 용어가 이상하게 한 문서에만 자주 등장하고 나머지 문서에는 거의 안나온다면, 그 용어는 그 문서에서 아주 중요한 단어일 것이다.

 

이런게 구해진 TF-IDF 값은, 그 결과의 적합성을 개선하기 위해 여러 정규화 방식으로 다시 처리될 수 있다.

그 중 대표적인 것이 Okapi BM25이다.

'데이터 사이언스 > 자연어 처리' 카테고리의 다른 글

1. 자연어처리(NLP) 입문하기  (0) 2022.06.28