본문 바로가기

mambo's coding note346

자연어처리 : 언어모델 : 통계적 언어모델 정의 통계적 언어모델은 통계적인 접근 방법으로 어떻게 언어를 모델링하는지를 정한다. 1. 조건부 확률 조건부 확률은 두 확률 P(A),P(B)에 대해서 아래와 같은 관계를 갖습니다. p(B|A)=P(A,B)/P(A) P(A,B)=P(A)P(B|A) 2020/01/18 - [machine_learning/statistics] - Statistics : 5-5 : 조건부확률 Statistics : 5-5 : 조건부확률 조건부확률 목적, 언제 쓸까? > 두 개 이상의 사건이 있을 때, 한 사건의 결과가 다른 사건의 확률에 영향을 미치는 경우!! 정의 > 어떤 사건 B가 있을 때, B사건중 A 사건이 일어날 확률을 조건부확률이라고 말하.. mambo-coding-note.tistory.com 더 많은 확률에 대.. 2020. 3. 5.
자연어처리 : 언어모델 : N-gram 정의 SLM의 일종이지만, 단어 고려를 모든 단어를 고려하는 것이 아닌, n개로 정한 갯수만 고려한다. 1. corpus에서 카운트하지 못하는 경우의 확률 감소 SLM의 한계는 훈련 코퍼스에 확률을 계산하고 싶은 문장이나 단어가 없을 수 있다는 점이다. 또한 확률을 계산하고 싶은 문장이 길어질수록 갖고있는 코퍼스에서 그 문장이 존재하지 않을 가능성이 높다. 따라서 참고하는 단어를 줄이면, 즉 n을 설정해주면 카운트 가능성이 높아진다. P(is|An adorable little boy) ≈ P(is|boy), P(is|An adorable little boy) ≈ P(is|little boy) 즉, 앞 단어 중 임의의 개수만 포함해서 카운트하여 근사하자는 뜻이다. 2. N-gram unigrams : an.. 2020. 3. 5.
자연어처리 : 언어 모델 (Language Model) 정의 단어 시퀀스에 확률을 할당하는 일을 한다. 즉, 가장 자연스러운 단어 시퀀스를 찾아내는 모델이다. 언어모델링은 가장 자연스러운 단어 시퀀스를 찾아내는 작업이다. 이전 단어들로부터 다음 단어를 예측하는 일이다. 다른 말로 문법이라고도 말한다. 통계를 이용한 방법 인공 신경망을 이용한 방법 : GPT, BERT 1. 언어모델의 역할 : 단어 시퀀스의 확률 할당 a. 기계 번역 (Machine Translation) P( 나는 버스를 탔다 ) > P( 나는 버스를 태운다 ) : 좌측의 문장일 확률이 높다고 판단한다. b. 오타 교정 (Spell Correction) P( 달려갔다 ) > P( 잘려갔다 ) : 좌측의 문장일 확률이 높다고 판단. c. 음성 인식 (Speech Recognition) P(나는.. 2020. 3. 5.
자연어처리 : 텍스트 전처리 : 단어 분리하기 (BPE) 정의 기계가 훈련 단계에서 학습한 단어들을 모아놓은 걸을 단어 집합, Vocabulary 라고 한다. test 단계에서 기계가 미처 학습못한 단어가 등장한다면, 이는 Out-Of-Vocabulary, OOV 라고 한다. 단어 분리는 (subword segmentation) 하나의 단어는 의미있는 여러 내부 단어들(subwords)의 조합으로 구성된 경우가 많으니, 여러 단어로 분리해사 단어를 이해보겠다는 것이 목표이다. 주로 Byte Pair Encoding(BPE), SentencePiece 두 개가 존재한다. 1. BPE 기존에 있던 단어를 분리한다는 의미다. BPE을 요약하면, 글자(charcter) 단위 -> 집합(vocabulary)을 만들어 내는 Bottom up 방식의 접근을 사용한다. 우선.. 2020. 3. 5.
자연어처리 : 텍스트 처리 : one-hot-encoding 정의 '나', '는', '자연어', '처리', '를', '배운다' 라는 단어가 있다. 이를 하나씩 {'나': 0, '는': 1, '자연어': 2, '처리': 3, '를': 4, '배운다': 5} 라고 mapping을 한 후, 자연어의 one-hot-vector는 [0, 0, 1, 0, 0, 0] 이라고 나온다. 즉, 실제 그 단어가 해당하는 index 위치에 1을, 나머지는 0을 취하는 작업을 one-hot-encoding 기법이라 한다. keras를 이용한 one-hot-encoding # Tokenizer : 언어의 빈도수, index, number 만큼 cut하는 기능까지 from tensorflow.keras.preprocessing.text import Tokenizer # to_categori.. 2020. 3. 4.
자연어처리 : 텍스트 처리 : 정수 인코딩 (Integer Encoding) 정의 컴퓨터는 text보다는 number를 더 잘 처리한다. 따라서 text를 number로 바꾸는 작업을 하기도 한다. 단어를 정수에 mapping시키는 전처리 작업을 해야한다. index 부여방법은 빈도수가 높은 단어들만 사용하기 위해서 단어에 대한 빈도수를 기준으로 정렬한 뒤 부여한다. text를 숫자로 바꾸는 작업 전에는 전처리 단계가 모두 끝나있어야 한다. 1. 정수 인코딩 (Integer Encoding) 1) Dictionary 이용 dictionary 사용해서 문장 토큰화 및 정제작업을 거친 단어 토큰화 진행 dict에는 중복을 제거한 단어와 각 단어에 대한 빈도수가 기록 빈도수 높은 단어 -> 낮은 index 부여 빈도수 낮은 단어들을 Out-Of-Vocabulary, OOV 로 다시 m.. 2020. 3. 4.
자연어처리 : 텍스트 전처리 : 불용어처리 (Stopword) 정의 우리가 앞에서 길이가 짧은 단어들이나, 등장 빈도가 적은 단어, 대, 소문자 통합, 어간추출 및 표제어 추출을 통해 noise 없애거나 정규화를 진행하였다. 하지만 글 속에서 자주 등장하는 단어지만 관용적인 표현이라 많이 쓴 표현이라면, 이 단어는 실질적인 의미가 없는 단어이다. 이를 제하기 위해 자주 등장하지만 실제 의미분석에 의미 없는 단어를 없애주는 단어를 stopword라고 한다. 1. nltk에서 불용어 확인하기 from nltk.corpus import stopwords print(stopwords.words('english')) 2. nltk를 통해서 불용어 제거하기 from nltk.corpus import stopwords from nltk.tokenize import word_to.. 2020. 3. 4.
자연어처리 : 텍스트 전처리 : 정규표현식 정리 정규표현식, re 정리¶ 1. compile¶ 문자 안에 특정 문자나 패턴이 존재하는지 여부를 알려줌. 정규식객체 (re.RegexObject)를 return 하게 된다. In [52]: # 정규표현식 공부 import re """ # re.compile : 문자 안에 특정 문자나 패턴이 존재하는지 여부를 알려줌. + 정규식객체 (re.RegexObject)를 return 하게 된다. """ text = r"에러 1122 : 레퍼런스 오류\n 에러 1033: 아규먼트 오류" regex = re.compile("에러 1122") mo = regex.search(text) if mo != None: print(mo.group()) else: print('단어가 없습니다.') 에러 1122 compile에서 .. 2020. 3. 4.
자연어처리 : 텍스트 전처리 : 정제 및 정규화 : 어간 추출 및 표제어 추출 (stemming & Lemmatization) 정의 정제 및 정규화 작업 중 포함되는 stemming, Lemmatization, 어간 추출 및 표제어 추출이다. stemming, Lemmatization 의 목표는 겉보기에는 서로 다른 단어들이지만, 하나의 단어로 일반화시킬 수 있다면 하나의 단어로 일반화시켜서 문서 내의 단어 수를 줄이겠다는 것이 포인트다. 이러한 방법들은 단어의 빈도수를 기반으로 문제를 풀고자 하는 BoW(Bag of Words) 표현을 사용하는 자연어 처리 문제에서 주로 사용된다. 자연어 처리에서 전처리, 더 정확히는 정규화의 지향점은 언제나 갖고 있는 코퍼스로부터 복잡성을 줄이는 일이다. 형태소 정의 의미를 가진 가장 작은 단위 (morpheme) 1) 어간 (stem) 단어의 의미를 담고 있는 단어의 핵심 부분 2) 접사 .. 2020. 3. 4.
자연어처리 : 텍스트 전처리 : 정제 및 정규화 (Cleaning & Normalization) 정의 앞에서 corpus를 용도에 맞게 token으로 분류하는 것을 tokenization이라고 했다. tokenization이 이루어지기 전에, text data를 용도에 맞게 정제 및 정규화 (Cleaning & Normalization)하는 일이 항상 함께한다. 정제(cleaning) : 갖고 있는 코퍼스로부터 노이즈 데이터를 제거한다. token화 작업 전, 후로 계속 이루어진다. 보통 완벽하게 정제는 하지 못하며 일종의 합의점을 찾기도 한다. 정규화(normalization) : 표현 방법이 다른 단어들을 통합시켜서 같은 단어로 만들어준다. 1. 규칙에 기반한 표기가 다른 단어들의 통합 가령, USA = US 하나의 단어로 정규화해볼 수 있다. uh-huh = uhhuh는 형태는 다르지만 여전히.. 2020. 3. 4.
자연어처리 : 텍스트전처리 : 토큰화 (Tokenization) Text Preprocessing 자연어 처리에서는 우리가 쓸 수 있게 Tokenization, Cleaning, Normalization 하는 일을 하게 된다. 이 때, 주어진 corpus에서 token으로 나눈 작업은 tokenization이라 한다. 보통 의미있는 단위를 token으로 정의한다. 1. 단어 토큰화 (Word Tokenization) token의 기준을 word로 한 tokenization을 word tokenization이라 한다. 단어는 단어 단위 외에도 단어구, 의미를 갖는 문자열로도 간주된다. 보통 토큰화 작업은 단순히 구두점이나 특수문자를 전부 제거하는 정제(cleaning) 작업을 수행하는 것만으로 해결되지 않는다. 구두점이나 특수문자를 전부 제거하면 토큰이 의미를 잃어버리.. 2020. 3. 4.
자연어처리 : 기본적인 Workflow 1) 수집 (acquisition) model을 학습시키기 위해서는 data가 필요하다. 자연어 데이터를 말뭉치 또는 corpus 라고 부른다. Corpus는 조사나 연구 목적에 의해서 특정 도메인으로부터 수집된 텍스트 집합을 말한다. Corpus는 txt, csv, xml 등등 다양하다. 2) 점검 및 탐색 (Inspection and Exploration) data를 수집했다면 점검하고 탐색하는 단계이다. 여기서는 데이터의 구조, 노이즈 데이터, 머신러닝 적용을 위해서 어떻게 data를 정제해야하는지를 파악한다. 이 단계를 탐색적 데이터 분석 (Exploration Data Analysis, EDA) 단계다. 이는 독립변수, 종속변수, 변수 유형, 변수의 데이터타입 등을 점검하며 데이터의 특징과 내재.. 2020. 3. 4.