brunch

You can make anything
by writing

C.S.Lewis

by 알바트로스 Jan 13. 2024

텍스트의 핵심만 뽑아내는 텍스트 전처리 기법들

텍스트 전처리에는 어떤 기법들이 있을까?

지금까지 자연어를 구성하는 텍스트 데이터를 숫자로 된 벡터로 변환하여 컴퓨터가 인식할 수 있도록 해주는 다양한 기법들에 대해 배워보았습니다. 그런데 단순히 텍스트로 된 데이터를 숫자로 된 행렬로 바꾸어 주었다고 해서 컴퓨터가 자연어를 잘 인식하고 이해할 수 있는 것은 아닙니다. 바로 텍스트 데이터 곳곳에 숨어있는 불순물들 때문입니다. 우리에게는 아직 '텍스트 전처리'를 통해 불순물을 제거하는 과정들이 남아있습니다.


이처럼 언어모델이 좋은 성능을 내기 위해서는 좋은 품질의 데이터를 입력하는 것이 가장 중요합니다. 실제로 현업에서 기계학습 모델 개발 프로젝트를 진행하다 보면 좋은 훈련 데이터를 확보하는 것이 프로젝트의 90% 이상을 차지한다고 해도 과언이 아닙니다. 최근 인공지능 분야에서 가장 영향력 있는 인물 중 한명인 컴퓨터 과학자 앤드류 응(Andrew Ng) 교수는 데이터 중심 인공지능이라는 개념을 제창하며 좋은 인공지능 알고리즘을 만드는 것 보다 좋은 데이터를 확보하는 것이 훨씬 중요하다고 말합니다.


그렇다면 좋은 데이터란 무엇일까요? 일단 정확해야 합니다. 또한 통계학적으로 일정한 분포를 띄며 형식이 통일되어 일관성이 있어야 합니다. 무엇보다 불순물 즉 필요 없는 데이터가 섞여있지 않은 데이터가 좋은 데이터라고 할 수 있지요.  자연어처리에 사용되는 텍스트 데이터 역시 마찬가지입니다. 텍스트 전처리는 언어모델의 성능을 향상시키고, 데이터를 효과적으로 처리하기 위해 텍스트 데이터를 사전에 정제하고 가공하여 좋은 데이터를 확보하기 위한 필수 과정이라고 할 수 있습니다. 


전처리과정


1. 텍스트 정규화(normalization)


출처 : Developia


영어로 된 텍스트 데이터를 사용하는 경우 모든 텍스트를 소문자로 변환하여 대소문자의 구분을 없애는 전처리 과정이 필요합니다. 이렇게 함으로써 언어모델은 "apple"과 "Apple"을 같은 단어로 인식할 수 있게 되며, 텍스트 데이터의 일관성을 유지할 수 있게 됩니다.


2. 특수 문자 제거


마찬가지로 데이터의 일관성을 유지하기 위해 텍스트에서 불필요한 특수 문자를 제거합니다. 문장 부호, 불필요한 구두점, 해시태그(#), 멘션(@) 등을 포함하는데, 이렇게 함으로써 언어모델은 방해받지 않고 온전히 텍스트 데이터에만 집중할 수 있게 됩니다.


3. 토큰화


출처 : Medium

텍스트를 토큰(token) 단위로 분리합니다. 토큰이란 의미를 가지는 최소한의 단위로, 주로 단어 단위로 토큰화를 수행합니다. 예를 들어, "I love NLP!"라는 문장은 ["I", "love", "NLP", "!"]와 같은 토큰으로 분리될 수 있습니다. 비슷한 개념으로 한국어에는 형태소라는 개념이 있는데, 의미를 가지는 요소로서는 더 이상 분석할 수 없는 가장 작은 말의 단위로 정의됩니다. 예를 들어 “나는 너를 사랑해’라는 문장은 [‘나’, ’는’, ’너’, ’를’, ’사랑해’]라는 형태소들로 나눌 수 있습니다. 이렇게 문장을 최소한의 의미단어로 쪼갬으로써 언어모델은 단어의 의미를 더욱 명확하게 인식할 수 있습니다. 


4. 불용어(stop words) 제거


출처 : Adrian Dolinary

불용어는 자주 등장하지만 문맥적으로 큰 의미가 없는 단어들을 말합니다. 예를 들어, 영어의 "the", "and", "is" 등이 불용어에 해당합니다. 한국어 불용어로는 “네”, “어”, ”음”과 같이 대화 데이터에서 습관적으로 사용하는 단어를 들 수 있습니다. 이러한 단어들을 제거해 줌으로써 언어모델의 처리 성능을 개선할 수 있습니다.


5. 어간추출(stemming) 또는 표제어 추출(lemmatization)


stemming vs lemmatization(출처 : Medium)

 

어간 추출은 단어에서 접사를 제거하여 단어의 기본 형태를 찾아내는 작업을 말합니다다. 예를 들어, "running"에서 가장 핵심만 되는 "run"만을 추출하는 것과 같습니다. 비슷한 개념인 표제어 추출은 사전에 기반하여 단어를 원형으로 변환하는 작업이다. 예를 들어, "better"를 "good"으로 변환하는 작업을 말한다. 보통 어간추출보다는 표제어추출이 단어의 원형을 더욱 잘 표현하므로 더 나은 성능을 기대할 수 있는 것으로 알려져 있다.

이전 17화 컴퓨터는 어떻게 인간의 언어를 인식할까?(3)
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari