머신러닝/자연어처리 5

차원감소(dimensionality reduction), SVD

1. 차원감소 dimensionality reduction란? 차원감소 dimensionality reduction은 말 그대로 벡터의 차원을 줄이는 방법을 말합니다. 데이터의 양이 너무 방대할 때, 행렬 내부 원소의 대부분이 0이거나(sparse matrix) 중요도가 낮을 때, 벡터의 차원을 줄이게 됩니다. 이때, 단순히 물질적으로 공간을 축소하는 것이 아니라 중요한 정보는 최대한 유지하면서 줄이는 것이 핵심입니다. 아래의 그림처럼 데이터의 분포를 고려해 중요한 '축'을 찾는 일을 수행합니다. 2. SVD 특잇값분해 차원을 감소시키는 방법 중, 특이값 분해 SVD(Singular Value Decomposition)을 이용하겠습니다. SVD는 임의의 행렬을 세 행렬의 곱으로 분해합니다. U, V는 직..

점별 상호정보량 Pointwise Mutual information(PMI)

1. PMI(Pointwise Mutual information)정의하기 pointwise: 점별의, 즉 주어진 집합의 각점에서 일어나는 경우 mutual: 상호간, 서로의 information: 정보 이를 통해 PMI는 각 벡터에서 일어나는 정보 뿐만이 아니라, 벡터들 간 동시에 일어나는 정보 모두를 고려한다는 것을 유추할 수 있습니다. 2. 식으로 구현하기 PMI는 확률변수 x와 y에 대해 다음 식으로 정의됩니다. P(x,y) 는 x,y가 말뭉치에 동시에 등장할 확률 P(x) x가 말뭉치에 등장할 확률 P(y) y가 말뭉치에 등장할 확률 을 뜻합니다. PMI값이 높다면? 이는 x,y 가 관련이 높다는 것을 뜻합니다. 이번에는 횟수를 사용하여 식을 다시 써봅시다. C(x,y) 는 x,y가 말뭉치에 동시..

코사인 유사도 cosine similarity

백터 사이의 유사도를 측정하는 방법을 배우겠습니다. 다양한 방법이 있겠지만, 자주 이용하는 코사인 유사도에 대해 알아보기로 합시다. 1. 코사인 유사도 cosine similarity 앞서, 단어를 벡터화시켰는데요. 단어와 단어, 즉 벡터와 벡터 사이에 얼마나 관련성이 있는가를 측정하는 것입니다. 만약 코사인 유사도 값이 높다면 이 두 벡터 간의 관련이 높다는 뜻입니다. 2. 구하는 방법 코사인유사도를 구하는 방법은 벡터를 L2노름으로 정규화하고, 내적을 구하는 것입니다. 식은 다음과 같습니다. 분자에는 벡터의 내적이 분모에는 각 벡터의 노름(벡터의 크기)이 등장합니다. 여기에서는 L2노름(벡터의 각 원소를 제곱해 더한 후, 다시 제곱근)을 계산합니다. 두 벡터가 가리키는 방향이 완전히 같다면 코사인 유..

말뭉치(corpus)란?

컴퓨터가 자연어를 이해시키는 방법 두 번째입니다. 이번에는 통계 기반 기법을 사용할 것입니다. 먼저 말뭉치(corpus)에 대해 알아봅시다. 말뭉치란? 간단히 말하면 대량의 텍스트 데이터입니다. '나는 너를 진심으로 사랑한다'는 문장에서 나는, 너를, 진심으로, 사랑한다는 단어를 어떤 공간에 한 곳에 뭉쳐놓은 것이죠. 파이썬 코드로 살펴보겠습니다. ※ 하단의 재생 버튼▶을 눌러보시면 출력 화면을 볼 수 있습니다. 말뭉치를 위한 사전작업을 마쳤습니다. 이를 preprocess() 함수로 구현하면 아래와 같습니다. def preprocess(text): text = text.lower() text = text.replace('.', ' .') words = text.split(' ') word_to_id =..

자연어처리 NLP(Natural Language Processing)란?

자연어 Natural Language =우리가 평소 쓰는 말 자연어처리 Natural Language Processing = 컴퓨터가 이해할 수 있도록 자연어를 바꾸는 것 문장의 기본 단위 = 단어 컴퓨터에게 단어의 의미를 어떻게 이해시키는 방법 시소러스 = 단어 유의어사전 시소러스의 문제점 1. 자연어 Natural Language = 우리가 평소 쓰는 말 우리가 평소 쓰는 말 = 자연어 Natural Language 안녕하세요, 여러분! 지금 제가 쓰고 있는 말을 자연어라고 합니다. 2. 지연어처리 Natural Language Processing = 컴퓨터가 이해할 수 있도록 자연어를 바꾸는 것 우리가 쓰는 이런 자연스러운 말을 컴퓨터가 이해할 수 있도록 변경, 처리하는 것을 자연어처리 Natura..