본문 바로가기

[NLP] NPLM(Neural Probabilistic Language Model) 이 포스트는 책 '한국어 임베딩(자연어 처리 모델의 성능을 높이는 핵심 비결 Word2Vec에서 ELMo, BERT까지, 이기창 저)'을 기반으로 작성되었습니다. NPLM (Neural Probabilistic Language Model)은 2003년에 개발된 임베딩 기법으로, n-1개 단어 순서 기반으로 다음 n번째에 등장할 단어를 맞추는 n-gram 언어 모델이다. (논문 참고) 이는 기존의 언어 모델이 가지고 있던 문제점을 보완한 모델이다. 존재하지 않는 n-gram에 대한 확률 0으로 부여하는 문제점 차원의 저주 : n을 크게 설정하면 위와 같이 확률이 0이 되는 경우가 빈번하게 발생하는 문제점 단어 간 유사도를 계산할 수 없는 문제점 전반적인 모델 구조는 다음과 같으며, 아래부터 입력받아 위에서..
[NLP] 한국어 형태소 분석 이 포스트는 책 '한국어 임베딩(자연어 처리 모델의 성능을 높이는 핵심 비결 Word2Vec에서 ELMo, BERT까지, 이기창 저)'을 기반으로 작성되었습니다. 한국어 NLP를 위해 사용할 수 있는 공개된 데이터 위키백과 : 한국어 말뭉치(corpus) 문서 중 가장 방대한 데이터 (https://dumps.wikimedia.org/kowiki/) (TMI - 위키백과는 누구나 편집할 수 있는 문서라서 자연어처리에서는 잘 이용하지 않을 것 같았다. 하지만 실제 현업에서뿐만 아니라 NLP 연구에서 보편적으로 쓰이는 데이터 중 하나인 것 같다. 관련 논문을 찾아봐도 wiki 관련 내용이 많이 나오고, 인턴을 시작할 때 가장 먼저 처리한 데이터도 위키백과였다.) KorQuAD : LG CNS에서 구축한 문서..
[NLP] 임베딩(Embedding) 방식의 종류 이 포스트는 책 '한국어 임베딩(자연어 처리 모델의 성능을 높이는 핵심 비결 Word2Vec에서 ELMo, BERT까지, 이기창 저)'을 기반으로 작성되었습니다. 지난 포스트에서 모델에게 자연어를 입력하기 위해 임베딩을 실시한다는 내용을 다뤘다. 그렇다면 이 임베딩은 어떻게 만들까? 문장에 많이 쓰인 단어가 무엇인지, 어떤 순서로 등장하는지, 어떤 단어가 같이 나타나는지 등에 따라 임베딩이 진행되는데, 그 종류에 대해 알아보자. Bag of Words : 문장에 많이 쓰인 단어는? 주제가 비슷한 문서는 등장하는 단어도 비슷할 것이다. 즉, 단어 순서와 상관없이 많이 등장하는 단어는 그 주제랑 관련이 있을 것이다. 이러한 전제 하에 만드는 방식이 Bag of Words 임베딩이다. * Bag : 순서를 고..
[Python] 외부 경로에 있는 py 파일 import하기 import sys sys.path.append('[해당 py 파일이 있는 경로]') from [py 파일명] import * 참고자료: https://codechacha.com/ko/how-to-import-python-files/
[Git] git clone, push, pull 할 때 username / password 함께 입력해주기 사내 enterprise github를 사용하다 보니 다른 repository에서 git clone을 할 때 번거로운 점이 있었다. 기존 방식대로 git clone 후 git 주소를 입력하면 파일을 다운받을 때마다 username과 password를 입력하라는 창이 떴다. 몇백 개의 파일을 받아야하는데 일일히 다 입력할 수 없어 방법을 찾다가, 아주 쉬운 해결책이 있었다. (하지만 비밀번호가 그대로 노출되기 때문에 좋은 방법은 아니라는 생각이 든다. 또한 rfc에서 정의하고 있는 url 포맷이라고 한다. https://www.rfc-editor.org/rfc/rfc1738#section-3.1 - 댓글 작성자님 감사드립니다😄) git clone https://[사용자ID]:[비밀번호]@[git주소] 기존..
[Linux] 리눅스에서 jupyter notebook 설치하기 기존에는 linux 자체에서 vi나 nano로 코드를 작성했는데, 로컬에서 작성한 코드를 그 어두컴컴한 화면에서 수정하려니 작업하기에 너무 번거롭고 불편했다. 그래서 다른 분이 jupyter notebook을 사용하여 작업하시는걸 보고 시도해봤더니, 기존 윈도우 사용자이던 나에게는 정말 숨통이 트이는 기분이었다. 많은 리눅스 유저들이 jupyter notebook으로 보다 편한 환경에서 작업할 수 있었으면 좋겠다는 마음으로, 어떻게 linux에 jupyter notebook을 설치하는지 알아보자. $ pip install notebook # notebook 설치 $ jupyter notebook --generate-config # config 파일 생성 $ vi ~/.jupyter/jupyter_note..
[NLP] 임베딩(Embedding) 개념 이 포스트는 책 '한국어 임베딩(자연어 처리 모델의 성능을 높이는 핵심 비결 Word2Vec에서 ELMo, BERT까지, 이기창 저)'을 기반으로 작성되었습니다. 임베딩(embedding)이란? 자연어처리에서 임베딩(embedding)이란, 일반적으로 사람들이 쓰는 언어(자연어)를 기계가 알아들을 수 있게 수치화(벡터화)하는 것으로, 단어나 문장을 벡터 공간에 끼워 넣는다(embed)는 의미를 가지고 있다. 임베딩을 통해 가능해진 것 단어나 문장 사이의 유사도 계산 코사인 유사도가 가장 높은 단어를 구하는 등의 계산 가능 (+ t-SNE 차원 축소 기법으로 시각화 가능) 단어들 사이의 의미/문법적 정보 도출 벡터 간 연산으로 단어 사이 문법적 관계 도출 (평가 방법으로는 단어 유추 평가(word anal..
[Python] itemgetter를 이용하여 index로 list 추출하기 from operator import itemgetter a = [1,2,3,4,5,6] list_index = [1,3,5] itemgetter(*list_index)(a) >>> [2,4,6]