딥러닝 자연어처리 학습내용 정리 - 1

HONEYCARON·2021년 7월 25일
0
post-thumbnail

서론

학부시절 산학협력프로젝트로 모 IT기업과 자연어처리 기반 영화 추천 시스템을 만들었던 적이 있다. 당시에 영화 댓글 기반, 별점 기반 추천모델은 꽤나 흔한 주제고 관련 소스코드도 많았지만 영화 전문가 리뷰에 기반한 영화 추천 시스템은 없었던 걸로 기억한다.

<내 맘에 쏙! 영화>
word2vec, KoNLPy, tf-idf, K-Means를 활용하였고, 추천시스템은 영화 벡터와 쿼리 벡터 간의 코사인 거리를 측정하는 방식으로 flask에서 구현했다.
깃허브 - https://github.com/honeycaron/2018_movie_recommendation

해당 프로젝트를 하면서 word2vec부터 KoNLPy까지 자연어처리에 대한 많은 개념들을 배울 수 있었다. 특히, 영화별로 feature 벡터를 생성해서 query 벡터간의 코사인 거리를 측정하는 것을 코드로 직접 구현하면서 '아! 추천 시스템이 (물론 실제로는 더 복잡하겠지만) 이런 식으로 돌아갈 수 있겠구나!'라고 생각했던 것이 기억에 남는다.

'자연어처리'를 활용해서 '추천 시스템'을 직접 구현했다는 것은 이력서나 자기소개서에 녹이기 좋은 주제였고, 그 후 내 포트폴리오에 늘 대표 프로젝트로 자리매김하고 있다.

하지만 몇 년이 지났고 자연어처리는 무수한 많은 발전을 이루어냈다고 들었다. 또 ELMo, BERT, GPT 등 우수한 성능의 언어 모델도 많이 나왔다고 한다. 이 시점에서 내 자신한테 물어보고 싶다.. '두유노 자연어처리?' 내가 과연 이 질문에 자신있게 예스라고 할 수 있을까...?

서론이 길었지만, 결국 자신있게 예스라고 말하기 위해 자연어처리 강의를 신청했고, 앞으로 그날그날 배운 내용을 적어보려고 한다. 언젠가 자신있게 예스라고 말할 그날을 위해!

TIL

준비

우선 자연어처리를 하려면 약간의 파이썬 지식, 선형회귀, 로지스틱 회기, 경사 하강법에 대한 선수지식이 필요하다.

내가 신청한 강의에서는 구글에서 제공하는 Colab을 쓴다. 파이썬을 따로 설치할 필요가 없으며, GPU를 사용할 수 있는 개발환경을 제공해준다. 그리고 무려... 무료다! ㅎㅎ

자연어처리를 위한 텍스트 전처리

자연어처리를 위해서는 텍스트 전처리라는 과정이 필요한다.

기본 순서는 내가 제대로 배운게 맞다면..

(맞춤법/띄어쓰기 검사...필수는 아님!) - 토큰화 - 정제&정규화 - 인코딩(Integer(패딩 포함)/One-Hot/Vectorization)

위와 같은 순서로 진행된다고 한다.

Lesson Learned:

  • 영어, 한국어 별로 사용하는 토큰화 라이브러리가 다르며, 또 같은 한국어 토크나이저 중에서도 사용목적에 따라 취향에 맞게 고르면 된다.
  • 다국어 토크나이저는 없지만, Subword 토크나이저를 활용하면 언어에 상관없이 모든 텍스트에 적용할 수 있다.
  • 일반적으로 Mecab이 연산속도가 빠르고 분석 성능도 준수해서 선호도가 높다.
  • 인코딩에서 Integer Encoding은 딥러닝 모델을 위한 Input용도로 사용하고 One-Hot은 모델을 개선시킬때 옵션으로 사용한다고 한다.
  • Integer Encoding은 병렬 연산을 모든 문서의 벡터 길이를 동일하게 맞추는 것이 중요하고 이를 위해 패딩이라는 것을 사용한다.
  • Integer Encoding의 maxlen, unk 사용여부 모두 그때 그때 상황에 맞게 선택해서 쓰면 된다. (딥러닝 모델은 정해진 답은 없고 성능이 좋으면 장땡!)
profile
AI 전문가(진)

0개의 댓글