본문 바로가기

딥러닝/[딥 러닝을 이용한 자연어 처리 입문]딥러닝

(19)
문서 단어 행렬(Document-Term Matrix, DTM) DTM : 서로 다른 문서들의 BoW들을 결합한 표현 방법인 문서 단어 행렬(Document-Term Matrix, DTM) 표현 방법. 행과 열을 반대로 선택하면 TDM. 서로 다른 문서들을 비교할 수 있게 됩니다. 1. 문서 단어 행렬(Document-Term Matrix, DTM)의 표기법 문서 단어 행렬(Document-Term Matrix, DTM)이란 다수의 문서에서 등장하는 각 단어들의 빈도를 행렬로 표현한 것. BoW 표현을 다수의 문서에 대해서 행렬로 표현하고 부르는 용어로, 각 문서에서 등장한 단어의 빈도를 행렬의 값으로 표기합니다. 문서 단어 행렬은 문서들을 서로 비교할 수 있도록 수치화할 수 있다 2. 문서 단어 행렬(Document-Term Matrix)의 한계 1) 희소 표현(S..
Bag of Words(BoW) 단어의 등장 순서를 고려하지 않는 빈도수 기반의 단어 표현 방법인 Bag of Words 1. Bag of Words란? 가방안의 단어들! 즉 순서 고려 안하고 오직 빈도만 고려한다. Bag of Words란 단어들의 순서는 전혀 고려하지 않고, 단어들의 출현 빈도(frequency)에만 집중하는 텍스트 데이터의 수치화 표현 방법입니다. (1)단어 집합 생성 : 각 단어에 고유한 정수 인덱스를 부여합니다. (2)각 인덱스의 위치에 단어 토큰의 등장 횟수를 기록한 벡터를 만듭니다. 만약, 한국어에서 불용어에 해당되는 조사들 또한 제거한다면 더 정제된 BoW를 만들 수도 있습니다. 2. Bag of Words의 다른 예제들 BoW는 각 단어가 등장한 횟수를 수치화하는 텍스트 표현 방법이므로 주로 어떤 단어가..
다양한 단어의 표현 방법 1. 단어의 표현 방법 1)국소 표현(Local Representation) 방법 이산 표현(Discrete Representation) 해당 단어 그 자체만 보고, 특정값을 맵핑하여 단어를 표현하는 방법 2)분산 표현(Distributed Representation) 방법 연속 표현(Continuous Represnetation) 단어를 표현하고자 주변을 참고하여 단어를 표현하는 방법입니다. 국소 표현 방법은 단어의 의미, 뉘앙스를 표현할 수 없지만, 분산 표현 방법은 단어의 뉘앙스를 표현할 수 있게 됩니다. 2. 단어 표현의 카테고리화 1)국소 표현(Local Representation) 방법 Bag of Words - 단어의 빈도수를 카운트(Count)하여 단어를 수치화하는 단어 표현 방법 BoW의..
원-핫 인코딩(One-Hot Encoding) 원-핫 인코딩을 위해서 단어 집합을 만들고 고유한 정수를 부여하는 정수 인코딩을 진행합니다 단어 집합 : 서로 다른 단어들의 집합으로 단어의 변형 형태도 다른 단어로 간주된다. 1. 원-핫 인코딩(One-Hot Encoding)이란? 원-핫 인코딩은 단어 집합의 크기를 벡터의 차원으로 하고, 표현하고 싶은 단어의 인덱스에 1의 값을 부여하고, 다른 인덱스에는 0을 부여하는 단어의 벡터 표현 방식입니다. 첫째, 정수 인코딩을 통해 각 단어에 고유한 정수를 부여합니다. 둘째, 표현하고 싶은 단어의 고유한 정수를 인덱스로 간주하고 해당 위치에 1을 부여하고, 다른 단어의 인덱스의 위치에는 0을 부여합니다. 각 토큰에 대해서 고유한 정수를 부여합니다. 빈도수 순으로 단어를 정렬하여 정수를 부여하는 경우가 많습니..
패딩(Padding) 자연어 처리를 하다보면 각 문장(또는 문서)은 서로 길이가 다를 수 있습니다. 기계어의 병렬 연산을 위해서 여러 문장의 길이를 임의로 동일하게 맞춰주는 작업이 필요할 때가 있습니다. 1.Numpy로 패딩하기 단어 집합을 만들고, 정수 인코딩을 수행합니다. 모든 단어가 고유한 정수로 변환되었습니다. 모두 동일한 길이로 맞춰주기 위해서 이 중에서 가장 길이가 긴 문장의 길이를 계산해보겠습니다. 모든 문장의 길이를 숫자 0을 채워 가장 길이가 긴 문장의 길이로 맞춥니다. 기계는 이들을 하나의 행렬로 보고, 병렬 처리를 할 수 있습니다. 또한, 0번 단어는 사실 아무런 의미도 없는 단어이기 때문에 자연어 처리하는 과정에서 기계는 0번 단어를 무시하게 될 것입니다. 이와 같이 데이터에 특정 값을 채워서 데이터의 ..
정수 인코딩(Integer Encoding) 컴퓨터는 텍스트보다는 숫자를 더 잘 처리 할 수 있음 각 단어를 고유한 정수에 맵핑(mapping)시키는 전처리 작업 진행 랜덤으로 부여하기도 하지만, 보통은 단어 등장 빈도수를 기준으로 정렬한 뒤에 부여합니다. 1. 정수 인코딩(Integer Encoding) 단어를 빈도수 순으로 정렬한 단어 집합(vocabulary)을 만들고, 빈도수가 높은 순서대로 차례로 낮은 숫자부터 정수를 부여 1) dictionary 사용하기 문장 토큰화 수행 이제 정제 작업과 정규화 작업을 병행하며, 단어 토큰화를 수행합니다. 단어들을 소문자화하여 단어의 개수를 통일시키고, 불용어와 단어 길이가 2이하인 경우에 대해서 단어를 일부 제외시켜주었습니다. vocab에는 각 단어에 대한 빈도수가 기록되어있음 파이썬의 딕셔너리 구조..
정규 표현식(Regular Expression) 1.정규 표현식 문법과 모듈 함수 파이썬에서는 정규 표현식 모듈 re을 지원 1) 정규 표현식 문법 특수 문자설명 . 한 개의 임의의 문자를 나타냅니다. (줄바꿈 문자인 \n는 제외) ? 앞의 문자가 존재할 수도 있고, 존재하지 않을 수도 있습니다. (문자가 0개 또는 1개) * 앞의 문자가 무한개로 존재할 수도 있고, 존재하지 않을 수도 있습니다. (문자가 0개 이상) + 앞의 문자가 최소 한 개 이상 존재합니다. (문자가 1개 이상) ^ 뒤의 문자열로 문자열이 시작됩니다. $ 앞의 문자열로 문자열이 끝납니다. {숫자} 숫자만큼 반복합니다. {숫자1, 숫자2} 숫자1 이상 숫자2 이하만큼 반복합니다. ?, *, +를 이것으로 대체할 수 있습니다. {숫자,} 숫자 이상만큼 반복합니다. [ ] 대괄호 안의..
불용어(Stopword) 불용어(Stopword) 유의미한 단어 토큰만을 선별하기 위해 조사, 접미사 같은 자주 등장하지만 분석을 하는 것에 있어서는 큰 도움이 되지 않는 단어들을 제거하는 과정이 필요하다. 1.NLTK에서 불용어 확인하기 NLTK에서는 패키지 내에서 미리 정의하고 있는 불용어 리스트 확인 2.NLTK를 통해서 불용어 제거하기 NLTK의 word_tokenize를 통해서 단어 토큰화를 수행.->불용어 제거 3.한국어에서 불용어 제거하기 한국어에서 불용어를 제거하는 방법으로는 간단하게는 토큰화 후에 조사, 접속사 등을 제거하는 방법이 있습니다. 하지만 명사, 형용사와 같은 단어들 중에서 불용어로서 제거하고 싶은 단어들이 생길때 사용자가 직접 불용어 사전을 만들기도 한다. 불용어가 많은 경우에는 코드 내에서 직접 정..