데이터로 Deep Dive

데이터 분석과 개발 경험을 공유합니다.

nlp 4

자연어 숫자로 표현하기 - 정수 인코딩과 패딩(제로 패딩)

정수 인코딩이란? 전처리된 텍스트 데이터를 컴퓨터가 분석에 활용할 수 있게 하려면 숫자 데이터로 변환해야 한다. 이를 위한 여러 방법이 있는데, 대표적으로 정수 인코딩이 있다. 정수 인코딩은 토큰화된 각 단어에 특정 정수를 맵핑하여 고유 번호로 사용하는 방법이다. 단어 토큰에 정수 인덱스를 부여하는 방법은 다양한데, 그 중 가장 일반적인 방법은 단어의 등장 빈도를 기준으로 정렬한 다음 인덱스를 부여하는 방식이다.  정수 인코딩 하기더보기정수 인코딩을 하면 더 이상 추가적인 전처리를 할 수 없다. 때문에 모든 전처리 과정이 끝난 코퍼스를 가지고 정수 인코딩을 해야 한다. import nltkfrom nltk.tokenize import word_tokenizefrom nltk.tokenize import ..

문장 단위 - 자연어 전처리(문장 토큰화, 품사 태깅, 표제어 추출)

문장 토큰화(Sentence Tokenization)경우에 따라 코퍼스를 문장 단위로 토큰화한 다음에 문장의 의미를 살려서 분석을 해야 하는 경우가 있다. 대표적으로 '품사 태깅'이 그러한 경우인데, 어떠한 단어의 품사는 그 단어 자체의 의미와 함께 문장 안에서 사용된 위치에 따라 달라질 수 있다. 이런 경우에는 문장 간의 구분이 된 상태에서 단어의 품사를 정해야 하기 때문에 문장 단위로 먼저 토큰화한 후에 품사를 구분해야 한다.  예시 - sent_tokenize()더보기 punkt 모듈을 설치하면 마침표나 약어(Mr. , Dr.)와 같은 언어적인 특성을 고려해서 문장 토큰화가 되기 때문에 단순히 마침표가 있는 곳을 문장으로 나누는 것이 아니라 실제 문장을 잘 구분해 준다. # 필요한 패키지와 함수 불..

단어 단위 - 자연어 전처리(정제, 불용어, 정규화, 어간 추출)

자연어 전처리란?자연어 데이터를 사용할 때, 전처리를 어떻게 하냐에 따라 분석 결과가 크게 달라진다. 예를 들어, 'Oh, Hi helo. Nice to meetyou.' 문장에서 맞춤법과 띄어쓰기 수정, 그리고 의미 표현에 크게 기여하지 않는 'Oh' 제거, 중첩된 유의어 제거(Hi, Hello), 각 단어에 숫자 인덱스 부여 등의 작업을 거치고나면 {'Hi':0, 'Nice':1, 'to':2, 'meet':3, 'you':4} 와 같이 분석에 활용하기 좋은 형태가 된다. 이러한 과정을 자연어 전처리라고 한다.  자연어 전처리 과정토큰화: 자연어 데이터를 분석을 위한 작은 단위(토큰)로 분리한다.정제: 분석에 큰 의미가 없는 데이터들을 제거한다.정규화: 표현 방법이 다르지만 의미가 같은 단어들을 통..

자연어 처리(NLP)와 한국어 자연어 처리의 어려움

자연어 처리란?언어는 크게 인공어와 자연어로 나눌 수 있다.인공어는 정보 전달을 위해 인위적으로 만들어진 언어로, 대표적으로 사람과 컴퓨터의 소통을 위해 만들어진 프로그래밍 언어가 있다. 반대로 사람들의 일상 생활에서 자연 발생된 언어를 자연어라고 한다. 자연어에는 다양한 정보들이 담겨져 있으나 컴퓨터는 인공어로만 소통하므로 자연어를 다루려면 별도의 처리 과정이 필요하다. 그 과정을 자연어 처리(NLP: Natural Language Processing)이라고 한다.  자연어 처리 하위 분야에는 자연어 이해(NLU: Natural Language Understanding)와 자연어 생성(NLG: Natural Language Generation)이 있다. 자연어 처리 방법규칙 기반 접근법(Rule Bas..