코딩스뮤:)

    [그래프 탐색] 파이썬으로 구현하는 DFS, BFS

    [그래프 탐색] 파이썬으로 구현하는 DFS, BFS

    그래프 탐색이란?그래프의 각 노드를 방문하는 것으로, 크게 깊이 우선탐색(Depth First Search, DFS)과 너비 우선 탐색(Bredth-First Search, BFS) 알고리즘이 있습니다.  DFS는 주로 재귀 혹은 스택으로 구현하게 되며, 백트래킹 문제에서 주로 사용됩니다. BFS의 경우 주로 큐로 구현하며, 최단 경로를 구하는 문제에서 자주 사용됩니다.  파이썬으로 그래프 입력받기그래프 탐색 방법을 구현하기 전, 파이썬에서 그래프를 입력받는 방법에 대해서 알아보도록 하겠습니다. 파이썬에서 제공하는 List, deque등 다양한 자료형으로 저장할 수 있지만, 개인적으로 파이썬의 Dictionary 자료형으로 입력받는 것을 가장 선호해 이 방법을 소개하고자 합니다. 앞의 그림과 같이 노드 ..

    [문자열] 파이썬으로 구현한 유효한 팰린드롬(Palindrome)

    [문자열] 파이썬으로 구현한 유효한 팰린드롬(Palindrome)

    팰린드롬(Palindrome)이란? 앞뒤가 똑같은 단어나 문장으로, 뒤집어도 같은 말이 되는 단어 또는 문장을 팰린드롬, 우리말로는 회문이라고 부릅니다. 영어의 회문으로는 "No lemon, no melon"처럼 뒤집어도 같은 알파벳 순서를 가지는 문장을 예시로 들 수 있습니다. 예시와 같이 회문은 보통 대소문자와 공백, 특수문자를 구별하지 않습니다. (단, 문제마다 정의하는 회문이 다를 수 있습니다) 파이썬으로 유효한 팰린드롬 검사하기 자료형에 따른 구현 방법 1. 리스트로 구현 2. 덱(deque)으로 구현 각 방법을 보기 전, 입력으로 들어오는 strs은 다음의 정규식을 통해 대소문자/특수문자/공백 구분 없이 유효성을 검사할 수 있도록 처리되었습니다 strs = strs.lower() strs = ..

    [NLTK] 자연어 처리를 위한 패키지

    [NLTK] 자연어 처리를 위한 패키지

    자연어처리(NLP, Natural Language Processing)를 위해서는 각 테스크에 맞는 전처리(preprocessing)과정이 필수적으로 필요합니다. 본 게시글에서는 전처리를 위한 패키지인 NLTK를 간단한 예제와 함께 알아보도록 하겠습니다. NLTK에서는 다양한 기능을 제공하지만, 본 글에서는 아래의 기능 위주로 다룹니다 Searching Text Word Statistics Searching Text NLTK에서 제공하는 텍스트 예제로 진행하기 위해, book을 불러오도록 하겠습니다. import nltk from nltk.book import * NLTK에서 book을 불러올 경우 아래의 9개의 책의 텍스트를 불러올 수 있습니다. text1에 저장된 Moby-Dick으로 nltk를 적용..

    윈도우 코딩용 폰트 D2Coding 설치하는 방법

    윈도우 코딩용 폰트 D2Coding 설치하는 방법

    네이버에서 개발한 코딩용 폰트 D2Coding은 아래 깃허브 사이트에서 다운로드 할 수 있습니다. https://github.com/naver/d2codingfont/releases Releases · naver/d2codingfont D2 Coding 글꼴. Contribute to naver/d2codingfont development by creating an account on GitHub. github.com 해당 게시물 작성 기준(22.12.19)으로 최신 버전은 Ver 1.3.2입니다. 아래 사진의 노란라인을 쳐둔 D2Coding-Ver1.3.2-20180524.zip 파일만 다운 받으시면 됩니다 zip 파일을 압축해제까지 하면 다음의 경로로 들어가 아해의 .tff 파일 설치를 눌러줍니다. ..

    simCLR을 통해 Contrastive Learning 이해하기

    simCLR을 통해 Contrastive Learning 이해하기

    해당 게시글은 Ekin Tiu님의 Understanding Contrastive Learning글을 참고하여 번역 및 요약한 글입니다. What is Contrastive Learning? Contrastive learning is a machine learning technique used to learn the general features of a dataset without labels by teaching the model which data points are similar or different. 예로, 고양이와 개에 대해 아무런 정보가 없는 어린아이에게 아래의 세 장의 사진을 보여준다고 생각해봅시다. 아이가 두 동물에 대한 사전지식이 없다고 해도 "뾰족한 귀", "긴 수염" 등의 특징을 통..

    머신러닝의 종류: 지도학습과 비지도학습

    머신러닝의 종류: 지도학습과 비지도학습

    머신러닝의 종류: 지도학습과 비지도학습 1. 머신러닝 시스템의 종류 데이터에 레이블(label)의 유무, 학습하는 동안 감독 형태/정보량으로 구분 기준을 둘 경우 머신러닝은 크게 지도학습과 비지도 학습으로 나뉘게 됩니다. 2. 지도 학습(Supervised Learning) 훈련 데이터에 레이블(label)이 주어지는 경우로, 다음과 같이 학습 데이터 셋이 구성되어 있다고 볼 수 있습니다. Given={(x(1),y(1)),,(x(N),y(N))} 지도학습의 목표는 학습데이터에는 없는 새로운 데이터 x가 들어왔을 때 y를 올바르게 예측하는 것입니다. Goal=Learn a rule (𝑓:𝑥𝑦) 지도학습에는 크게 이산적인(Disc..

    [vim/vi] 기본 설정하기(1): vim 설치, 자동 들여쓰기, 줄번호 항상 표시

    [vim/vi] 기본 설정하기(1): vim 설치, 자동 들여쓰기, 줄번호 항상 표시

    리눅스 터미널과 Mac OS의 iTerm에서 vi/vim 을 처음 사용할 때 설정해두면 좋은 세팅을 소개합니다. 0. vim 설치 만약 vim이 없다면 다음의 명령어로 설치를 먼저 진행해주시면 됩니다. sudo apt-get install vim 1. 자동 들여쓰기 pycharm, vs code와 다르게 vi를 써서 코딩을 한다면 줄마다 들여쓰기(indent)를 일일이 해줘야 합니다. 이를 자동으로 해주기 위해서는 아래의 코드를 ~/.vimrc 파일에 추가해주면 됩니다. >> 아래 코드로 vimrc 파일 오픈 vi ~/.vimrc >> 아래 코드를 vimrc 파일에 처음에 추가 set ts=8 set sw=4 set sts=4 set smartindent set cindent 2. 줄번호 항상 표시 기존..

    End-to-End Memory Networks, 엔드-투-엔드 메모리 네트워크

    End-to-End Memory Networks, 엔드-투-엔드 메모리 네트워크

    End-to-End Memory Networks 2015년 NIPS에 FaceBook AI Research가 발표한 논문으로 당시 자연어처리 분야에서 가장 좋은 성능을 보여주었던 모델 중 하나입니다. 기존의 일반적인 신경망 모델과 다르게 메모리(Memory)라는 구조를 사용한다는 점이 가장 큰 특징입니다. Model Architecture(1): Single Layer 이해를 돕기 위해 먼저 본 논문에서 제안하는 모델의 싱글 레이어 구조를 살펴보도록 하겠습니다. 모델의 입력값으로는 Context 문장, Question 문장이 들어가고 학습시 업데이트 되는 파라미터는 Fig1.의 Embedding A,B,C와 Weight Vector W입니다. 모델의 학습 과정은 크게 다음과 같이 세 단계로 이루어..