코사인 유사도코사인 유사도는 두 벡터 간의 코사인 각도를 이용해 구한다. - 두 벡터의 방향이 완전 동일하면 1- 90도의 각을 이루면 0- 180도의 반대 방향을 가지면 -1 코사인 유사도를 구하는 식은 아래와 같다. 문서 단어 행렬이나 TF-IDF 행렬을 통해 문서의 유사도를 구하는 경우 행렬이 각각의 특징 벡터가 된다. 문서1 : 저는 사과 좋아요문서2 : 저는 바나나 좋아요문서3 : 저는 바나나 좋아요 저는 바나나 좋아요 위 예제로 띄어쓰기 기준 토큰화를 한 문서 단어 행렬은 아래와 같다.이 표를 토대로 코사인 유사도를 구할 수 있다.A와 B의 코사인 유사도를 구하면 (1+1) / (루트3)(루트3) = 2/3이 된다.A와 C의 코사인 유사도를 구하면 (2+2) / (루트3)(루트12) = 2/..
분류 전체보기
BoW(Bag of Words)단어의 순서는 고려하지 않고 출현 빈도에만 집중하는 텍스트 데이터의 수치화 표현 방법이다. - 정수 인덱싱 (단어 집합 생성)- 각 인덱스의 위치에 단어 토큰의 등장 횟수를 기록한 벡터 생성 from konlpy.tag import Oktokt = Okt()def build_bag_of_words(document): document = document.replace('.', '') tokenized_document = okt.morphs(document) word_to_index = {} bow = [] for word in tokenized_document: if word not in word_to_index.keys(): word_to_inde..
언어 모델언어 모델은 언어라는 현상을 모델링하고자 단어 시퀀스에 확률을 할당하는 모델이다.쉽게 말하면 가장 자연스러운 단어 시퀀스를 찾는 모델이다.단어 시퀀스에 확률을 할당하기 위해서는 이전 단어들이 주어졌을 때 다음 단어를 예측하도록 한다. 주어진 양쪽 단얻르로부터 가운데 비어있는 단어를 예측하는 모델도 있다. - 통계를 이용한 방법- 인공 신경망을 이용한 방법 언어 모델링주어진 단어들로부터 아직 모르는 단어를 예측하는 작업이다. 단어 시퀀스 확률 할당기계 번역 (Machine Translation)P(나는 버스를 탔다) > P(나는 버스를 태운다) 오타 교정 (Spell Correction)선생님이 교실로 부리나케 P(달려갔다) > P(잘려갔다) 음성 인식 (Speech Recognition..
KoNLPy한국어의 자연어 처리를 위해서 사용하는 패키지다.Okt, Mecab, Komoran, Kkma 등 형태소 분석기를 제공한다. KSS한국어의 문장 토큰화를 위한 도구를 제공하는 패키지다. PyKoSpacing띄어쓰기가 되어 있지 않는 문장을 띄어쓰기 한 문장으로 변환하는 패키지다. from pykospacing import Spacingsent = '김철수는 극중 두 인격의 사나이 이광수 역을 맡았다. 철수는 한국 유일의 태권도 전승자를 가리는 결전의 날을 앞두고 10년간 함께 훈련한 사형인 유연재(김광수 분)를 찾으러 속세로 내려온 인물이다.'spacing = Spacing()kospacing_sent = spacing(sent) print(kospacing_sent)'''김철수는 극중 두 인..
단어 집합(vocabulary)단어 집합이란 서로 다른 단어들의 집합이다.book과 books와 같이 단어의 변형 형태도 다른 단어로 간주한다.텍스트의 모든 단어를 중복 허용하지 않고 모아놓은 것을 단어 집합이라고 한다. 원-핫 인코딩 (One-Hot Encoding)원-핫 인코딩은 단어 집합의 크기를 벡터 차원으로 하고, 원하는 단어의 인덱스 값을 1, 나머지를 0으로 처리한다.이렇게 표현된 벡터를 원-핫 벡터(One-Hot vector) 라고 한다. - 정수 인코딩: 각 단어에 고유한 정수 부여- 표현하고 싶은 단어의 고유한 정수를 인덱스로 간주, 해당 위치에 1, 나머지에 0 부여 우선 정수 인코딩을 진행한다.from konlpy.tag import Okt okt = Okt() tokens = ..
패딩앞서 정수 인코딩을 하는 과정에서 문장 토큰화 후 문장 별로 단어 토큰화를 했다.이 때 문장마다 단어의 개수가 다르므로 인코딩 후 각 리스트마다 길이가 다르다.'''[[1, 5], [1, 8, 5], [1, 3, 5], [8, 2], [2, 4, 3, 2], [3, 2], [1, 4, 6], [1, 4, 6], [1, 4, 2], [7, 7, 3, 2, 8, 1, 8], [1, 8, 3, 8]]''' 길이를 동일하게 맞추기 위해서는 가장 긴 문장을 기준으로 다른 문장들의 길이를 늘린다.가상의 단어 'PAD'가 있다고 가정하고 0번으로 정의해서 짧은 문장들을 채운다. for sentence in encoded: while len(sentence) 보편적으로 문장 뒤에 0을 채워 길이를 동일하게 ..