본 포스트팅은 인하대학교 컴퓨터공학과 오픈소스sw개론 수업자료에 기반하고 있습니다. 개발 포스팅과 달리 개인적인 학습을 위한 정리여서 설명이 다소 미흡할 수 있으니, 간단히 참고하실 분들만 포스팅을 참고해주세요 😎
pipeline : 일련의 복잡한 process 들을 처리하는 객체
sentiment analysis : pipeline 이 수행 가능한 수많은 기능들 중 하나인 감정분석(sentiment analysis) 에 대해 알아보자.
주어진 텍스트를 가지고 감정을 분류(text classification) 하는 것이다.
classifier = pipeline("sentiment-pipeline") : 감정분석을 위한 pipeline 객체생성
result = classifier("I hate you") : pipeline 객체에 감정분석을 원하는 문장을 입력해야한다.
보듯이 "I went to a resturant" 문장을 입력했더니 부정이라고 나온다. => pipeline 은 긍정, 부정밖에 모른다!
cf) 완벽히 대답은 못함. 살짝 멍청한 모델임ㅠㅠ
예시처럼 the, man, is, walking 단어 4개를 넣어주면 그 다음으로 예측되는 단어인 "down" 을 AI가 자동으로 넣어준다.
=> 이런 방식으로 한 스탭에 한 단어씩을 계속 생성해나간다.
pipeline("text-generation") : 인자로 text-generation 이라는 문장을 넣어주면 된다.
동일한 인풋 문자열을 부여해도, 출력결과는 매번 달라진다. 즉 자동생성되는 단어가 매번 달라짐 (랜덤하게 생성된다!)
사용과정
위 예제에서는 book 이 다음 단어로 올 확률이 가장 높다고 예측 및 판단해주는 것이다.
MLM
NSP
불러온 dataset 을 출력해보면 아래와 같다.
위 예제처럼 Harry walked ~~ 문장을 Tokenization 을 통해 잘개 쪼개서 리스트로 만들어줬다.
tokenizer(exmaples["text"], ~~~) : tokenizer 로 토큰화를 하는것. 즉 각 문장들이 단어별로 잘개잘개 쪼개져서 토큰화된다.
small_train_dataset[0]['input_ids'] : 사전에서 몇번째에 있는 단어인지 인덱스 값을 보유하고 있다.
=> tokenizer.convert_ids_to_tokens() : 인덱스 값들에 해당하는 단어들을 토큰으로 변환한다.
bert-base-cased : 기존 모델을 불러온다.
=> from_preptained 로 부터 기존 모델을 불러온다.
num_labels : 몇개의 클래스에 대해서 분류할 것 인지 개수를 지정
TrainingArguments() : 학습에 관한 설정을 해주는 것
Trainer() 객체 : 학습해주는 객체
trainer.train() : 생성한 Trainer 객체로 훈련시킴