본문 바로가기

딥러닝

(21)
코사인 유사도(Cosine Similarity) 1. 코사인 유사도(Cosine Similarity) 코사인 유사도는 두 벡터 간의 방향적 유사성을 측정하는 데 사용됩니다. 코사인 유사도가 1에 가까울수록 두 벡터가 가리키는 방향이 유사하고, 0에 가까울수록 유사하지 않습니다. 음수 값을 가질 경우, 두 벡터가 반대 방향을 가리키고 있다는 것을 의미합니다. 이를 통해 코사인 유사도는 문서 검색, 추천 시스템 등에서 사용되며, 벡터 공간에서의 유사성 측정을 위한 일반적인 방법 중 하나입니다. similarity=cos(Θ)=A⋅B||A|| ||B||=∑i=1nAi×Bi∑i=1n(Ai)2×∑i=1n(Bi)2 Numpy를 사용해서 코사인 유사도를 계산하는 함수를 구현하고 각 문서 벡터 간의 코사인 유사도를 계산해보겠습니다. 코사인 유사도는 유사도를 구할 때..
TF-IDF(Term Frequency-Inverse Document Frequency) DTM 내에 있는 각 단어에 대한 중요도를 계산할 수 있는 TF-IDF 가중치 TF-IDF를 사용하면, 기존의 DTM을 사용하는 것보다 보다 많은 정보, 성능을 얻을 수 있습니다. 1. TF-IDF(단어 빈도-역 문서 빈도, Term Frequency-Inverse Document Frequency) 단어의 빈도와 역 문서 빈도(문서의 빈도에 특정 식을 취함)를 사용하여 DTM 내의 각 단어들마다 중요한 정도를 가중치로 주는 방법 주로 문서의 유사도를 구하는 작업 검색 시스템에서 검색 결과의 중요도를 정하는 작업 문서 내에서 특정 단어의 중요도를 구하는 작업 TF-IDF는 TF와 IDF를 곱한 값 문서를 d, 단어를 t, 문서의 총 개수를 n이라고 표현할 때 (1) tf(d,t) : 특정 문서 d에서의 ..
문서 단어 행렬(Document-Term Matrix, DTM) DTM : 서로 다른 문서들의 BoW들을 결합한 표현 방법인 문서 단어 행렬(Document-Term Matrix, DTM) 표현 방법. 행과 열을 반대로 선택하면 TDM. 서로 다른 문서들을 비교할 수 있게 됩니다. 1. 문서 단어 행렬(Document-Term Matrix, DTM)의 표기법 문서 단어 행렬(Document-Term Matrix, DTM)이란 다수의 문서에서 등장하는 각 단어들의 빈도를 행렬로 표현한 것. BoW 표현을 다수의 문서에 대해서 행렬로 표현하고 부르는 용어로, 각 문서에서 등장한 단어의 빈도를 행렬의 값으로 표기합니다. 문서 단어 행렬은 문서들을 서로 비교할 수 있도록 수치화할 수 있다 2. 문서 단어 행렬(Document-Term Matrix)의 한계 1) 희소 표현(S..
Bag of Words(BoW) 단어의 등장 순서를 고려하지 않는 빈도수 기반의 단어 표현 방법인 Bag of Words 1. Bag of Words란? 가방안의 단어들! 즉 순서 고려 안하고 오직 빈도만 고려한다. Bag of Words란 단어들의 순서는 전혀 고려하지 않고, 단어들의 출현 빈도(frequency)에만 집중하는 텍스트 데이터의 수치화 표현 방법입니다. (1)단어 집합 생성 : 각 단어에 고유한 정수 인덱스를 부여합니다. (2)각 인덱스의 위치에 단어 토큰의 등장 횟수를 기록한 벡터를 만듭니다. 만약, 한국어에서 불용어에 해당되는 조사들 또한 제거한다면 더 정제된 BoW를 만들 수도 있습니다. 2. Bag of Words의 다른 예제들 BoW는 각 단어가 등장한 횟수를 수치화하는 텍스트 표현 방법이므로 주로 어떤 단어가..
다양한 단어의 표현 방법 1. 단어의 표현 방법 1)국소 표현(Local Representation) 방법 이산 표현(Discrete Representation) 해당 단어 그 자체만 보고, 특정값을 맵핑하여 단어를 표현하는 방법 2)분산 표현(Distributed Representation) 방법 연속 표현(Continuous Represnetation) 단어를 표현하고자 주변을 참고하여 단어를 표현하는 방법입니다. 국소 표현 방법은 단어의 의미, 뉘앙스를 표현할 수 없지만, 분산 표현 방법은 단어의 뉘앙스를 표현할 수 있게 됩니다. 2. 단어 표현의 카테고리화 1)국소 표현(Local Representation) 방법 Bag of Words - 단어의 빈도수를 카운트(Count)하여 단어를 수치화하는 단어 표현 방법 BoW의..
원-핫 인코딩(One-Hot Encoding) 원-핫 인코딩을 위해서 단어 집합을 만들고 고유한 정수를 부여하는 정수 인코딩을 진행합니다 단어 집합 : 서로 다른 단어들의 집합으로 단어의 변형 형태도 다른 단어로 간주된다. 1. 원-핫 인코딩(One-Hot Encoding)이란? 원-핫 인코딩은 단어 집합의 크기를 벡터의 차원으로 하고, 표현하고 싶은 단어의 인덱스에 1의 값을 부여하고, 다른 인덱스에는 0을 부여하는 단어의 벡터 표현 방식입니다. 첫째, 정수 인코딩을 통해 각 단어에 고유한 정수를 부여합니다. 둘째, 표현하고 싶은 단어의 고유한 정수를 인덱스로 간주하고 해당 위치에 1을 부여하고, 다른 단어의 인덱스의 위치에는 0을 부여합니다. 각 토큰에 대해서 고유한 정수를 부여합니다. 빈도수 순으로 단어를 정렬하여 정수를 부여하는 경우가 많습니..
패딩(Padding) 자연어 처리를 하다보면 각 문장(또는 문서)은 서로 길이가 다를 수 있습니다. 기계어의 병렬 연산을 위해서 여러 문장의 길이를 임의로 동일하게 맞춰주는 작업이 필요할 때가 있습니다. 1.Numpy로 패딩하기 단어 집합을 만들고, 정수 인코딩을 수행합니다. 모든 단어가 고유한 정수로 변환되었습니다. 모두 동일한 길이로 맞춰주기 위해서 이 중에서 가장 길이가 긴 문장의 길이를 계산해보겠습니다. 모든 문장의 길이를 숫자 0을 채워 가장 길이가 긴 문장의 길이로 맞춥니다. 기계는 이들을 하나의 행렬로 보고, 병렬 처리를 할 수 있습니다. 또한, 0번 단어는 사실 아무런 의미도 없는 단어이기 때문에 자연어 처리하는 과정에서 기계는 0번 단어를 무시하게 될 것입니다. 이와 같이 데이터에 특정 값을 채워서 데이터의 ..
정수 인코딩(Integer Encoding) 컴퓨터는 텍스트보다는 숫자를 더 잘 처리 할 수 있음 각 단어를 고유한 정수에 맵핑(mapping)시키는 전처리 작업 진행 랜덤으로 부여하기도 하지만, 보통은 단어 등장 빈도수를 기준으로 정렬한 뒤에 부여합니다. 1. 정수 인코딩(Integer Encoding) 단어를 빈도수 순으로 정렬한 단어 집합(vocabulary)을 만들고, 빈도수가 높은 순서대로 차례로 낮은 숫자부터 정수를 부여 1) dictionary 사용하기 문장 토큰화 수행 이제 정제 작업과 정규화 작업을 병행하며, 단어 토큰화를 수행합니다. 단어들을 소문자화하여 단어의 개수를 통일시키고, 불용어와 단어 길이가 2이하인 경우에 대해서 단어를 일부 제외시켜주었습니다. vocab에는 각 단어에 대한 빈도수가 기록되어있음 파이썬의 딕셔너리 구조..