목록DL/NLP (28)
rueki

잠재 디리클레 할당(LDA)은 토픽 모델링의 대표적 알고리즘으로서, 문서들은 토픽들의 혼합으로 구성되어져 있으며, 토픽들은 확률 분포에 기반하여 단어들을 생성한다고 가정한다. 문서1 : 저는 사과랑 바나나를 먹어요 문서2 : 우리는 귀여운 강아지가 좋아요 문서3 : 저의 깜찍하고 귀여운 강아지가 바나나를 먹어요 LDA를 수행할 때 문서 집합에서 토픽이 몇 개가 존재할 지 가정하는 것은 사용자가 해야한다. 토픽의 개수 K를 2라고 가정하고 LDA를 수행했다고 할 때, 문서1 : 토픽 A 100% 문서2 : 토픽 B 100% 문서3 : 토픽 B 60%, 토픽 A 40% 토픽A : 사과 20%, 바나나 40%, 먹어요 40%, 귀여운 0%, 강아지 0%, 깜찍하고 0%, 좋아요 0% 토픽B : 사과 0%, 바..

자연어 처리에서 토픽은 문서 집합의 추상적인 주제를 발견하기 위한 통계적 모델 중 하나이며, 텍스트 본문의 숨겨진 의미 구조를 발견하기 위해 사용되는 텍스트 마이닝 기법이다. Bow에 기반한 DTM이나 TF-IDF는 기본적으로 단어의 빈도 수를 이용한 수치화 방법으로 단어의 의미는 고려하지 않았다. 이에 대한 대안으로 나온 것이 잠재 의미 분석(LSA)이다. LSA를 이해하기 위해서는 선형대수의 특이값 분해(SVD)를 이해해야한다. 특이값 분해(SVD)는 실수 벡터 공간에 한정하여 내용을 설명한다. A가 m × n 행렬일 때, 다음과 같이 3개의 행렬의 곱으로 분해(decomposition)하는 것을 말한다. 직교행렬 : 자신과 자신의 전치 행렬의 곱 또는 이를 반대로 곱한 결과가 단위행렬이 되는 행렬 ..

1. 유클리드 거리 두 개의 점 P, q가 각각의 좌표를 가질 때, 두 점 사이의 거리를 계산하는 유클리드 공식이다. 2차원에서 두 점 p와 q사이의 거리를 구하는 것을 나타내었다. 두 점 사이의 유클리드 거리 공식은 피타고라스를 통해 구할 수 있다. 넘파이를 이용해서 구현해보자 import numpy as np def dist(x,y): return np.sqrt(np.sum((x-y)**2)) doc1 = np.array((2,3,0,1)) doc2 = np.array((1,2,3,1)) doc3 = np.array((2,1,2,2)) docQ = np.array((1,1,0,1)) print(dist(doc1,docQ)) print(dist(doc2,docQ)) print(dist(doc3,docQ..

코사인 유사도는 두 벡터 간의 코사인 각도를 이용하여 구할 수 있는 두 벡터의 유사도를 말한다. 두 벡터의 방향이 같으면 1, 직교일 때는 0, 서로 반대 방향이면 -1이다. 즉 1에 가까울 수록 유사도가 높다고 판단할 수 있다. 예제를 통해 코사인 유사도를 구해보자. 문서1 : 저는 사과 좋아요 문서2 : 저는 바나나 좋아요 문서3 : 저는 바나나 좋아요 저는 바나나 좋아요 위의 문서들에 대해 문서 단어 행렬을 만들면 밑의 표처럼 나온다 코사인 유사도를 numpy로 식을 만들어보자 from numpy import dot from numpy.linalg import norm import numpy as np def cos_sim(A, B): return dot(A,B) / (norm(A)*norm(B))..