본문 바로가기

AI143

자연어 처리 : TF-IDF 활용해 문서의 유사도 구하기 How to get document similarity? Cosine Similarity on Bag of Words Cosine similarity on with Bag of Words Back of Words 먼저 문장들을 back of words를 해서 벡터로 구현한다. d4와의 유사도를 검증을 위해, cosine similarity를 한다. (d4는 d4와 비교하였기 때문에 유사도 1) 이 때, d1이 가장 비슷하다고 나왔다. 하지만 american restaurant의 메뉴가 궁금하기 때문에 search 잘못함. -> TD-IDF로 검증한다. Back of Words + TF-IDF 위의 table은 TF-IDF로 구현한 table이다. Back of Words는 문장간의 반복적인 관용구들을 배.. 2020. 3. 6.
자연어 처리 : 카운트 기반의 단어 표현 : TF-IDF 1. 정의 (1) TF (Term Frequency) TF(단어 빈도, term frequency)는 특정한 단어가 문서 내에 얼마나 자주 등장하는지를 나타내는 값으로, 이 값이 높을수록 문서에서 중요하다고 생각할 수 있다. 위의 문장을 보면 car 의 TF 수치가 높은 것을 보아, car가 중요한 문장이다. 하지만 단어 자체가 문서군 내에서 자주 사용되는 경우, 이것은 그 단어가 흔하게 등장한다는 것을 의미한다. 위 그림이 가설의 예시이다. 여기 문장에서 중요한 단어는 friend 이다. 하지만 TF 수치상으로는 a 도 중요하다. 이는 관용적으로 많이 쓰이는 말이고 연관성이 없다는 것 이다. (2) IDF (Inverse Document Frequency) 관용적인 표현이나 연관성이 없는 단어의 수치를.. 2020. 3. 6.
자연어 처리 : 카운트 기반의 단어 표현 : Bag of Words + DTM 1. Bag of words 란? (1) 정의 단어들의 출현 빈도에만 집중하는 text data 수치화 표현방법이다. 문장을 숫자로 표현, 가방 안에 순서 상관없이 문자를 모두 넣는다고 생각하자. (2) BoW 만드는 과정 문장을 입력하면, 단어들이 모두 포함된 단어들을 list 화 한 후, key 값에 맞는 단어들의 value를 증가해준다. 예를 들면, not good, not bad 경우에는 not이 2개, bad 1개, good 1개 로 [0, 0, 0, 0, 2, 1, 1] 이다. 이런식으로 여러 문장들의 단어 집합 리스트를 만들어서 test 문장을 하나씩 비교해보면 유사도 측정이 가능하다. (3) 유사도 비교 위 문장에서 awesome thank you, great thank you의 bag o.. 2020. 3. 6.
자연어처리 : 카운트 기반의 단어 표현 단어의 표현 방법 국소 표현 (Local Representation) : 단어 그 자체만을 보고 특정 값에 mapping 하는 방법 ex) puppy -> a[0], cute ->a[1], lazy ->a[2], turtle -> a[3] 분산 표현 (Distributed Representation) : 단어 주변을 참고하여 단어를 표현하는 방법 ex) puppy와 cute는 상관관계가 존재, 따라서 vector(1,0), (0.9,0.1) // turtle와 lazy는 vector (0,1), (0.1, 0.9) 구조 우리는 자연어처리에서 예측을 기반으로하는 FastText를 주로 학습할 것이고, 예측과 카운트 두 가지 방법이 모두 사용된 GloVe를 학습할 것이다. 2020. 3. 6.
자연어처리 : 언어모델 : Perplexity 정의 번역하면 "혼란도"의 의미이다. 즉, Language Model이 실제로 관측되는 값을 얼마나 잘 예측하는지를 평가할 때 사용. 외부 평가 (extrinsic Evaluation) : 비교해야하는 모델이 너무 많아서 test data에 대해서 빠르게 식으로 계산되는 간단한 평가 방법 내부 평가 : 모델 내에서 자신의 성능을 수치화화여 결과를 내놓는 내부 평가 방법 Perplexity는 수치가 높을수록 혼잡도가 높고 낮은 성능을 의미하며, 수치가 낮을수록 높은 성능을 의미한다. 1. 언어 모델의 평가 방법 : PPL https://wikidocs.net/21697 위키독스 온라인 책을 제작 공유하는 플랫폼 서비스 wikidocs.net 문장의 확률이 커질수록 1을 향해 가므로 PPL의 값은 작아지고,.. 2020. 3. 6.
자연어처리 : 언어모델 : 통계적 언어모델 정의 통계적 언어모델은 통계적인 접근 방법으로 어떻게 언어를 모델링하는지를 정한다. 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.