한국어 언어 모델 학습 및 다중 과제 튜닝 - (2강) 자연어의 전처리

newbie·2021년 9월 27일
0

강의 소개

인공지능에서 가장 중요한 데이터!! “Garbage in, garbage out” 이라는 말이 있습니다.
일반적으로 좋은 데이터를 학습해야 좋은 성능의 모델을 기대할 수 있습니다.
또한 데이터 전처리는 단순히 '정제' 의 개념이 아니라, 어떤 문제를 해결하겠다는 task 정의의 의미도 포함하고 있습니다! ☺️
반드시 날 것의 데이터와 친하게 지내세요!!!

이번 강의에는 다양한 한국어에 특화된 전처리 기법을 배우고 실습합니다.😎
한국어로 할 수 있는 거의 모든 전처리를 포함하고 있습니다! 😀

Further Reading

Further Question

  • 텍스트 정제라는 것이 정말 필요할까요?
    • 어쩌라는거야? 싶으시죠? ☺️☺️
    • 실제로 우리가 웹이나 메신저를 통해 사용하는 언어는 '정제 되지 않은 언어' 입니다.
    • 해당 데이터가 적용되는 방향에 따라 정제가 필요할 수도, 필요하지 않을 수도 있습니다.
    • 오히려 더욱 어려운 데이터로 학습한 모델의 성능이 좋을 수도 있죠 ☺️

Reference


자연어 전처리란?

  • raw data를 기계학습 모델이 학습하는데 적합하게 만드는 프로세스
  • 학습에 사용될 데이터를 수집&가공하는 모든 프로세스

자연어 전처리를 하는 이유

  • Task 성능을 가장 확실히 올릴 수 있는 방법!
  • 모델 변경, 튜닝 등도 데이터가 잘 갖춰져 있는 기반에서 해야 원활한 수행이 가능

자연어 처리의 단계(task에 따라 조금 차이가 있긴 함)
1. Task 설계 - 요구사항에 맞게 어떤 task인지 분류
2. 필요 데이터 수집 - 저작권을 고려하여 데이터 수집
3. 통계학적 분석 - Token 개수->아웃라이어 제거 // 빈도 확인-> 사전 정의
4. 전처리 - 개행문자,특수문자,공백,중복표현,이메일&링크,제목,불용어,조사 선택적 제거 및 띄어쓰기&문장분리 보정
5. Tagging - labeling(?)
6. Tokenizing - 토큰 단위 결정(어절,형태소,wordpiece 등...)
7. 모델 설계
8. 모델 구현
9. 성능 평가
10. 완료!!

Python string 관련 함수

  • 자연어 전처리에 반드시 필요한 파이썬 내장 함수!!
  • 대소문자 변환
    • upper(), lower(), captialize(), title(), swapcase()(대소문자 서로 변환)
  • 편집 및 치환
    • strip(), rstrip(), lstrip(), replace(a,b)
  • 분리, 결합
    • split(), split('wt'), ''.join(s), lines.splitlines()(라인 단위로 분리)
  • 구성 문자열 판별
    • isdigit(), isalpha(), isalnum()(숫자 혹ㄱ은 영어 알파벳 여부), islower(), isupper(), isspace(), startswith(), endswidth()
  • 검색
    • count(),
      find()(괄호안의 단어가 처음으로 출현한 위치 리턴, 없으면 -1),
      find(string, 3) - 문자열의 index에서 3번째부터 위치 검색,
      rfind() - find와 같지만 우측 기준으로 검색,
      index(), rindex() - 존재하지 않는 경우 예외발생

한국어 토큰화!!

  • 토큰화(tokenizing)
    • 주어진 데이터를 토큰 단위로 분리하는 작업
    • 토큰 기준은 상이함(어절,단어,형태소,음절,자소 등)
  • 문장 토큰화(sentence Tokenizing)
    • 문장 분리
  • 단어 토큰화(word tokeninzing)
    • 구두점 분리, 단어 분리
  • 영어 토큰화는 합성어와 줄임말 예외처리만 하면 띄어쓰기 기준으로도 잘 동작하는 편
  • 단, 한국어는 조사나 어미등이 붙는 교착어로, 띄어쓰기만으로 불가
  • 한국어에선 어절의 의미를 가지는 최소 단위인 형태소로 분리
profile
DL, NLP Engineer to be....

0개의 댓글