전체 글 55

[3-2] Word2Vec란?

Word2Vec은 2013 구글 연구 팀이 발표했고 가장 널리 쓰이고 있는 단어 임베딩 모델이다. ​ Word2Vec 기법은 두 개의 논문으로 나누어 발표되었다. ​ 논문은 다음과 같다. (Mikolov et al., 2013a) https://arxiv.org/pdf/1301.3781.pdf%C3%AC%E2%80%94%20%C3%AC%E2%80%9E%C5%93 (Mikolov et al., 2013b) https://proceedings.neurips.cc/paper/2013/file/9aa42b31882ec039965f3c4923ce901b-Paper.pdf ​ ​ ​ 여기에서 (Mikolov et al., 2013a)에는 Skip-Gram 과 CBOW라는 모델이 제안된다. ​ Skip-Gram은 타..

[3-1] NPLM이란?

NPLM (Neural Probabilisitic Languague Model)은 기존의 통계 기반 언어 모델의 단점을 어느정도 극복시킨 모델이다. ​ 그렇다면, 기존의 통계기반 언어 모델은 무엇인가? ​ 앞서, 언어 모델이란 단어 시퀀스(순서) 에 확률을 부여하는 모델이다. ​ 흐름을 설명해 보겠다. ​ ​ 1. 만약 '영원히 기억될 최고의' 라는 표현 다음에 '명작이다' 라는 단어가 나타날 확률 을 구해보자 이는 최대우도추정법으로 유도 가능하다. 최대우도추정법에 대한 설명은 내 블로그 NLP 카테고리를 보면 이해가 가능하다. 여기서 우리는 최대우도추정법을 이용해 '영원히' ,'기억될' ,'최고의' 라는 변수만을 이용해 본래 변수인 '명작이다'라는 변수까지 추정해 볼 수 있다는 것이다. ​ 하지만, 문..

[2-5] soynlp의 띄어쓰기 교정 모듈

soynlp에서는 띄어쓰기 교정 모듈도 제공한다. ​ => 학습 데이터에서 특정 문자열 앞뒤로 공백이 다수 발견되면 이를 학습하여 교정하는 방식이다. ​ ​ 학습하는 코드는 다음과 같다. 학습 이후 교정을 수행해 보았다. 띄어쓰기가 잘 된 것을 확인할 수 있다. ​ ​ ​ + soynlp 형태소 분석이나 BPE(Byte Pair Encoding) 방식의 토크나이즈 기법은 띄어쓰기에 따라 분석결과가 크게 달라짐. => 모델 학습 전 띄어쓰기 교정을 먼저 적용하자! ​ ​ +BPE 란? : 연속적으로 가장 많이 등장한 글자의 쌍을 하나의 글자(Byte)로 병합하고 이를 최대한으로 수행함. => 이걸 연속적으로 해가면서 voca에 있는 알파벳과 알파벳 쌍(pair)을 업데이트 하여 늘린다. => 새로운 단어가..

[1-6] 도커(Docker)에서 파이썬(python)코드로 작업하기

가장 먼저 도커는 리눅스와 맥os에서 간단히 설치 할 수 있지만, 많은 사람들이 사용하는 Windows 에서는 불가능하다. 그래서 우회하는 방법이 WSL(Windows Subsystem for Linux)이고 정확하게 말하자면 WSL2 이다. ​ 1. WSL을 설치하고 Windows에서 Linux를 실행시킨다. 2. WSL은 기본으로 1이 설정되어 있으므로 WSL을 2로 바꾸어 준다. (제대로 바뀌었는지 확인 필) 2. Linux(Ubuntu)에서 Docker를 설치한다. ​ 그러면 Windows 환경에서 도커를 활용 할 수 있다. ​ 위의 과정은 구글 검색을 통해 간단하게 따라 할 수 있다. ​ ​ ----------------------------------------------------------..

[1-5] 최대우도법

