카테고리 없음

JinCoding 실무형 NLP Course 2강: 컴퓨터가 언어를 이해하는 방법

J-Chris 2023. 8. 6. 20:55

스터디 기록일지^^

- 날짜/시간 : 23년 08월 06일 / 오후 7시 

 

[2] 컴퓨터는 언어를 어떻게 이해할까?

 

Text Preprocessing

  1. Feature extraction (ENG)
    Lemmatication : lemma (단어 기본형 )
    Stemming : stem (어간) / 접두사 , 접미사 제거 

Use Case ?

  • 사전을 차원(사이즈)를 감소하기 위해
  • 검색 시스템에서 의미를 빠르게 그리고 효율적으로 추출하기 위해
  1. Feature extraction(영어)

Use Case ?

  • 특정 품사 단어를 가져와서 처리
  • Ex) 명사 단어만 가져와서 word cloud 그리기
  1. Feature extraction (KOR)

형태소 분석 .!! 

 

형태소란?

- 의미를 가지는 가장 작은 단위

- (예시) 가방에 들어가신다 -> 가방/NNG + 에/JKM + 들어가/VV + 시/EPM + ㄴ다/EFN

 

spaCy 파이썬 패키지 소개

  • 한국어 사전을 가져와서 사용함
  • Multi lingual
  • 이단어가 주어다 이단어가 동사다 = dependency parser
  • tagger는 품사를 태깅해주는것

Text Preprocessing

  • Feature extraction (ALL)
  • Preprocessing pipeline package
    • Tagger
    • Paser
    • Ner (개체명인식) -> 문서를 이해하고 엔티티를 뽑을 때 사용 (사람 이름을 뽑고 싶어) 

Preprocessing pipeline package [출처 : JinCoding 실무형 NLP Course 2강]

  1. Text cleaning

Regular Expression

- pattern

- string (text)

- flag

  • re.IGNORECASE : 대소문자 구분하지 않음
  • re.MULTILINE : 라인별로 찾을 수 있음

Regular Expressions [출처 : JinCoding 실무형 NLP Course 2강]

 

  1. Text cleaning
  • Functions
    • search() : string 에서 첫번쨰로 찾은 pattern을 match 객체로 반환
    • match() : pattern이 string의 0번째 위치에 있으면 match
    • sub() : pattern 특정 텍스트로 교체

 

[2] 컴퓨터는 언어를 어떻게 이해할까 ?

- Tokenizer

  1. Whitespace Tokenizer
  2. Word Tokenizer
  3. Character Tokenizer

문제: Out-of-Vocabulary (OOV)

Ex. 신조어 ?! 

 

- Large Language Model

 

단어 ->  모델 -> Embedding 

Vocab

GPT3: 50,257 tokens

BERT: 30,522 tokens

token을 어떻게 만들까?

기법: tokenizer

 

Tokenizer 

Large Language Model -> Subword Tokenizer

  1. BPE (Byte Pair Encoding)

“ 자주 등장하는 character 쌍(pair)을 병합”

“Low lower newest wideset”

-> character 단위로

-> 빈도가 높은 pair를 병합 

“ lo w lo w e r n e w e s t w I d e s e t”

-> vocab_size 도달할때까지 병합함

 

  1. WordPiece[BERT tokenizer]

“Likehood가 높은 character 쌍(pair)을 병합”

Likehood란 ?? 

"우리가 빅데이터를 보고나서 우리가 가지고 있는 모델이 빅데이터와 유사하도록 모델을 계속 업데이트하는 것 "

 

# a = a 빈도

# b = b 빈도

# ab = ab pair 빈도

 

Character 단위로 + prefix (##) 추가 

“Low lower newst widest”

“l##o##wl##o##w##e##rn##e##…..”

 

pip install transformers 를 설치해야 Tokenizer를 쓸 수 있다

 

Special Tokens

[CLS] : NSP 예측 -> classification task

[SEP] : 문장간 구분자

 

[UNK] : vocab에 없는 토큰 —> unknown 으로 바꾼다(bert가 모르는 것은 모두 unknown으로 표시)

 

 

교수님 요즘 고민 

- 사람들이 어떻게 바로 쉽게 접근해서 AI를 쉽게 접근할 수 있을까 

- 랭귀지 모델이 어떻게 바뀔까 트래킹 하기

- 코드를 짜는걸 좋아함 서비스를 구축하는게 재밌음 

- PPT로 정리하고 전자책을 정리해보는 시간도 가져보면 좋다

- chatgpt 통한 자동 블로그 포스팅