자연어 처리(NLP : Natural Language Processing)

신동혁·2022년 12월 15일
0

참조 링크 : https://www.hanbit.co.kr/media/channel/view.html?cms_code=CMS7896967259

1.자연어 처리란?

자연어 처리(NLP : Natural Language Processing)는 우리가 사용하는 일반적인 언어를 분석하고 다루는 작업을 의미한다. 인간들이 사용하는 언어를 컴퓨터가 이해하는 작업이라고 생각하면 쉽다. 자연어 처리는 크게 두 작업이 존재한다.

  1. 이해(understanding)
  2. 생성(generation)

1) 이해

영어를 배울 때 먼저 명사, 동사, 형용사가 무엇인지 배운다. 컴퓨터도 마찬가지이다. 컴퓨터는 문장을 이해하기 위해 먼저 문장을 여러 단어들로 쪼개서 각각의 단어가 명사인지 동사인지 등을 구분하고 파악한다. 해당 작업이 이해 작업이다.

2) 생성

이해를 통해 의미를 파악한 단어들을 연결함으로써 새로운 문장을 만들어내는 작업이다.

2.자연어 처리 4가지 단계

자연어 처리 솔루션을 만들기 위한 방법은 다양하게 존재하지만 보통은 아래의 4가지 단계를 거친다.

  1. preprocessing
  2. tokenization
  3. token embedding
  4. document embedding

1) Preprocessing

자연어를 기계가 학습하기 좋게 전처리하는 과정이 필요하다. 예를 들어 do not과 don't는 같은 말이므로 동일하게 처리해주어야 하고 for, to, the 같은 말은 특별한 의미가 없으므로 중요하지 않게 처리해주는 작업도 필요하다. 이런식으로 기계가 학습할 자연어 데이터에 일상적이고 의미있는 단어들만 남도록 전처리를 해준다.

2) Tokenization

자연어(string)를 다차원 벡터(vector)로 변환하기 위해 먼저 토큰 단위로 잘라주는 작업을 Tokenization이라고 한다. 토큰으로 변환하는 기준은 여러가지다. 영어는 띄어쓰기를 기준으로 토큰화할 수 있을 것이다. 한국어는 형태소(morpheme)를 이용한 토큰화를 할 수 있을 것이다. 아래 예제를 통해 확인해본다.

ex)

  • Lorem ipsum dolor sit amet.
    : Lorem, ipsum, dolor, sit, amet
  • 대한민국은 민주공화국이다.
    : 대한민국 + -은 + 민주공화국 + -이 + -다

3) Token Embedding

말뭉치(corpus)의 여러 단어들을 각각 토큰으로 나누고 벡터로 변환하여 저장하는 곳을 임베딩(embedding)이라고 부른다. 변환된 토큰들을 벡터로 변환해 임베딩 공간에 넣어주는 작업을 Token Embedding이라고 한다. 이때 One-hot encoding을 통해 각각의 토큰들을 벡터로 변환하는데, 원래 원핫인코딩은 index(순서)에 관한 정보가 의미가 없지만 Tokenization과 one-hot encoding 과정에 토큰의 순서를 따로 정해서 유사한 의미를 가지는 토큰끼리는 가까인 위치하고 관련 없는 토큰끼리는 멀리 위치하게 하여 의미를 부여할 수도 있다. 토큰의 의미 유사도를 측정하는 방법으로는 여러 알고리즘이 존재한다.

4) Document Embedding

위 작업들이 모두 끝났을 때 해당 문장이 긍정적인 내용인지 부정적인 내용인지를 구분하고 싶다고 가정한다. 그러면 해당 토큰들의 임베딩을 모두 더해 평균치를 구해보면 된다. 평균치가 긍정적인 의미를 가진 토큰들과 가까운지 부정적인 의미를 가진 토큰들과 가까운지 체크하면 될 것이다.

하지만 이렇게 간단하게만 문제가 해결되지는 않는다. 대표적인 예가 동음이의어다.

1) 밥을 많이 먹어 배가 부르다.
2) 사과보다 배가 더 시원하다.

1에서의 ‘배’와 2에서의 ‘배’ 모두 동일한 형태를 가지지만 서로 다른 의미를 가지고 있습니다. 1번에서의 ‘배’가 과일이 아닌 신체 부위를 뜻한다는 것을 알기 위해서는 ‘밥’, ‘먹-‘ 등의 형태소가 같은 문장 내에 위치한다는 것을 알아야 합니다.

또한 사전적 의미와 문맥적 의미가 다른 경우도 해석에 유의해야 한다.

임베딩이 완료되면 머신러닝 또는 딥러닝 알고리즘을 이용해 해당 데이터를 학습하면 된다.

profile
개발취준생

0개의 댓글