본문 바로가기

전체 글110

Cosine Similarity (코사인 유사도) 코사인 유사도두 벡터 간 코사인 각도를 이용하여 유사도를 구하는 방법 두 벡터가 겹치는 경우 (방향이 동일) => 1방향이 반대인 경우 => -1( -1 ≤ similarity ≤ 1 ) 코사인 유사도 함수def cos_sim(A,B): return dot(A,B)/(norm(A)*norm(B)) 코사인 유사도 라이브러리from sklearn.metrics.pairwise import cosine_similarity# 두 행렬 간 유사도 비교cosin_sim = cosine_similarity(matrix1, matrix2) 2024. 5. 16.
tf - idf vector 단어들 중에서 더 중요한 단어가 존재할 경우 tf - idf vector 사용 (순서는 고려하지 않음) 어떤 문서에나 자주 나오는 단어 => 관사, 대명사특정 문서에서 자주 나오는 단어 => related to Topic tf - idf score = tf X log( N / df ) tf ( term frequency ) : 현재 문서에서의 빈도수df ( document frequency ) : 이 단어가 나오는 문서의 총 개수 * tf - idf vecter : BoW vector 에서 tf 점수를 idf 로 normalize * 2024. 5. 14.
단어의 표현 방법 Local Representation특정 단어를 1개의 벡터에 매핑 ( ex: dog - 1 , cat - 2 ) 1. One-hot Vector 한 단어를 1개의 벡터와 매핑 ex) dog - [0,0,1,0,0] 2. N-gramn-1개의 단어 시퀀스를 1개의 벡터와 매핑ex) I am - [0,0,0,0,1] 3. Bag of Words문장에 나온 각 단어의 빈도수를 한개의 벡터에 저장"I and you and my brother are students"(1) 해당 문장을 단어집합으로 만듦dict = {I  : 0 , and : 1 , you : 2 , my : 3 , brother : 4 , are : 5 , students : 6}(2) 크기가 n(단어 개수)=6 인 벡터 생성BoW = [0,0.. 2024. 5. 14.
LM ( 언어모델 ) LM단어 시퀀스(문장)에 확률을 할당하는 모델 문장에 확률 할당이 필요한 경우 1. 기계 번역 (Machine Translation)P(나는 버스를 탔다) > P(나는 버스를 태운다) 2. 오타 교정 (Spell Correction)선생님이 교실로 부리나케P(달려갔다) > P(잘려갔다) 3. 음성인식 (Speech Recognition)P(나는 메롱을 먹는다)   n-gram LM한번의 n개의 단어를 묶어 생각하는 것 1. uni - gramP("I was student") = P("I") x P("was") x P("student")1. 각 단어가 나타날 확률은 단어 별 빈도수를 계산해서 전체 단어 수로 나누어준다.2. 문장 전체의 확률은 간단하게 곱해준다.*단어의 순서를 전혀 고려할 수 없음* => .. 2024. 5. 14.
데이터 분리 1. X, y 분리 (1) zip 함수를 이용X, y = zip([['a', 1 ], ['b', 2 ], ['c', 3 ]])# 리스트 변수명을 사용할 경우data = [['a', 1 ], ['b', 2 ], ['c', 3 ]]X, y = zip(*data) (2) 데이터프레임 이용values = [['hi' , 1 ], ['bye', 0 ], ['hello' , 1 ]]columns = ['인사' , '종류' ]df = pd.DataFrame(values, columns = columns) (3) numpy 이용np_array = np.arange(16).reshape((4,4))#마지막 열은 y값으로 사용X = np_array[:,:3]y = np_array[:,3] 2. train , test 데이.. 2024. 5. 14.
Keras(케라스)의 텍스트 전처리 케라스 라이브러리from tensorflow.keras.preprocessing.text import Tokenizer 단어집합 생성방법#모든 단어를 단어집합으로 만드는 경우tokenizer = Tokenizer() #빈도수 순으로 상위 n개의 단어만 사용하고 싶은경우 tokenizer = Tokenizer(num_words = n , oov_token ='OOV') # n개의 단어만 단어집합으로 만들고 나머지는 oov처리# fit_on_texts() 안에 corpas를 입력으로 하면 빈도수를 기준으로 단어 집합을 생성tokenizer.fit_on_texts(preprocessed_senteces) 각 단어마다 부여된 숫자 확인 방법tokenizer.word_index 각 단어의 빈도수 확인 방법toke.. 2024. 5. 14.