자연어 처리 전체적인 과정이 어떻게 이루어질까요? 이 글은 우리가 알고 있는 자연어 처리 알고리즘에 들어가기 전에 어떤 과정으로 자연어 처리가 이루어지는지 알아보도록 하겠습니다. 그리고 임베딩 과정인 n-gram에 대해서도 간략하게 설명해 보도록 하겠습니다.
자연어 처리 과정
1. 코퍼스(Corpus)
- 모델 생성에 필요한 텍스트 데이터셋인 Corpus를 구성, 이는 거대언어모델(Large Language Model, LLM) 에서 방대한 데이터가 되는 원천 데이터입니다.
2. 텍스트 전처리
- 텍스트 데이터에서 불필요한 부분을 제거하고, 의미 단위로 구분하는 처리 과정(Text Preprocessing)을 진행합니다. 이때, 토큰화, 정규화, 필터링 등의 작업을 합니다.
3. 임베딩
- 컴퓨터가 처리할 수 있도록 비정형 텍스트 데이터를 정형화하는 과정(Text Embedding)입니다. Bag of words, TF/IDF, n-gram, Word2vec 등이 있습니다.
4. 모델
- 임베딩된 데이터를 넣어서 유사문서를 분류한다거나, 번역 등의 처리를 할 수 있게 적용하는 부분입니다.
n-gram
n-gram 모델은 발생 빈도를 사용하여 시퀀스의 후속 항목 가능성을 예측하는 통계적 언어 모델입니다.
이 모델은 n-gram 독립성 가정을 기반으로 합니다. 즉, 항목의 확률은 이전 n-1 항목에만 의존한다는 의미입니다.
예를 들어 바이그램 모델은 앞 단어를 기준으로 단어의 확률을 예측하는 반면, 트라이그램 모델은 앞의 두 단어를 기준으로 예측합니다.
그렇다면 n-gram이 나오기 전에는 어떻게 했을까요? 그 전에 Bag of words라는 방법을 사용했습니다. BOW(Bag of words)라고 줄어서 말하는데요. BOW는 단어에 인덱스를 부여하여 단지 등장횟수를 기록하여 벡터화하는 방법입니다. 그런 이유로, 단어 출현 순서인 문맥이 무시되는 문제가 있습니다.
BOW를 조금 더 개선하여 단어 하나만을 보는 것이 아니라 주변의 n개 단어를 뭉쳐서 보자는 아이디어가 나옵니다. 뭉쳐진 n개의 단어들을 바로 gram이라고 합니다. 1개의 단어는 uni-gram, 2개의 단어를 묶어서 사용하면 bi-gram, 3개면 tri-gram이라고 부름, 나머지는 n-gram이라 합니다.
모델명 | 설명 | 예시 |
유니그램(1-gram) | 유니그램은 n이 1인 n-그램입니다. 즉, 텍스트의 단일 항목(일반적으로 단어)으로 구성 | "The cat sat on the mat"라는 문장에서 각 단어("The", "cat", "sat", "on", "the", "mat")는 유니그램을 나타냅니다. |
바이그램(2-gram) | 바이그램은 n이 2인 n-그램입니다. 이는 텍스트에서 인접한 항목의 쌍으로 구성 | 동일한 예문을 사용하면 바이그램은 ("The cat", "cat sat", "sat on", "on the", "the mat")이 됩니다. |
트라이그램(3-gram) | 트라이그램은 n이 3인 n-그램입니다. 이는 텍스트에서 세 개의 연속 항목으로 만든 시퀀스로 구성 | 트라이그램은 ("The cat sat", "cat sat on", "sat on the", "on the mat")이 됩니다. |
n-gram은 주어진 텍스트 또는 음성 샘플에서 n개 항목의 연속 시퀀스입니다. 이러한 항목은 음소, 음절, 문자, 단어 또는 기호일 수도 있습니다. n-gram은 언어의 문맥 정보와 통계적 속성을 캡처하기 위해 다양한 자연어 처리(NLP) 작업에 사용됩니다.
동작 방식
- 다음에 나올 단어의 예측은 오직 n-1개의 단어에만 의존합니다. 예를 들어 'The cat sat on the mat' 다음에 나올 단어를 예측하는 방식입니다.
- n=4라고 한 4-gram을 이용한 언어 모델을 사용하는 경우 mat 다음에 올 단어를 예측하는 방법은 n-1에 해당되는 앞의 3개의 단어만을 고려해서 진행합니다. 그 이전 단어는 무시됩니다.
한계점
1. 희소 문제(Sparsity Problem)
- 문장 앞에 나오는 단어를 모두 보는 것보다 일부 단어만 보는 것이 확률을 높다고 볼 수 있습니다. 왜냐하면, 전체에서 문장 내 단어를 찾는 언어 모델과 비교해 보면 n-gram 모델은 일부 단어만 고려하기에 전체에서 특정 단어의 발생 확률은 높일 수 있죠. 하지만 전체에서 n개의 단어가 연속적으로 있는 문장 자체 개수가 드물어서 여전히 희소 문제가 존재합니다.
2. n 선택 Trade-off 문제
- n을 작게하면 Corpus에 단어를 세는 것은 잘되지만 근사(의미의 유사함)의 정도는 떨어집니다. 그렇다고 무한정 높이면 정확도가 떨어집니다. 그래서 정확도를 높이려면 n은 최대 5를 넘지 말라고 권장하고 있습니다. 결국 적용 분야(Domain)에 맞는 코퍼스(Corpus) 수집이 중요하며 성능이 비약적으로 달라집니다.
전반적으로 n-그램은 NLP에서 하나의 도구입니다. 언어의 구조와 패턴에 대한 통찰력을 제공하고 많은 언어 처리 작업 및 모델을 위한 기초 작업에 해당됩니다.
'딥러닝' 카테고리의 다른 글
통계 기반 기법 vs 추론 기반 기법의 차이점 (0) | 2024.03.22 |
---|---|
통계 기반 언어 모델 특징 및 한계점(feat. 시소러스, WordNet) (1) | 2024.03.18 |
자연어 처리(NLP) 역사 및 동향 (1) | 2024.03.12 |
Xception 구조 및 특징 (0) | 2024.03.11 |
Residual Network(ResNet) 아이디어: skip connect (0) | 2024.03.11 |