아이효 4. 발표준비

곽정은·2021년 3월 26일
3

스터디

목록 보기
10/19

NLP 기초 용어 정리

tokenizer

encoding

Embedding

어떤 단어 → 단어에 부여된 고유한 정수값 → Embedding layer 통과 → Embedding vector/ dense vector

  • 입력 단어들을 Embedding layer의 입력으로 사용하기 위해선 모두 정수로 인코딩되어야 함.
    --> 왜냐하면 특정 단어와 맵핑되는 정수를 인덱스로 가지고, 다양한 벡터들을 값으로 가지고 있는 테이블에서는 인코딩된 정수가 있어야 이를 인덱스로 하여 Embedding vector 값을 찾을 수 있기 때문임.
  • 이 테이블은 일종의 lookup table(순람표, 주어진 연산에 대해 미리 계산된 결과들의 집합)으로, 단어 집합의 크기만큼의 행을 가지고 있음.
    --> 모든 단어는 고유한 임베딩 벡터를 가짐.
  • 찾은 Embedding vector의 값은 모델에 입력되고, 역전파 과정에 단어의 Embedding vector값이 학습됨.

padding

tagging

lemmatization

subword

BPE

Stemming

개체명 인식

품사태깅

Stopword

BIO

CRF

resize

한국어에 대하여

  • 이 주제를 선정한 이유는 stemming에 대한 기초지식을 알려주기 위함이다. 처음에는 Stemming을 주제로 선정하려고 했는데 그러면 한국어의 어간과 어미, 용언, 활용의 개념을 이해할 필요가 있다고 생각하여 적어보았다. 더하여 헷갈릴만한 언어와 문자에 대한 설명과 기본적인 한국어에 대한 설명도 첨가하였다. 한국어를 짧게 다룬 이유는 다른 언어와 한국어의 음운, 음성, 형태, 통사 구조 등의 차이를 설명하려면 5분은 택도 없기 때문에 언급만 하고 넘어갔다.

언어와 문자

  • 언어(language): 생각, 느낌 따위를 나타내거나 전달하는 데에 쓰는 음성, 문자따위의 수단. 또는 그 음성이나 문자 따위의 사회 관습적인 체계. (네이버 국어사전)
  • 문자(letter, character): 인간의 언어를 적는 데 사용하는 기호 체계. 한자 따위의 표의 문자와 로마자, 한글 따위의 표음 문자로 대별된다. (네이버 국어사전)
  • 한글'은 문자 기호를 가리키는 것이며, '한국어'는 기호가 아닌 체계를 말하는 것.
    --> 한글은 쉬운 문자이지만 한국어는 어려운 언어일 수 있음.
  • 기본적인 언어는 의사소통을 위해 육성으로 발화된 사회적 체계를 언어로 보며, 그것을 문자로 옮긴 것은 부차적인 언어로 간주.
  • 문자 없이 구전되는 언어들도 존재(Ex. 러시아의 칸티어 등)하지만 보존이 힘듦. 또 고유의 문자없이 다른 나라나 문화권의 문자를 차용하여 사용하는 언어들이 굉장히 많음.(Ex. 베트남어 등)

한국어

  • 한국 사람들이 모어로 사용하는 언어.

  • 한국은 단일 언어 사회. (Ex. 인도처럼 다언어 사회도 존재.)
    --> 한국에서 태어난 사람들은 대게 한국어를 모어로 배우며 한국어로 의사소통을 하며 살아감.

    모어와 모국어

    • 모어는 자라면서 배운 언어로, 자신의 언어를 모어 화자로 사용할 수 있음을 의미.
    • 모국어는 국적을 기준으로 화자의 모국에서 공식적으로 사용하는 언어를 의미.
      --> 모어와 모국어가 동일하지 않을 수 있음.

