본문 바로가기
NLP

NLP_2

by Yonghip 2024. 9. 10.

Chapter12

Tagging

대표적인 태깅 task

  • NER(개체명 인식): 단어가 사람, 장소, 단체인지 유형 확인
  • POS tagging(품사 태깅): 말 그래도 명상, 동사 형용사 등 품사 확인

태깅을 위해서 X의 길이에 맞게 y를 만들어야 하고 이를 시퀀스 라벨링이라고함

BIO 표현: 개체명 표현같은거에서 Begin, In, Out을 의미하는듯 각각 시작, 속함, 아무것도 아닌을 의미
즉 NER같은 경우 개체당 한 column이 들어가 원핫 느낌이 되는게 아니라 한 차원내에서 모든 개체를 다룸

Chapter13

BPE:

서브워드를 만들어주는 알고리즘 중 하나. 두개의 단어를 하나로 묶는데 순서는 1.빈도수 2. 앞에서부터


기존 OOV였던 lowest를 문자 단위로 쪼개고 유사한 문자 집합을 찾아낼 수 있음

13-04 허깅페이스 토크나이저(Huggingface Tokenizer)

이때동안 여러 tokenizer에 대해 배웠지만 대부분 성능이 좋거나 fine tuning할 모델과 같은 tokenizer를 사용하게될 것임
그때 허깅페이스의 tokenizer를 사용하면 사용이 간편함

import pandas as pd
import urllib.request
from tokenizers import BertWordPieceTokenizer

urllib.request.urlretrieve("https://raw.githubusercontent.com/e9t/nsmc/master/ratings.txt", filename="ratings.txt")
('ratings.txt', <http.client.HTTPMessage at 0x7f10232901f0>)
naver_df = pd.read_table('ratings.txt')
naver_df = naver_df.dropna(how='any')
with open('naver_review.txt', 'w', encoding='utf8') as f:
    f.write('\n'.join(naver_df['document']))
tokenizer = BertWordPieceTokenizer(lowercase=False, strip_accents=False)
data_file = 'naver_review.txt'
vocab_size = 30000
limit_alphabet = 6000
min_frequency = 5

tokenizer.train(files=data_file,
                vocab_size=vocab_size,
                limit_alphabet=limit_alphabet,
                min_frequency=min_frequency)
encoded = tokenizer.encode('아 배고픈데 짜장면먹고싶다')
print('토큰화 결과 :',encoded.tokens)
print('정수 인코딩 :',encoded.ids)
print('디코딩 :',tokenizer.decode(encoded.ids))
토큰화 결과 : ['아', '배고', '##픈', '##데', '짜장면', '##먹고', '##싶다']
정수 인코딩 : [2111, 20632, 4118, 3400, 24681, 7873, 7379]
디코딩 : 아 배고픈데 짜장면먹고싶다

Chapter 19


아키텍처적 변화보다는 파라미터 수가 기하급수적으로 증가하면서 일반화 성능이 높아진듯

Chapter21

토픽 모델링: 문서 집합의 주제를 발견하기 위한 모델 일종의 텍스트 마이닝 기법
LSA: TDM, TFIDF에 SVD를 수행하고 V^t를 topic으로 사용

 


출처: https://wikidocs.net/book/2155

'NLP' 카테고리의 다른 글

Transformers[1]  (5) 2024.09.24
NLP_1  (3) 2024.09.10