Oneulog

언어 모델의 전통적인 접근 방법인 통계적 언어 모델이다. 통계적 언어 모델이 통계적인 접근 방법으로 어떻게 언어를 모델링하는지 보자. 통계적 언어 모델(Statistical Language Model)은 줄여서 SLM이라고도 한다. 조건부 확률 조건부 확률은 두 확률 P(A), P(B)에 대해서 아래와 같은 관계를 가진다. 더 많은 확률에 대해서 일반화해보자. 4개의 확률이 조건부 확률의 관계를 가질 때, 아래와 같이 표현할 수 있다. 이를 조건부 확률의 연쇄 법칙이라고 한다. 이제는 4개가 아닌 n개에 대해서 일반화를 해 보자. 이처럼 조건부 확률에 대한 정의를 통해 문장의 확률을 구해보자. 문장에 대한 확률 문장 'An adorable little boy is spreading smiles'의 확률 ..
통계 기반의 언어 모델 언어 모델은 단어 시퀀스에 확률을 할당하는 일을 하는 모델이다. 이를 조금 풀어서 쓰면, 언어 모델은 가장 자연스러운 단어 시퀀스를 찾아내는 모델이다. 단어 시퀀스에 확률을 할당하게 하기 위해서 가장 보편적으로 사용되는 방법은 언어 모델이 이전 단어들이 주어졌을 때 다음 단어를 예측하도록 하는 것이다. 단어 시퀀스의 확률 할당 자연어 처리에서 단어 시퀀스에 확률을 할당하는 일이 왜 필요할까? 예를 들어보자. 기계 번역(Machine Translation) P(나는 버스를 탔다) > P(나는 버스를 태운다) 언어 모델은 두 문장을 비교하여 좌측의 문장의 확률이 더 높다고 판단한다. 오타 교정(Spell Correlation) 선생님이 교실로 부리나케 P(달려갔다) > P(잘려갔다) ..
컴퓨터 또는 기계는 문자보다는 숫자를 더 잘 처리할 수 있다. 이를 위해 자연어 처리에서는 문자를 숫자로 바꾸는 여러 가지 기법이 있다. 원-핫 인코딩은 그 많은 기법 중에서 단어를 표현하는 가장 기본적인 표현 방법이며, 머신 러닝, 딥러닝을 하기 위해서는 반드시 배워야 하는 표현 방법이다. 단어 집합(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는 '우리'라는 뜻을 가지고 있다. 이처럼 대문자를 소문자로 바꾸는 것..
NLP Developer
'NLP/딥러닝을 이용한 자연어 처리 입문' 카테고리의 글 목록 (3 Page)