5언 9품사

  • 한국어의 문장성분은 문장 내에서 해당 단어가 수행하는 기능을 기준으로 나누는데, 이때 체언, 수식언, 독립언, 관계언, 용언 등 5가지로 구분함.
  • 품사는 단어를 기능, 형태, 의미에 따라 나눈 갈래를 말하며, 우리나라의 학교 문법에서는 명사, 대명사, 수사, 조사, 동사, 형용사, 관형사, 부사, 감탄사의 9가지로 분류함.

왜 학교 문법이란 말이 붙나요?

용언, 용언의 활용

  • 용언은 문장에서 서술어의 기능을 하는 단어들로, 품사로는 '동사''형용사'가 있음.
  • 용언은 가변어로 다른 단어들과 달리 쓰임에 따라 모양이 변함.

동사와 형용사

  • 동사는 사물의 움직이나 작용을 나타내는 용언.
  • 형용사는 사물의 성질이나 상태를 나타내는 용언.

본 용언과 보조 용언

  • 문장 내에서 쓰임에 따라 본 용언과 보조 용언으로 나눔.
  • 본 용언은 주어를 서술하는 데 주된 의미를 지닌 용언으로, 보조 용언의 도움을 받음.
  • 보조 용언은 본 용언 뒤에 붙어서 의미를 더해주는 용언으로 혼자 쓰일 수는 없음.
  • 참고 링크: [국어] 13. 본용언과 보조용언 개념 정리, 띄어쓰기 정리
  • 활용은 문장 안에서 각 용언이 담당하는 기능에 따라 형태가 변하는 것을 의미.
  • 활용을 할때 용언에서 변하지 않는 부분을 어간(stem), 변하는 부분을 어미(Ending)라고 함.

어간과 어미

  • 어간은 용언이 활용할 때 변하지 않는 부분으로, 찾는 방법은 사전에 실려있는 기본형에서 '-다'를 빼준 앞부분을 보면 됨. (Ex. '졸리다' --> '졸리-')
  • 어미는 어간 뒤에 붙어서 변하는 부분으로, 여러 가지 문법적인 의미를 더해줌.

규칙 활용과 불규칙 활용

  • 활용은 규칙 활용과 불규칙 활용으로 나뉨.
  • 규칙 활용은 어간에 어미가 붙을 때 어간과 어미의 형태가 둘다 변하지 않거나 규칙적으로 변하는 것. (Ex. '가다'의 어간 '가-' + 어미 '-니' = '가니' )
  • 불규칙 활용은 용언이 활용을 할 때 어간과 어미 또는 어간, 어미 둘 다 형태가 변하는 것.
    (불규칙 활용은 변환 형태가 많아 링크로 예시를 대체함. --> 용언)

어간 추출(stemming)

  • stemming은 형태학적 분석을 단순화한 버전으로 정해진 규칙만 보고 단어의 어미를 자르는 어림직잡의 작업.
    --> 섬세한 작업이 아니기 때문에 어간 추출 후에 나오는 결과 단어는 사전에 존재하니 않는 단어일 수 있음.
    --> 한국어는 불규칙 활용이 많아 어간 추출이 어려울 수 있음.

출처

profile
인공지능 냉각시스템 개발기업 전략기획

3개의 댓글

comment-user-thumbnail
2021년 3월 27일

아이효 2021.03.27

  • 데이터 전처리 (2)

    CV와 NLP에서의 데이터 전처리란?

  • CV: 이미지 처리 --> augmentation, nomalization, rezise 등등
  • NLP: 언어 처리 --> tokenization, normalization, cleaning, encoding 등등

CV

augmentation, 증강

  • 이미지 쪽에서 데이터를 부풀리기 위해서, 늘리기 위해서 하는 것
  • 왜 할까?
    ..--> 모델학습을 위해, 데이터 수집이 어려워서, 오버피팅을 피하기 위해, robust함을 모델에 주기 위해.
    ....--> 변형을 통해 없던 데이터를 추가시켜주는 것. 그러면 원래 데이터의 분포(모집단)를 잘 설명할 수 있게 됨.
    ......--> 예를 들어 분류문제에서 데이터가 적으면 데이터를 나누는 선이 여러 개가 나오게 됨(학습 안 됨)
    .........--> 그래서 데이터 양을 늘려서 학습이 잘되게 만들어 데이터를 나누는 제일 적당한 선을 찾게 만듦.

