Natural Language Processing

ai.stanford.edu/~amaas/data/sentiment/ Sentiment Analysis Publications Using the Dataset Andrew L. Maas, Raymond E. Daly, Peter T. Pham, Dan Huang, Andrew Y. Ng, and Christopher Potts. (2011). Learning Word Vectors for Sentiment Analysis. The 49th Annual Meeting of the Association for Computational Linguistics (A ai.stanford.edu 스탠퍼드 대학교 인공지능 연구팀의 원본 자료로 classification 진행 import glob import os f..
word2vec의 개념을 문장이나 문서 전체로 확장시켜 활용한다. 기존 단어들에 근거해서 다음 단어를 예측함으로써 단어 벡터들을 학습한다는 착안을 문장이나 문단, 문서 벡터의 학습으로 확장할 수 있다. doc2vec은 점진적 학습이 가능하다. 훈련을 마친 모형에 새로운 문서들을 입력해서 새로운 문서 벡터들을 생성한다. 추론 단계에서 알고리즘은 동결된 단어벡터 행렬과 해당 가중치들로 새 문서 벡터들을 계산해서 문서 행렬에 추가한다. 문서 벡터 훈련 genism 패키지에있는 doc2vec을 위한 함수들을 이용해 문서 벡터 생성 사용할 cpu 코어 수 import multiprocessing num_cores = multiprocessing.cpu_count() genism의 doc2vec과 말뭉치 문서 벡터..
nlpia를 통해 미리 훈련된 구글 뉴스 word2vec 모형을 받아온다. 단어 수 30만개 import os from nlpia.loaders import get_data from gensim.models.word2vec import Word2VecKeyedVectors wv = get_data('word2vec') len(wv.vocab) #3000000 n-gram 단어들이 '_' 문자로 연결된 것을 확인 할 수 있다. import pandas as pd from tqdm import tqdm vocab = pd.Series(wv.vocab) vocab.iloc[1000000:1000006] # Starwood_Hotels_HOT Vocab(count:2000000, index:1000000) # ..
word2vec은 NLP에 혁신을 가져왔지만 반드시 역전파를 이용해 훈련을 해야한다는 신경망 의존이 크다. 이를 스탠퍼드 연구팀은 SVD를 적용해 word2vec으로 산출한 것과 동일한 두개의 가중치 행렬을 통해 역전파 수렴이 불가능한 경우를 발견 했다. 이를 해결하기 위해 Glove 전역에 대한 단어 공동 출현 빈도를 최적화 시켜 해결했다. Word2vec이 큰 말뭉치를 대상으로만 훈련이 가능한 반면 Glove는 더 작은 말뭉치로도 훈련이 가능하다. GloVe의 장점 훈련이 빠르다. RAM과 CPU 효울성이 좋다. 적은 말뭉치도 활용이 가능하다. 같은 훈련 자료로 훈련했을 떄 word2vec 보다 더 정확한 결과를 제공한다.
BERT는 2018년 구글에서 공개한 논문인 BERT: Deep Bidirectional Transformers for Language Understanding에서 제안된 모델로서 비지도 학습을 통해 딥러닝 모델 들어가기 전에 사전 학습을 진행하는 모델이다. 버트의 특징은 다른 사전 모델 기법인 GPT나 ELMo와 다르게 양방향성을 가지고 학습한다. 마스크 언어 모델을 학습하기 때문이다. 버트는 word2vec의 CBOW 처럼 주변단어를 통해 의미를 파악한다. 마스크 언어 모델이란 양방향성을 가지고 언어 모델을 학습하기 위한 방법으로 입력 문장이 주어진 경우 일부 단어들을 마스킹해서 해당 단어를 모델이 알지 못하도록 가린다. 그 후 모델을 통해 마스킹된 단어가 무엇인지 예측한다. 입력값으로 들어간 문장 ..
다양한 기업에서 미리 훈련된 단어 벡터 모형을 공개했다. 그중 genism이 가장 인기가 있다. NLPIA 패키지를 통해 실습 from nlpia.data.loaders import get_data word_vectors = get_data('word2vec') gensim.models.utils_any2vec:loaded (3000000, 300) matrix load 어휘가 작으면 단어 벡터 모형의 위력도 그만큼 줄어든다. 해당 단어 벡터가 존재하지 않는 단어들을 포함한 문서에 대해서는 NLP 파이프라인이 좋은 성과를 내지 못한다. 따라서 단어 벡터 모형의 크기는 개발 도중에만 제한하는 것이 바람직하다. genism.KeyedVectors.most_similar() 메서드는 주어진 단어 벡터와 가장 ..
자주 나오는 바이그램 활용 함께 자주 등장하는 단어 조합이 있을 때, 예를 들면 '대한' 뒤에는 '민국'이 등장할 때가 많다. 이 둘은 하나의 바이그램(2-그램)을 형성한다. 대한 뒤에 민국을 예측하는 것은 당연한 결과임에 예측으로 얻는 것이 없다. 따라서 이 두 단어를 합쳐서 나타내어 2-그램, 3-그램을 형성해 word2vec에 포함한다. 2-그램, 3-그램들을 공둥 출현 횟수에 기초한 score을 이용해 식별한다. $ score(w_i,w_j)=\frac{count(w_i,w_j) - \sigma}{count(w_t) \times count(w_j)} $ 바이그램 score function 단어 $w_i$와 $w_j$의 바이그램 점수가 특정 threshold($\sigma$)보다 높으면 그 둘의 쌍..
연속 단어 모음 접근 방식 연속 단어 모음(CBOW) 접근 방식에서는 주어진 단어들에 기초해서 그 중심 단어를 예측한다. 따라서 하나의 훈련 견본은 하나의 입력 단어와 다수의 출력 단어들이 아니라 다수의 주변 단어들과 하나의 중심 단어로 구성된다. 다수의 주변 단어들은 멀티핫 벡터로 표현한다. 이 멀티핫 벡터는 주변 단어들의 원핫 벡터들을 모두 합한 것이다. painted가 기대출력일 때 $W_{t-2}$ = Claude $W_{t-1}$ = Monet $W_{t}$ = painted $W_{t+1}$ = the $W_{t+2}$ = Grand 문서를 토큰화해서 얻은 주변 단어 멀티핫 벡터와 목표 단어 원핫 벡터의 쌍들로 이루어진 훈련 자료 집합으로 신경망을 훈련한다. 즉 목표 단어 $w_t$의 원핫 벡..
다했다
'Natural Language Processing' 카테고리의 글 목록 (4 Page)