: 어떤 사건을 일으키게 만든 확률분포의 특성을 추정하는 방법 중 하나로, 표본을 얻은 후 이 표본을 이용해 원래의 확률분포를 알아내는 기술이다. ​ 간단히, 표본 5개 x={1,4,5,6,9} 를 추출했을 때 정규분포 후보군(출처: https://angeloyeo.github.io/2020/07/17/MLE.html) 위 5개를 획득한 확률 분포는 파란색 보다는 주황색일 가능성이 더 크다. ​ 이처럼 우리는 표본으로부터 원래의 확률 분포를 예측하는 것이 가능하다. 하지만 표본으로 부터 100% 정확한 확률분포는 얻을 수 없으므로 가장 그럴듯 한 확률분포를 얻어내기 위해 노력해야 한다. 이때 사용하는 방법이 미분계수를 이용하는 방법이다. ​ 다양한 알고리즘에서 자주 사용하는 설계 방식중 하나를 소개하겠다..

[1-4] DAN(Deep Averaging Network)란? (+Dropout)

http://file:///C:/Users/gypsi/Downloads/DAN+%EB%85%BC%EB%AC%B8.pdf 다음 링크에서 관련 논문과 간단한 정리를 볼 수 있다. ​https://medium.com/tech-that-works/deep-averaging-network-in-universal-sentence-encoder-465655874a04 Deep Averaging network in Universal sentence encoder Word embeddings are now state of art for doing downstream NLP tasks such as text classification, sentiment analysis, sentence similarity… medium...

[1-3] TF-IDF 란?

TF-IDF 는 간단히 표현하자면 모든 문서에서 자주 등장하는 단어는 중요도가 낮다고 판단하고(조사 등..), 특정 문서에서만 자주 등장하는 단어는 중요도가 높다고 판단하여 (주제를 담고 있는 단어일 확률 높으므로) 하나의 값으로 나타내는 것이다. 그래서 TF-IDF값이 높은 단어일 수록 주제를 담고있는 단어라고 말 할 수있다. ​ TF-IDF식 (출처: https://www.affde.com/ko/tf-idf-can-it-really-help-your-seo.html) 1. TF는 특정 문서에서만 쓰인 단어 사용 수이다. 2. DF는 특정 단어가 나타난 문서의 수이다. 그러므로 DF값이 클수록 범용적인 단어라고 할 수 있다. 3. IDF는 N(문서 개수)를 DF로 나누고 log를 취해준다. 그러므로 I..

[2-4] soynlp 형태소 분석기 사용하기

soynlp 형태소 분석기는 비지도학습 형태소 분석기이다. 즉, 다른 형태소 분석기(은전한닢,꼬꼬마 등)와는 달리 데이터의 패턴을 모델 스스로 학습을 한다. ​ 오픈소스 패키지는 다음에서 사용하였다. https://github.com/lovit/soynlp GitHub - lovit/soynlp: 한국어 자연어처리를 위한 파이썬 라이브러리입니다. 단어 추출/ 토크나이저 / 한국어 자연어처리를 위한 파이썬 라이브러리입니다. 단어 추출/ 토크나이저 / 품사판별/ 전처리의 기능을 제공합니다. - GitHub - lovit/soynlp: 한국어 자연어처리를 위한 파이썬 라이브러리입니다. github.com soynlp를 사용하기에 앞서 전처리 된 데이터가 필요하다. 이 데이터는 네이버 영화 리뷰 말뭉치를 이용하..

[2-3] 형태소 분석기(ex 은전한닢)에서 주의해야 할 점

형태소 분석기에서 주의해야 할 점이 있다. ​ 만약 우리가 '가우스전자' 라는 기업의 데이터 분석 팀에 속해있다면 우리는 가우스전자라는 토큰은 섬세히 처리해야 한다. ​ 그 이유를 보여주겠다. >>> from konlpy.tag import Mecab >>> tokenizer =Mecab() >>> tokenizer.morphs("가우스전자 텔레비전 정말 좋네요") ['가우스', '전자', '텔레비전', '정말', '좋', '네요'] KoNLPy에서 은전한닢을 이용하여 형태소분석을 하였지만 가우스전자를 가우스,전자 로 나뉘어서 분석해버린다. ==> 단어 임베딩 품질이 떨어진다. ​ 그래서 우리는 '가우스전자' 라는 단어를 사용자 사전에 추가해서 강제적으로 하나의 토큰으로 분석될 수 있도록 할 수 있다. ..

[2-2] Khaiii 사용법

참고자료 - https://fish-tank.tistory.com/103 ​ colab 에서 작업해보았다. ​ !git clone https://github.com/kakao/khaiii.git !pip install cmake ​ !mkdir build !cd build && cmake /content/khaiii !cd /content/build/ && make all !cd /content/build/ && make resource !cd /content/build && make install !cd /content/build && make package_python !pip install /content/build/package_python 다음을 통해 kahiii를 다운받는다 ​ ​ 이후 fro..