NLP
벡터의 유사도(Vector Similarity)
문서의 유사도를 구하는 일은 자연어 처리의 주요 주제 중 하나이다. 사람들이 말하는 문서의 유사도란 문서를 볼 때 문서들 간에 동일한 단어 또는 비슷한 단어가 얼마나 많이 쓰였는지를 기준으로 한다. 기계가 계산하는 문서의 유사도의 성능은 각 문서의 단어들을 어떤 방법으로 수치화하여 표현했는지(TDM, Word2Vec 등), 문서 간의 단어들의 차이를 어떤 방법(유클리디안 거리, 코사인 유사도 등)으로 계산했는지에 달려있다. n-gram 유사도 n-gram 은 주어진 문장에서 n개의 연속적인 단어 시퀀스(단어 나열)를 의미한다. n-gram은 문장에서 n개의 단어를 토큰으로 사용한다. 이는 이웃한 단어의 출현 횟수를 통계적으로 표현해 텍스트의 유사도를 계산하는 방법이다. 손쉬운 구현 방식에 비해 학습 말뭉..
카운트 기반의 단어 표현(Count based word Representation)
1. Bag of Words (BOW) Bag of Words란 단어들의 순서는 전혀 고려하지 않고, 단어들의 출현 빈도(frequency)에만 집중하는 텍스트 데이터의 수치화 표현 방법이다. Bag of Words는 직역하자면 단어들의 가방입니다. 문서 내 모든 단어를 한꺼번에 가방(Bag) 안에 넣은 뒤에 흔들어서 섞는다는 의미로 Bag of Words(BOW) 모델이라고 한다. ✔ BoW를 만드는 과정 우선, 각 단어에 고유한 정수 인덱스를 부여합니다. 각 인덱스의 위치에 단어 토큰의 등장 횟수를 기록한 벡터를 만듭니다. from konlpy.tag import Komoran import re # 코모란 형태소 분석기를 사용 komoran = Komoran() # 정규 표현식을 통해 온점을 제거 t..
패딩(Padding)
문장이나 문서의 길이가 다를경우 병렬 연산을 위해 문장의 길이를 임의로 동일하게 맞춰주는 작업이 필요하다. 패딩(Padding)처리는 전체 백터의 크기를 맞춰주고, 크기를 늘린만큼 작은 벡터에 생긴 공간에 0을 채워준다. # Keras 케라스에서는 pad_sequences() 함수를 통해 시퀀스의 패딩 처리를 손쉽게 할 수 있다. from tensorflow.keras.preprocessing.text import Tokenizer from tensorflow.keras.preprocessing.sequence import pad_sequences sentences = [['barber', 'person'], ['barber', 'good', 'person'], ['barber', 'huge', 'per..
정수 인코딩 (Integer Encoding)
컴퓨터는 텍스트보다는 숫자를 더 잘 처리할 수 있다. 이를 위해 자연어 처리에서는 텍스트를 숫자로 바꾸는 여러 가지 기법들이 있다. 그리고 그러한 기법들을 본격적으로 적용시키기 위한 첫 단계로 각 단어를 고유한 숫자에 맵핑(Mapping)시키는 전처리 작업이 필요할 때가 있다. 예를 들어 갖고 있는 텍스트에 단어가 5,000개 있다면, 5,000개의 단어들 각각에 0번부터 4,999번까지 단어와 맵핑되는 고유한 숫자, 다른 말로는 인덱스를 부여한다. 인덱스를 부여하는 방법은 여러 가지가 있을 수 있는데, 랜덤으로 부여하기도 하지만 보통은 전처리도 같이 겸하기 위해 단어에 대한 빈도수로 정렬한 뒤에 부여한다. 정수 인코딩 (Integer Encoding) 1. dictionary 사용하기 from nltk..