David의 개발 이야기!

NLP 에 대해 알아보자 (1) - 시소러스를 활용한 기법, 통계 기반 기법 본문

밑바닥부터 시작하는 딥러닝

NLP 에 대해 알아보자 (1) - 시소러스를 활용한 기법, 통계 기반 기법

david.kim2028 2022. 5. 19. 03:16
반응형

1. 자연어 처리란? 

한국어나, 영어처럼 우리가 평소에 쓰는 말을 자연어(natural language) 라고 한다. 자연어 처리(Natural Language Processing)는 자연어를 처리하는 분야이고, 즉, 자연어 처리가 추구하는 목표는 "사람의 말을 컴퓨터가 이해하도록 만들어서, 컴퓨터가 우리에게 도움이 되는 일을 수행하게 하는 것"이다. 

 

2. 시소러스를 활용한 기법

시소러스란 유의어 사전으로, '뜻이 같은 단어(동의어)', 나 ' 뜻이 비슷한 단어(유의어)'가 한 그룹으로 분류되어 있다. 또한, 시소러스에서는 단어 사이의 '상위와 하위' 혹은 '전체와 부분' 등 더 세세한 관계까지 정의해둔 경우가 있다. "car"의 상위 개념으로 "motor vehicle"이라는 단어가 존재한다. 한편 "car"의 하위 개념으로는 "SUV(스포츠 유틸리티 자동차)", "compact", "hatch-back"등 구체적인 차종이 있음을 알려준다. 

 

 

이처럼 모든 단어에 대한 유의어 집합을 만든 다음, 단어들의 관계를 그래프로 표현하여 단어 사이의 연결을 정의할 수 있다. 그러면 이 '단어 네트워크'를 이용하여 컴퓨터에게 단어 사이의 관계를 가르칠 수 있다. 

 

3. WordNet 

자연어처리분야에서는 가장 유명한 시소러스는 WordNet 이다. WordNet 을 사용하면 유의어를 얻거나, '단어 네트워크'를 이용할 수 있다. 또한 단어 네트워크를 사용해 단어 사이의 유사도를 구할 수 있다. 

 

 

 

4. 시소러스의 문제점 

WordNet 과 같은 시소러스에는 수많은 단어에 대한 동의어와 계층 구조 등의 관계가 정의돼 있다. 그리고 이 지식을 이용하면 '단어의 의미'를 간접적으로라도 컴퓨터에 전달 수 있다. 하지만, 이 처럼 수작업으로 레이블링하는 방식에는 크나큰 결점이 다음과 같이 존재한다.

 

- 시대 변화에 대응하기 어렵다. 

- 사람을 쓰는 비용은 크다 

- 단어의 미묘한 차이를 표현할 수 없다. == 편향된 데이터가 들어갈 수 있다. 

 

자연어 처리뿐 아니라, 이미지 인식에서도 특징feature을 사람이 수동으로 설계하는 일이 오랜 세월 계속됐다. 그러다가 딥러닝이 실용화되면서 실생활 이미지로부터 원하는 결과를 곧바로 얻을 수 있게 됐다. 사람이 개입할 필요가 현격히 줄어든 것이다. 자연어 처리에서도 똑같은 일이 벌어지고 있다. 즉, 사람이 수작업으로 시소러스나 관계(특징)을 설계하던 방식으로든 사람의 개입을 최소로 줄이고 텍스트 데이터만으로 원하는 결과를 얻어내는 방향으로 패러다임이 바뀌고 있다. 

 

5. 통계 기반 기법  Statical - based Techniques 

Corpus 란 대량의 텍스트 데이터다. 맹목적으로 수집된 텍스트 데이터가 아닌 자연어 처리 연구나, 애플리케이션을 염두에 두고 수집된 텍스트 데이터를 일반적으로 '말뭉치'라고 한다.

 

결국, 말뭉치란 텍스트 데이터에 지나지 않지만, 그 안에 담긴 문장들은 사람이 쓴 글이다. 다른 시각에서 생각해보면, 말뭉치에는 자연어 대한 사람의 '지식'이 담겨있다. 문장을 쓰는 방법, 단어를 선택하는 방법, 단어의 의미 등 사람이 알고 있는 자연어 대한 지식이 포함되어 있다. 통계기반 기법의 '목표'는 이처럼 사람의 지식으로 가득한 말뭉치에서 자동으로, 그리고 효율적으로 그 핵심을 추출하는 것이다. 

 

-> 자연어 처리에 사용되는 말뭉치에는 텍스트 데이터에 대한 추가 정보가 포함되는 경우가 있다. 예를들어, 텍스트 데이터의 단어 각각에 '품사'가 레이블링 될 수 있다. 이럴 경우, 말뭉치는 컴퓨터가 다루기 쉬운 형태로 가공되는 경우가 일반적이다. 

 

 

 

6. 파이썬으로 말뭉치 전처리하기 

 

Preprocessing 이란?

-> 텍스트 데이터(말뭉치)에 전처리를 하는 것을 뜻하며, 여기서 전처리란 텍스트 데이터를 단어로 분할하고 그 분할된 단어들을 단어 ID 목록으로 변환하는 일이다. 

 

 

반응형
Comments