augmentation의 방법들

  • 반전, clipping, 회전, 노이즈 추가 등등

auto ML

  • 데이터를 주면 가장 좋은 모델을 찾아주는 플랫폼.
  • augmentation에서도 이런 아이디어(자동으로 가장 좋은 변환 방법을 찾을 수 있다)를 적용할 수 있음.
    ..--> 태스크의 도메인에 적합하지 않는 변환 방법을 사용하면 이득이 되지 않음. 도메인에 적합한 변환 방법을 여러 실험을 통해 찾는 것이 중요함. (like 하이퍼 파라미터)
  • Conv 레이어에서 전처리에서 찾아줘야할 피쳐를 잘 찾아줘서 CV에서 전처리할 것이 별로 없음.
    ..--> 그래서 데이터 수집에서 어려움이 있으면 augmentation을 사용하는 것.

NLP

  • 목적은 언어를 이해하는 것. 그리고 언어를 잘 활용하는 것.

tokenization, 토큰화

  • 의미 있는 단위로 잘라주는 것.
  • 왜 할까? NLP의 목적인 언어 이해를 위해서는 의미있는 단위들을 알아야 함.
  • 통채로 있는 글이 아니라 하나하나 의미가 있는 최소 단위를 알기 위해 쪼개는 토큰화가 필요.
    ..--> 그래야 나중에 쪼갠 단어를 조합하여 다시 사용할 수 있음.(보통 단어 단위/ 태스크에 맞게 발라주면 됨.)
  • 영어는 띄어쓰기 단위로 구분이 되어 있어 편리함.
  • 한국어는 이보다 어려움.

subword, 부분 단어

  • 합성어도 쪼개서 생각해보겠다는 아이디어.
  • 사용하면 성능이 올라감.

normalization, 정규화

  • NLP에서는 CV와 다른 의미로 사용.
  • 단어의 의미가 같은 것을 통합하는 것. (Ex. US, USA, 미국 이라는 같은 지역을 의미하는 단어를 하나로 정규화.)
  • 왜 필요할까? 같은 의미의 단어를 다 다르게 컴퓨터가 인식하면 메모리 사용도 많아지고, 학습도 오래 걸리고, 같은 의미를 가진 단어인데 다른 단어로 인식하면 나중에 처리하기 힘들기 때문.
  • 하는 방법: 대소문자 변환 등등

cleaning, 정제

  • 학습에 도움이 되지 않는 필요 없는 데이터 없애기.
  • 하는 방법: 도메인에 불필요한 단어 제거, 불용어 제거, 특수문자 제거, 문장 부호 제거, 데이터 분포에서 긴 문장을 제거, 빈도수가 낮은 희귀한 문장 제거 등등

encoding, 인코딩

  • 벡터로 표현해서 인간의 언어를 컴퓨터가 계산할 수 있도록 바꿔주는 것. = transformation
  • embedding(학습에 좋은 표현으로 바꿔주는 것(word2vec)), padding(길이가 안 맞아서 길이를 일부로 맞춰주는 것.)

tagging, 태깅

  • 품사태깅 또는 객체명 인식.
  • 품사태깅을 하는 이유는 단어가 나뉘는 것을 알기 위햐서는 품사를 알고 있어야 함. 컴퓨터는 품사를 모르기 때문에 어간+어미를 잘 나눌 수 없음. 단어의 원형을 찾기 위해서도 필요함(has --> have).
  • 어간 추출 및 표제어 추출에 필요함.
  • 단어마다 어떤 품사를 가지고 있는지 CRF라는 분류 모델를 사용함. --> 말뭉치에 대한 라벨링 노가다를 했다는 것.

