재형이의 성장통 일지
  • Embedding (2), NLP (1)
    2024년 03월 08일 06시 17분 10초에 업로드 된 글입니다.
    작성자: 재형이
    반응형
     

     

    • 드디어 NLP 시작!!!
    • 세상에는 대단한 사람들이 참 많다. 물론 그들이 열심히 해서 이룬 것들이겠지만... 뒤늦게라도 그 사람들을 따라잡으려고 하다보면 어느 순간 막막해질 때가 있다. 세상은 원래 불공평하다고 하지 않는가... 그걸 받아들이는게 중요한 것 같다
    • 세상이 원래 불공평하다는 것을 받아들이고, 나와의 공평한 싸움을 하자. 어제의 나와 오늘의 나의 차이는 24시간 동안 무엇을 했는지일 뿐이니까...
    • 매일, 어제보다 조금이라도 성장하자는 마음으로 달려나가자. 그러다보면 언젠가는 남 부럽지 않은 삶을 살 수 있지 않을까?
    • 운동 유튜브를 보다가 마음에 와닿는 글귀가 있어서 적어본다
    • "생각은 곧 사라지지만 모든 행동은 흔적을 남긴다"

     

     

     

     

     

     

     

     

     


     

     

     

     

     

     

     

     

     

    1. Word2Vec

    • BoW는 단순히 빈도수를 기반으로 하기 때문에 각 단어들의 의미를 부여하기에는 어려움이 있다
    • 그래서 단어를 벡터로 표현을 해서 유사한 단어는 근처에 위치하게, 또한 하나의 단어가 여러 개의 유사도를 가질 수 있게 만드는 것이 Word2Vec이다

    1-1. CBOW (Continuous Bag Of Words)

    • 주변 단어를 통해 주어진 단어를 예측

    1-2. Skip-gram

    • 한 단어를 기준으로 주변에 올 수 있는 단어를 예측

    1-3. Word2Vec 특징

    • 단어의 의미가 벡터로 표현되므로 다음과 같은 벡터 연산이 가능

    https://word2vec.kr/search/

    • 사랑과 이별을 더하면 추억...
      크으~~~
    • 몇개만 더 해봐야징

    이야...
    ??????ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
    https://projector.tensorflow.org/

    • 다양한 단어들을 벡터로 표현하여 시각적으로 표현해주는 사이트이다
    • Love는 my랑 me랑 가까운 의미를 가진다고 한다. 다른 사람을 사랑하려면 자기 자신부터 사랑할 줄 알아야한다는 AI의 가르침인건가... 왜케 낭만적이야 AI 너란 녀석...

    2. GloVe

    GloVe: Global Vectors for Word Representation (Jeffrey Pennington et al., 2014)

    • 윈도우(임의의 사이즈) 내에 함께 출현한 단어들의 출현 빈도를 맞추도록 훈련

    • ice와 solid가 함께 나타날 확률은 steam과 solid가 함께 나타날 확률의 8.9배라는 것을 알 수 있다

    3. FastText

    Enriching Word Vectors with Subword Information(Bojanowski et al., 2016)

    • 기존의  Word2Vec은 문서에 자주 나타나지 않은 단어에 대한 학습과 OOV(Out of Vocabulary)에 대한 대처가 어려웠
    • OOV란 오타가 난 단어들을 의미
    • 단어를 n-gram으로 분리한 후, 모든 n-gram vector를 합산한 후, 평균을 통해 단어 벡터를 획득

    4. Embedding Layer

    • Embedding Vector를 통해 Text를 임베딩한 후에 어떠한 인공 신경망에 거칠 필요가 있을까?
    • 어차피 하나의 딥러닝에서 한번에 하면 되는거 아닌가?

    굳이 나눠서 하지말고 걍 한번에 하자

    • 미리 학습을 통해 얻어진 word embedding vector를 신경망에 넣어 주는 것이 아니라 학습을 통해 embedding vector 를 획득하는 방법
    model = Sequential()
    model.add(Embedding(2000, 128))
    model.add(Dropout(0.5))
    model.add(Conv1D(64, 5, padding='valid', activation='relu',strides=1))
    model.add(MaxPooling1D(pool_size=4))
    model.add(LSTM(55))
    model.add(Dense(1, activation = 'sigmoid’))
    
    model.compile(loss='binary_crossentropy’, optimizer='adam’, metrics=['accuracy'])
    model.fit(x_train, y_train, batch_size=100, epochs=5, validation_data=(x_test, y_test))
    • 코드로 사용하면 중간에 Embedding을 넣어서 구현할 수 있다

    5. 다양한 NLP의 적용

    • NLP는 우리가 어떠한 글을 입력해주면 모델에 따라서 문법을 분석해준다던가 번역을 해준다

    Meshing Capability and Threat-based Science and Technology (S&T) Resource Allocation

    • 몇가지만 살펴보자

    5-1. NER (Named-entity recognition)

    https://www.kdnuggets.com/2018/10/named-entity-recognition-classification-scikit-learn.html

    • NER은 문단 속에 있는 각 단어들이 어떠한 것을 의미하는지를 추론해내는 모델이다
    • Trump라는 단어는 사람, 2016은 날짜 이런 식으로 단어들을 구분할 수 있다

    5-2. Text Classification

    • 주어진 텍스트를 분석해서 분류하는 모델이다
    • 대표적으로 스팸 메일 분류, 리뷰의 감정 분석이 가능하다
    • 최근에 AWS Innovation : AI 온라인 컨퍼런스를 들으면서 쇼핑몰에 달린 리뷰를 분석해서 글쓴이의 감정을 분석하고 자동으로 댓글을 달아주는 서비스를 실습했었다
    • 단순히 댓글만 달아주는 것이 아니라 기분이 좋아보일 때는 해당 사용자의 마이데이터를 분석해서 다른 상품들을 추천해주고, 기분이 나쁠 때는 상품 추천보다는 사과의 말과 댓글을 달기 전에 관리자에게 한번 더 검토를 받는 식으로 구성했었다
    • 딥러닝을 잘 활용하면 일상 생활 뿐만 아니라 비즈니스적으로 많은 곳에 적용시킬 수 있겠다라는 생각이 들었다

    5-3. Part Of Speech Tagging

    • 문법적으로 분석해주는 모델이다
    • 초등 교육을 위한 영어 학습 애플리케이션에 활용해볼 수 있겠다

     

     

     

     

     

     

     

     

     


     

     

     

     

     

     

     

     

    반응형

    '인공지능 > 인공지능 기초' 카테고리의 다른 글

    NLP (3)  (0) 2024.03.10
    NLP (2)  (0) 2024.03.09
    신경망 성능 향상, 1D conv, Embedding (1)  (2) 2024.03.07
    VGGNet, GoogLeNet(Inception), ResNet, Transfer Learning  (0) 2024.03.06
    CNN 연산, Conv, Pooling, 컴퓨터 비젼  (0) 2024.03.05
    댓글