2023년 하반기가 마무리되고, 겨울방학도 끝났다.
Prometheus 동아리에서 한 학기(6개월)동안 여럿 프로젝트를 해왔고, 기초스터디를 하면서 다양한 모델과 머신러닝 기법들을 배웠다.
기초스터디 팀에서는 "혼자 공부하는 머신러닝+딥러닝" 교재를 통해 다양한 머신러닝 기법과 딥러닝 기법들을 배웠고, 실제 코드를 통해 실습을 하였다.
기초스터디랍시고 다소 가볍게 여겼었는데.. 생각보다 어려운 부분도 많아서 배울 점도 많았다.
기억나지 않는 부분도 많고, 코드도 제대로 학습하지 않은 상태에서 기초스터디 강좌가 끝나서, 이 부분들을 다시 복습이라도 해야 양심에 찔리지 않을 것 같다.
여튼..! 중요한 부분은 기초스터디가 끝나고 시간이 남아, 간단한 토이프로젝트를 진행했다..!
프로젝트명은 "프로메테우스 닉네임 생성기" 이다.
사용자가 입력한 이야기(텍스트)를 처리하여, 그 텍스트에 가장 적합한 별명을 생성하는 간단한 프로젝트이다.
단지 조그마한 차별점은..! 유머를 넣었다는 점이다!
가령 텍스트에서 "초등학생"이라는 키워드가 인식된다면, "초딩", "급식도둑" 등과 같이 다소 매운(?)맛의 별명을 지을 수 있게끔 데이터를 만들었다.
우선 프로젝트의 과정은 다음과 같다.
1. 자기소개 글이 들어오면 필요 없는 키워드 추출
2. 글에서 중요한 키워드 추출
3. 글에서 추출한 중요 키워드와 카테고리 내 단어 간의 유사도 측정 (데이터셋 기반)
4. 이어붙이기(명사 / 관형사 고려)
1. 자기소개 글이 들어오면 필요 없는 키워드 추출 &
2. 글에서 중요한 키워드 추출
한국어 추출에 용이한 파이썬 패키지인 koNLPy를 이용하였다.
이는 한국어 텍스트에서 유용한 특성을 추출한다.
3. 글에서 추출한 중요 키워드와 카테고리 내 단어 간의 유사도 측정 (데이터셋 기반)
데이터셋은 다음과 같이 만들어서, 약 500개 가량을 만들었다.
이후 유사도 측정 모델이 이 프로젝트의 핵심인데, fastText 모델을 사용하였다. fastText에 관한 논문(Enriching Word Vectors with Subword Information(FastText))를 읽고 구현하였으며, 관련 논문 리뷰는 추후 업로드 예정이다.
- fastText는 Facebook의 AI Research Lab에서 만든 단어 임베딩 및 텍스트 분류 학습을 위한 라이브러리이다.
- fastText는 CBOW, SKIPGRAM 기반의 기법이 존재한다.
- 또한 OOV(Out Of Vocabulary)에 해당되는 단어 또한 기존의 단어를 조합하여 유사도를 측정하는 것이 가능하여, 해당 모델을 고르게 됐다.
4. 개발
개발은 프론트엔드 / 백엔드로 이루어졌으며,
기본 알고리즘은 파이썬 알고리즘을 사용하였고(패키지 이용을 위함)
프론트엔드와 백엔드는 HTML과 CSS, 그리고 nodeJS의 Express JS 프레임워크를 사용하여 간단하게 구현하였다.
구현한 코드는 https://github.com/easyminnn/Prometheus_Nickname_Generator/tree/main를 참고하면 된다.
5. 구현결과 & 시연
코드를 구현하여 UI는 다음과 같다.. ㅎㅎ
5. 후기
간단하고 재밌는 프로젝트였다. 이번 프로젝트를 통해 NLP에 크게 관심갖게 됐다. 회의 도중 ChatGPT의 프롬포트를 활용하여 구현하자는 이야기도 나와서, GPT에 관한 공부도 조금 하게 됐는데 상당히 흥미 있는 부분들이 많았다. GPT관련 논문과 더불어 2020년대부터 급성장한 NLP분야에 대해 조금 더 깊게 연구해보고자 하는 호기심이 생기게 됐다. 앞으로 NLP 분야에 관한 포스팅을 열심히 해보려 한다. 끝~
'대외활동&프로젝트&대회' 카테고리의 다른 글
해커톤 참가 후기(2023 HACKUTHON - 고려대학교 디자인조형학부x정보대학x정보보학부 주관 해커톤) (2) | 2023.08.22 |
---|