일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- U_stage
- 단계별문제풀이
- 구현
- 주간회고
- 백준
- Level2_PStage
- 개인회고
- 이진탐색
- 프로그래머스
- 최단경로
- 다시보기
- 그리디
- dp
- 부스트캠프_AITech_3기
- 부스트캠프_AITech3기
- 알고리즘스터디
- Level1
- Level2
- 이코테
- 알고리즘_스터디
- 글또
- dfs
- 백트랙킹
- python3
- 그래프이론
- 정렬
- ODQA
- 기술면접
- 파이썬 3
- mrc
- Today
- Total
국문과 유목민
[일일리포트] Day 18 본문
해당 일일리포트에서는 네이버 커넥트에서 진행하는 '부스트캠프 AI Tech 3기'에서 배운 내용을 다루고 있습니다. 저작권 이슈 때문에 관련 자료를 올릴 수는 없기에 핵심 이론과 코드를 요약해서 올리고 있기에 내용이 부족할 수 있습니다.
▶ Today I Learned (핵심 요약 정리)
멘토링 (책 리뷰)
오늘 멘토링은 팀 내부 캐글 참여를 위해 '파이썬 머신러닝 완벽 가이드'에서 자연어 부분에 대해 전체적으로 훑고, kaggle에 관해 살펴보는 시간을 가졌다. '파이썬 머신러닝 완벽 가이드'의 경우 멘토님께서 추천해주신 책이라서 팀원들과 같이 보자고 얘기를 한 이후, 각자 책을 준비하는 시간이 있어서 좀 미뤄져서, 이번에 캐글을 앞두고 같이 '자연어 처리'파트를 보자는 얘기를 했다. 그리고 주말 동안 각자 해당 부분을 읽어왔고, 멘토님께서 해당 내용에 대해 전체적으로 훑어주셨다. 그래서 오늘 책에 나온 자연어 처리에 대한 전체적인 프로세스에 대해 간략하게 정리하고자 한다.
텍스트 분석
텍스트 분석의 수행 프로세스는 크게 'Text문서 → Text Vectorize → ML학습' 순서로 진행되며 아래와 같은 사전 작업을 통해 텍스트를 분석가능한 상태로 처리해줘야 한다.
- 텍스트 정규화(Tokenization): 문장을 토큰화하는 것을 의미한다.
- N-gram: 여러 개의 단어를 토큰으로 묶어서 보는 방법
- Stopwords 제거: 텍스트 분석에 방해(?)가 되는 단어들 제거 [딥러닝 학습 시에는 불용어 넣기도 한다고 함]
- 어근화: Stemming & Lemmatization
- Stemming: 어근만 가져오는 비교적 간단한 방법
- Lemmatization: 품사를 고려해서 의미를 신경써서 원형을 찾는 방법
- BOW (Bag Of Words)
- Count Vectorize: 말뭉치에 속한 단어들의 빈도 값을 이용해 말뭉치를 feature화
- TF-IDF: 각 텍스트에서 각 단어의 발생 빈도를 표시하지만 범용적으로 자주 사용되는 단어에 패너티를 적용하는 방법
- SparseMatrix(희소행렬):
- COO: 대부분의 값이 0인 경우가 많아 메모리 문제를 해결하고자 0이 아닌 값의 위치만을 저장하는 방법
- CSR: 0이 아닌 값의 위치의 위치를 이용한다. 따라서 모든 0이 아닌위치를 저장할 필요가 없고, Unique한 값의 위치만 기록해둠으로서 COO를사용하는 것보다 메모리를 더 효율적으로 활용할 수 있다.
텍스트 분석의 종류
각 분석에 대한 세부적인 코드 구현방법 등은 저자 Git홈페이지나 책을 확인
- 문서 분류
- 감성 분석
- 감성 분석_비지도 학습 (한국어는 감성사전이 없다. )
- 토픽모델링: LSA, LDA
- 문서 군집화: 비슷한 텍스트 구성의 문서를 군집화 하는 것
- 문서 유사도: 문서 간 유사한 정도를 Cosine 유사도를 활용
텍스트 분석 Summary
- 텍스트 분석 머신러닝 프로세스: 텍스트 전처리 -> 피쳐 벡터화 -> ML학습/예측 평가
- 텍스트 전처리, 클린징, 토큰화, 필터링/스톱워드 제거, 어근화(Stemming, Lemmatization) [몇 가지는 빼고 했을 때 오히려 성능이 올라갈 수 있다]
- 피처 벡터화: BOW, 단순 카운트 기반 벡터화, TF-IDF 벡터화
피처 벡터화 단계가 가장 중요하다. 임베딩 방법이라고 하는데, 문장 임베딩일 수도 있고 단어 임베딩일 수도 있다.
[딥러닝에서는 또 다른 방법으로 Vector화 할 수 있다]
- 텍스트 분석 주요 영역
- 텍스트 분류: 지도 학습 기반의 텍스트 카테고리 분류
- 감성분석: 지도학습 기반, 감성 사전 기반
- 텍스트 요약: 토픽 모델링
- 텍스트 군집화
- 유사도 측정
- 비정형 데이터와 정형 데이터의 결합을 통한 예측 분석
질문
Q> 파이토치로 자연어 모델을 만드는데 사이킷런의 활용법도 알아야 하나?
A> 사이킷런으로 진행하는 텍스트 데이터 전처리 단계의 경우, 나중에 자연어 처리를 파이토치로 구현하게 된다고 해도 활용될 여지가 있다. 또한 베이스 라인 코드를 이해하는데 사이킷런이 필요할 수도 있기 때문에 공부할 필요가 있다.
▶ Review (생각)
오늘은 강의를 들으려고 했는데 예상치 못한 일이 생겨서 강의를 듣지 못했고, 대신에 주말에 공부했어야 할 머신러닝 책을 읽는데 시간을 쓰게 됐다. 그러다보니까 오늘 강의를 듣지 못해서 블로그 정리 이후에 들어야 할 것 같다. 그래도 다행인 것은 이번 주 강의의 진도가 많지 않고 실습보다는 이론적인 부분의 강의가 많은 것 같아 비교적 수월하게 들을 수 있을 것 같다는 생각이 든다. 그래도 긴장을 풀지말고 계획한대로 강의를 들어야겠다.
멘토링 시간에 책 리뷰를 진행하고 또 캐글을 둘러보는 시간을 가졌었다. 캐글 코드 중에서 score와 vote가 많은 코드를 같이 살펴보면서 코드가 꽤 길어 두려운 마음이 들었던 것 같다. 그런데 또 한편으로 생각해보면 해당 코드를 작성한 사람은 얼마나 많은 시간동안 그 코드를 구현하기 위해 공부했을 지 생각을 해보니 오히려 내가 더 쉬운게 아니가하는 생각이 들었다. 그리고 너무 편하게만 가려고 한 것 같다는 생각을 했다. 그래서 캐글을 공부하면서 프로세스를 이해하고 익히는 시간을 잘 활용해서 정리해두면 큰 도움이 될 것 같아 열심히 해보고자 한다.
'IT 견문록 > 2022_부스트캠프 AITech 3기(100일)' 카테고리의 다른 글
[일일 리포트] Day 20 (Docker/MLFlow) (0) | 2022.02.16 |
---|---|
[일일리포트] Day 19 (ProjectLifeCycle) (0) | 2022.02.15 |
[4주차] 개인 회고 (0) | 2022.02.11 |
[일일리포트] Day 17 (0) | 2022.02.11 |
[일일리포트] Day 16 (0) | 2022.02.10 |