본문 바로가기

전체 글

코딩테스트1. 방학 기간 중 코딩테스트 교육을 4일 동안 받게 되었다. 필자는 교육내용이 정말 유익해서 블로그 정리를 통해 공부하고자 한다. 먼저 코딩테스트의 기본이 되는 시간복잡도 표기법에 대해 간단히 짚고 넘어가자. 시간복잡도는 본 포스팅에서 다루기엔 양이 방대하므로, 시간복잡도에 대해 자세히 알고 싶다면, 아래의 포스팅에서 확인할 수 있다. https://chancoding.tistory.com/43 [Python] 파이썬 자료형 및 연산자의 시간 복잡도(Big-O) 총 정리 시간 복잡도를 알아야 하는 이유 백준에서 알고리즘을 풀다 보니 '시간 초과'되는 경우를 자주 겪었습니다. 문제를 풀고 나서도 결과 시간이 다른 사람들보다 상당히 높게 나오는 경우가 있었는 chancoding.tistory.com 간단하게 빅.. 더보기
ch6. 토픽 모델링(Topic Modeling) 문서 집합에서 주제를찾아내기 위한 기술 가정 : "특정 주제에 관한 문서에서는 특정 단어가 자주 등장할 것이다" 대표적인 기법 잠재의미분석 잠재 디리클레 할당 기법 잠재 의미 분석(Latent Semantic Analysis) 목표 : 문서와 단어의 기반이 되는 잠재적인 토픽을 발견 가정 : 문서에 있는 단어들의 분포 방법 : DTM행렬에서 단어-토픽 행렬, 토픽-중요도 행렬, 토픽-문서 행렬로 분해 잠재 디리클레 할당(Latent Dirichlet Allocation) 사용자가 토픽의 개수를 지정해 알고리즘에 전달 모든 단어들을 토픽 중 하나에 할당 모든 문서의 모든 단어에 대해 단어w가 가정에 의거, $$p(t|d)$$ , $$p(w|t)$$에 따라 토픽을 재할당하고, 이를 반복합니다. 데이터준비 앞.. 더보기
ch4. 문서분류(Document Classification) 이 글은 scikit에서 지원하는 fetch_20newsgroups데이터로 문서분류를 실습하는 코드를 정리한 글이다. - logistic regression - 나이브베이즈분류 - SVM - Decision Tree - XGBoost - 정밀도와 재현률 - Gridsearch 에 대한 내용으로 구성되어있다. 데이터준비 - scikit-learn이 제공하는 20개의 주제를 가진 뉴스그룹데이터를 사용한다. - 텍스트는 CountVectorizer를 거쳐 DTM(Document Term Matrix)행렬로 변환한다. from sklearn.datasets import fetch_20newsgroups from sklearn.feature_extraction.text import CountVectorizer f.. 더보기
ch5. 의미연결망 분석(SNA) - 사회 연결망 분석은 분석 대상들의 관계를 연결망 구조로 표현하는 분석기법 입니다. - 주로 친구 관계, 전력 관계를 분석할때 쓰임. - 사회 연결망 분석을 텍스트 단어 관계에 적용한것이 Semantic Network Analysis § 일정한 범위 내에서 동시 등장하는 어휘가 있으면 서로 연결된 것으로 간주하고. 분석한다. 위 그림은 네이버 카페의 리뷰 댓글로 SNA를 진행한 모습이다. 이런식으로 어떤 단어가 의미가 있는지, 다른 단어와 어떤 연관이 있는지 분석할 수 있다. 일정한 범위 내에서 등장하는 어휘를 편하게 알기 위해서, n-gram import nltk nltk.download('punkt') from nltk import word_tokenize, bigrams sentence 'I lo.. 더보기
ch3. 군집분석 군집분석은 크게 2가지로 나뉜다. nested성질을 띄는 계층적 군집분석과 partitioned성질을 띄는 비계층적 군집분석이다. 계층적 군집분석(Hierarchical Clustering) 각 관측치를 하나의 최초 군집으로 지정 → 한번에 두개씩 하나의 군집을 만듬 → 모든 군집이 하나의 군집이 될때까지 결합 계층적 군집분석은 분할방법에 따라 응집형(agglomerate)와 분리형(divisive)dmfh 나뉜다. 각각 "bottom-up" , "top-down"형식이다. 분할적 군집분석(Partitioned Clustering) 처음에 군집수인 k를 지정한 후, 관측치들을 무작위로 k개의 집단으로 분할하고 다양한 기준에 따라 중심값을 수정한다. 이 방식을 반복하며 집단을 재분류한다. - 분할방법에는 .. 더보기
ch2. 키워드 분석(KeywordAnalysis) 이수안 교수님의 유튜브 강의 참조 - 핵심어(keyword)란 텍스트 자료의 중요한 내용을 압축적으로 제시하는 단어 또는 문구 - 핵심어 분석 순서 불용어 제거 어간 추출 형태소 분석 많이 등장하는 형태소의 등장빈도를 분석 → 핵심어 추출~ 가정 - 키워드 분석 활용 : 텍스트의 주제 추정, 텍스트 유사도, 검색결과 우선순위 측정 등 다양하게 사용됨. 이제 실습을 해보자(in colab) 한글폰트 설정 import matplotlib as mpl import matplotlib.pyplot as plt plt.style.use('seaborn-white') %config InlineBackend.figure_format='retina' !apt -qq -y install fonts-nanum import.. 더보기
NLP 기초 - 자연어는 일상생활에서 사용하는 언어 - 컴퓨터가 인간의 언어를 학습하는 방법에는 무엇이 있을까 텍스트분류, 감성분석, 문서요약, 번역, 질의 응답, 음성인식, 챗봇으로 응용이 될 수 있다. 강의를 들은 사람들이라고 가정하고 시작하겠습니다. split()의 기능중.. 생소했던 부분 s = 'No pain no gain' s.split().index('gain') >>> 3 s.split()[2][::-1] >>> on 정규표현식 - 정규표현식은 특정문자들을 편리하게 지정하고 추가, 삭제가 가능합니다. - 전처리에서 아주 많이 사용됨. - re패키치(regular expression) 문법 . 앞의 문자 1개를 표현 ? 문자 한개를 표현하나 존재할 수도, 존재하지 않을 수도 있음(0개 또는 1개) * 앞.. 더보기
우리 어디서 볼까? 정중앙에서 보자 3명이 뭉쳐서 친구들끼리 어디서 볼지 정하는데 한참 걸리는 경우가 있다. 솔직히 장난삼아 해본다. 준이랑 경수랑 볼때, 어디서 만날지 정하다 싸우지말고, 정중앙에서 만나면 어떨까? 코드를 올린다. 주소기업란은 코드 1/3쯤 있다. !pip install folium #지도 다운받는 라이브러리 !pip install geopy #위도,경도 받는 라이브러리 import folium #지도 라이브러리 import numpy as np import matplotlib.pyplot as plt import pandas as pd from geopy.geocoders import Nominatim #위도, 경도 ####### 도로명주소 위도 경도 값으로 바꿔주기 ######## from geopy.geocoders.. 더보기