24.11.18 - 24.11.22
이번 주부터 자연어 처리 수업이 시작되었다. 자연어 처리는 최근 AI 분야에서 가장 중요한 주제 중 하나로, 앞으로 머신러닝, 딥러닝, AI의 다양한 분야에 걸쳐 필수적인 부분이기에 기대와 부담이 동시에 있었다. 처음엔 역시 쉽지 않았지만, 어느 순간부터 개념의 틀이 잡히고 점차 이해가 확장되기 시작했던 것 같다.
re 라이브러리를 사용.
grouping - 패턴내 하위 패턴 만들기
txt = "tel) 010-1234-0909"
# 전화번호
p = re.compile(r"(0\d{1,2})-(\d{3,4})-(\d{4})")
# (1번하위그룹)-(2번하위그룹)-(3번하위그룹)
m = p.search(txt)
if m is not None:
print(m.group(0)) # 0: 전체 (default)
print("지역번호:", m.group(1))
print("국번:", m.group(2))
print("번호:", m.group(3))
Greedy matching
Non-Greedy(Lazy) matching
?
를 붙인다.전방탐색 - 매칭될 문자가 앞에 있는 경우
\d(?=abc)
: 숫자 뒤에 abc가 오는 패턴을 찾고 숫자만 매칭한다.\d(?!abc)
: 숫자 뒤에 abc가 오지 않는 패턴을 찾고 숫자만 매칭한다.후방탐색 - 매칭될 문자가 뒤에 있는 경우
전체적인 process 정리
① 데이터 수집: 웹스캐핑, API, 데이터셋 다운로드(Kaggle 등)을 통해 데이터 수집 가능
② 데이터 전처리
- 텍스트 전처리: 불필요한 점제거, HTML태그제거, 숫자제거, 소문자화
- 토큰화: (엉어: NLTK, 한국어: KoNLPy 주요라이브러리가 있다.) -> sbword 토크나이저
- 불용어 제거: 조사제, 접미사, 접속사, 대명사 등
- 어간 추출, 표제어 추출 -> 원형복원(= 데이터의 일관성, 어휘수 감소, 모델 일반화, 연산 효율성을 높여주려고 진행함) : stemming, lemmatization
③ 특성추출
④ 데이터분할
- 훈련
- 검증
- 테스트
⑤ 모델 선택 + 모델 학습
⑥ 평가 및 검증 : 평가지표 선택 -> 모델 검증, 조정
⑦ 모델 개선: 오버피팅 방지 (how? 정규화, 드롭아웃), 하이퍼파라미터 튜닝, 특성 엔지니어링
⑧ 테스트 및 배포
- 최종테스트: 테스트 데이터로 최종 모델 성능
- 모델 배포
자연어 처리에 대한 기초 개념이 전혀 없는 상태로 시작했기 때문에 모든 것이 새로웠고, 어렵게 느껴졌다. 복습도 중요하지만, 기본적인 키워드나 개념을 예습해 두면 수업 이해도가 더 높아질 것 같다.
앞으로 학습 시, 복습과 예습 시간(주요 키워드 미리 찾아보기)을 적절히 분배해 수업 준비를 탄탄히 해야겠다. 수업 시간에 개념을 확실히 이해하는 것을 목표로 하여, 학습 효과를 높이고 싶다.
필기도 너무 꼼꼼하게 잘 남기셨는데요!!
지금처럼 수업 내용 필기, 회고 통한 복습 병행하시면 처음 배우는 자연어 처리 파트 개념 잡아가신 것처럼 LLM, 파인튜닝 수업에도 문제 없으실 것 같아요 😉😉
지금처럼 복습하시는 것도 쉬운 일이 아닌데 예습까지 도전하신다니! 도서랑 인프런 강의도 꾸준히 병행하시길 추천드립니닷 :)