Oneulog

컴퓨터 또는 기계는 문자보다는 숫자를 더 잘 처리할 수 있다. 이를 위해 자연어 처리에서는 문자를 숫자로 바꾸는 여러 가지 기법이 있다. 원-핫 인코딩은 그 많은 기법 중에서 단어를 표현하는 가장 기본적인 표현 방법이며, 머신 러닝, 딥러닝을 하기 위해서는 반드시 배워야 하는 표현 방법이다. 단어 집합(Vocabulary) 단어 집합은 서로 다른 단어들의 집합이다. 여기서 혼동이 없도록 서로 다른 단어라는 정의에 대해서 좀 더 주목할 필요가 있다. 단어 집합에서는 기본적으로 book과 books와 같은 단어의 변형 형태도 다른 단어로 간주한다. 원-핫 인코딩이란? 원-핫 인코딩은 단어 집합의 크기를 벡터의 차원으로 하고, 표현하고 싶은 단어의 인덱스에 1의 값을 부여하고, 다른 인덱스에는 0을 부여하는 ..
자연어 처리 과정에서 각 문장의 길이는 서로 다를 수 있다. 하지만 기계는 길이가 전부 동일한 문서들에 대해서는 하나의 행렬로 보고, 한꺼번에 묶어서 처리할 수 있다. 쉽게 말해 병렬 연산을 위해서 여러 문장의 길이를 임의로 동일하게 맞춰주는 작업이 필요할 때가 있다. 이러한 작업은 Numpy로 패딩하는 방법과 Keras 전처리 도구로 패딩하는 방법이 있다. Numpy로 패딩하기 전처리된 데이터 생성 정수 인코딩 챕터에서 Keras를 활용해 수행했던 결과를 가져온다. 1. 전처리 문장 토큰화 : ['A barber is a person.', 'a barber is good person.', 'a barber is huge person.', 'he Knew A Secret!', 'The Secret He ..
컴퓨터는 텍스트보다 숫자를 더 잘 처리할 수 있다. 이를 위해 자연어 처리에서는 텍스트를 숫자로 바꾸는 여러 가지 기법들이 있다. 그리고 그러한 기법들을 본격적으로 적용시키기 위한 첫 단계로 각 단어를 고유한 정수에 맵핑시키는 전처리 작업이 필요할 때가 있다. 정수 인코딩 단어에 정수를 부여하는 방법 중 하나로 단어를 빈도수 순으로 정렬한 단어 집합을 만들고, 빈도수가 높은 순서대로 차례로 낮은 숫자로 정수를 부여하는 방법이다. 이에 정수 인코딩으로 변환하는 방식에는 여러 가지가 있다. raw_text = "A barber is a person. a barber is good person. a barber is huge person. he Knew A Secret! The Secret He Kept is..
불용어 문장에서 대세로 작용하지 않는, 중요도가 낮은 단어를 제거한다. 예를 들면, I, my, me, over, 조사, 접미사 같은 단어들은 문장에서 자주 등장하지만 실제 의미 분석을 하는 데는 거의 기여하는 바가 없는 경우가 있다. 이러한 단어들을 불용어라고 하며, NLTK에서는 위와 같은 100여개 이상의 영어 단어들을 불용어로 패키지 내에서 미리 정의하고 있다. 불용어 제거 방법 1. 불용어(Stopword) 목록을 받아온다. 2. 정제할 문장을 토큰화한다. 3. 토큰화된 각 단어마다: 3-1. 단어가 불용어 목록에 없는 경우 -> 정제 결과에 추가 3-2. 단어가 불용어 목록에 있는 경우 -> Pass 영어 불용어 NLTK에서 불용어 확인하기 불용어 개수 : 179 불용어 10개 출력 : ['i..
정규화 기법 중 코퍼스에 있는 단어의 개수를 줄일 수 있는 기법에는 표제어 추출(Lemmatization)과 어간 추출(Stemming)이 있다. 이 두 기법이 갖고 있는 의미는 눈으로 봤을 때는 서로 다른 단어들이지만, 하나의 단어로 일반화시킬 수 있다면 하나의 단어로 일반화시켜 문서 내의 단어 수를 줄이고자 하는 것이다. 이처럼 자연어 처리에서 정규화의 지향점은 언제나 갖고 있는 코퍼스로부터 복잡성을 줄이는 것이다. 표제어 추출(Lemmatization) 표제어 추출이란 표제어 추출은 단어들로부터 표제어를 찾아가는 과정이다. 단어들이 다른 형태를 가지더라도, 그 뿌리 단어를 찾아가서 단어의 개수를 줄일 수 있는지 판단한다. 이러한 표제어 추출을 하는 가장 섬세한 방법은 단어의 형태학적 파싱을 먼저 진..
정제와 정규화 코퍼스에서 용도에 맞게 토큰을 분류하는 작업을 토큰화(tokenization)이라고 하며, 토큰화 작업 전, 후에는 텍스트 데이터의 용도에 맞게 정제(Cleaning) 및 정규화(Normalization)하는 일이 함께 한다. 정제(Cleaning) : 갖고 있는 코퍼스로부터 노이즈 데이터를 제거한다. 정규화(Normalization) : 표현 방법이 다른 단어들을 통합시켜서 같은 단어로 만들어준다. 1) 대문자 vs 소문자 Language language -> 두 단어는 같은 말이지만 컴퓨터는 가장 앞의 L과 l로 인해 다른 문자로 인식한다. 따라서 같은 문자로 변환해 주어야 한다 US us -> US는 '미국', us는 '우리'라는 뜻을 가지고 있다. 이처럼 대문자를 소문자로 바꾸는 것..
토큰화 주어진 문장에서 "의미 부여"가 가능한 단위를 찾는다. 예 1) Machine / learning / methods / including / ANN / have / been / applied / in / compound / activity / prediction / for / a / long / time. 단어 토큰화(Word Tokenization) 토큰의 기준을 단어(Word)로 하는 경우를 단어 토큰화라고 한다. 다만, 여기서 단어는 단어 단위 외에도 의미를 갖는 문자열로 간주되기도 한다. 이러한 단어 토큰화 작업을 수행할 시 구두점(마침표, 컴마, 세미콜론, 느낌표 등)과 같은 문자는 제외시킨다는 특징이 있다. 입력 : Time is an illusion. Lunchtime double s..
텍스트 전처리 과정 텍스트 전처리 과정은 크게 토큰화, 정제 및 추출, 인코딩으로 나눌 수 있다. 1. 토큰화 주어진 문장을 토큰이라 불리는 단위로 나누는 작업 -> 토큰의 단위가 상황에 따라 다르지만, 보통 의미 있는 단위로 토큰을 정의 -> ex) I / love / you / for / always / Do / n't / be / afraid 2. 정제 및 추출 주어진 문장에서 중요한 단어를 제외하고는 없애는 작업 -> ex) I was wondering if you can help me on this problem. 3. 인코딩 남겨진 단어들을 숫자로 바꾸는 작업 -> 방식에 따라 정수 인코딩, one-hot 인코딩이 있다. -> ex) [1, 5], [1, 3], [1, 2, 5], [1, 0,..
NLP Developer
'NLP' 카테고리의 글 목록 (4 Page)