[KT AIVLE School(에이블스쿨)] - 8주차 후기(언어지능 딥러닝)
에이블 스쿨 8주차(9.25 ~ 9.29) - 4기 AI트랙
3차 미니프로젝트 마지막 날(3일차)은 7주차 후기에 작성 완료!
이번주는 언어지능 딥러닝 수업을 2일동안 진행하였고 추석 연휴가 시작되었다 ( ᵔᵒᵔ )ᵍᵒᵒᵈᵎᵎ
시각지능 딥러닝을 배울 땐 학부생 때 진행했던 간단한 프로젝트나 기계학습 수업에서 이미지 학습하는 실습들을 몇 번 진행해 본 경험이 있어서 새로 배운다기보다는 좀 더 확장시키는 느낌이 들었었다.
하지만 텍스트 데이터를 가지고 진행하는 딥러닝은 처음이여서 어떤 방식으로 유사도를 판단하고 결과가 나오는지 궁금하기도 하였다. 이틀 동안 이론도 좀 배우면서 feedparser, newspaper3k, konlpy 등 새로운 라이브러리를 사용하여 RSS에서 xml 태그별로 정보를 추출한 뒤 인터넷 신문기사를 분석하는 실습도 진행해보았다.
이후 수업시간에 진행할 실습을 위해.. 연휴에 복습을 꼭 해보자...·ࡇ·
언어지능 딥러닝
TF-IDF
- TF(Term Frequency) : 단어 빈도
- IDF(Inverse Document Frequency) : 역문서 빈도
딥러닝 기반의 유사도 판단
1) Jaccard Similarity(자카드 유사도)
: 두 집합 간의 유사도 측정
0 ~ 1 사이의 값을 가지며 두 집합이 동일한 경우 1, 전혀 겹치지 않는 경우 0
import numpy as np
from sklearn.metrics import accuracy_score
print(accuracy_score(np.array([1,3,2]), np.array([1,4,5])))
# 결과 : 0.3333333333333333
print(accuracy_score(np.array([1,1,0,0]), np.array([1,1,0,2])))
# 결과 : 0.75
▶ jaccard_similarity_score 대신 accuracy_score로도 사용 가능
2) Cosine Similarity(코사인 유사도)
: 두 벡터 간의 유사성 측정
-1 ~ 1 사이의 값을 가지며, 두 벡터가 완전히 반대방향인 경우 -1, 동일한 방향인 경우 1
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity
sentence=("코사인 유사도를 계산하기 위한 예시 문장이다.",
"딥러닝 기반의 유사도를 판단하는 방법 중 하나로 코사인 유사도가 있다.")
tfidf_vectorizer = TfidfVectorizer(max_features=100)
tfidf_matrix = tfidf_vectorizer.fit_transform(sentence)
print(cosine_similarity(tfidf_matrix[0], tfidf_matrix[0]))
# 결과 : [[1.]]
print(cosine_similarity(tfidf_matrix[0], tfidf_matrix[1]))
# 결과 : [[0.07397129]]
▶ TfidfVectorizer()을 사용하여 텍스트 데이터를 수치화하여 벡터로 변환한 뒤 유사도 측정
비지도 학습
: 데이터에 대한 명시적인 정답이 제공되지 않은 상태에서 데이터의 패턴이나 구조를 스스로 학습하도록 설계
주로 차원 축소, 클러스터링 등에 사용
K-Means 클러스터링
- k개의 클러스터 중심을 무작위로 초기화
- 데이터포인트는 가장 가까운 클러스터 중심에 할당(유클리드 거리 or 맨해튼 거리 측정방법 사용)
- 클러스터 중심은 할당된 모든 데이터 포인트의 평균으로 업데이트
- 2-3번째 단계가 반복
Word Embedding
: 단어를 벡터로 변환하는 방법 제공, 고차원 단어 공간을 저차원으로 축소
ex ) Word2Vec : 텍스트 데이터를 사용하여 단어 벡터를 학습하는 방법