객체명 인식, named entity recognition

  • 태그를 달아주는 것, 객체 명에 대한 카테고리의 태그를 달아주는 것.
답글 달기
comment-user-thumbnail
2021년 3월 27일

지효님의 알고리즘 강의
<자료구조 마지막>

  • 비선형 자료구조: 그래프, 트리

tree(트리)

  • 사이클이 없는 그래프.
  • 계층을 나타내는 자료구조. 높은 계층과 낮은 계층의 연결만 가지고 있음 --> 부모(parent)-자식(child) 관계/ 같은 자식관계는 sibling이라고 함.
  • 뿌리(root)부터 뻗어나가는 모양을 가지고 있음.
  • 아무 정점을 루트로 잡을 수 있음. --> 그 정점을 잡고 들어올린다고 생각하기.
  • 루트로부터 떨어진 거리를 height라고 함. --> root에서 가장 먼 곳. dept 중 가장 큰 것.
  • 트리 끝에 달려있는 것을 leaf/ leaves(복수) 이라고 함.
  • 각각의 정점이 root로부터 떨어진 깊이를 dept라고 함.
  • 트리의 일부에서 새로 root를 잡은 트리를 sub tree라고 함.
  • 위에 있는 정점을 ancestor, 아래에 있는 정점을 descendant 이라고 함.

tree의 분류

  • 자식: 그 부모가 자식을 갯수를 몇개까지 가질 수 있나? --> 이진트리(최대 자식 2개/ 보통 선호), multi way(자식 여러 개)
  • 순서(order): 트리는 순서 개념을 줄 수 있음.
    ..--> 순서가 있는 경우:
    ....1. 힙: 부모와 자식과의 관계만 설정.
    ....2. 서치: 이진트리로 왼쪽과 오른쪽을 구분할 수 있음. L<P<R을 만족하는 트리
    ..--> 순서가 없는 경우도 있음.
  • 균형(balanced): 정점의 개수가 N이라고 했을 때, 제대로 균형을 맞춰주면 height의 길이가 log N정도 됨. 이 상태를 균형이라고 함.(차이가 가장 없음.)
    ..--> unbalanced한 트리도 존재함. 높이를 줄이고 싶을 때 이진트리가 최악임(자식을 2개 밖에 두지 못하기 때문.)
  • 적용(application): 문자열, 구간, 공간 정보, 집합, 파일 시스템 등등
    ..--> 민주주의는 사이클이다....띵언.....

계층이 중요한 이유

  • root에 권한을 주기 위함 --> 다단계.
  • 결정을 빠르게 잘 내리기 위해서.

순회

  • 모든 정점과 간선을 방문하는 것.
    ..--> 1번 방법: 전위 순회(pre order): P L R (자기 자신을 제일 먼저)
    ..--> 2번 방법: 중위순회(in order): L P R (자기 자신을 중간에)
    ..--> 3번 방법: 후위 순회(post order): L R P (자기자신을 마지막에/ root가 가장 마지막에 나옴.)
    ....--> 위의 3가지 방법들이 DFS(넓이 우선 방식).
    ..--> 4번 방법: BFS(깊이 우선 방식).
    ....--> 계층적으로 처리하는 방법. 가장 높은 계층부터 순서대로.

BFS(한숨에 갈 수 있다.)와 DFS(갈 때까지 가보자.)

  • 순회의 일종.
  • 그래프에서도 가능. 트리에서 하면 레벨링 가능.

AVL tree

  • balanced 된 서치 트리. --> height의 길이가 log N정도되고 L<P<R을 만족하는 트리 .
  • k 번째인지 찾을 수 있음. --> 트리 자체로 정렬 효과를 얻을 수 있음.
  • 추가나 삭제로 balanced가 깨지면 reconstruction 해야 함.

heap

  • 완전 이진 트리(꽉찬 이진 트리)
  • 우선 순위 큐(FPFO)를 구현하는 자료구조.
  • Insert(우선순위), delete(루트), find(루트)
1개의 답글