TIL/NLP

[NLP] Topic modeling - 빅리더 2차 프로젝트 (주) 대상

NINE1ll 2023. 11. 14. 18:41

특이사항 특성상 겹치는 데이터가 많고 각 시간 마다 나올 수 있는 단어가 한정적이라고 판단

자연어 처리로 오타 및 불용어 처리 이후 주제를 찾을 수 있는 방법을 찾음

LDA

 하이퍼파라미터 튜닝으로 49개의 토픽 도출

likelihood를 기반으로 주제를 추론하는데 각 주제 마다 겹치는 단어들이 너무 많음 (곡자, 교반, 온도, 수분기 등) 때문에  perplexitycoherence가 매우 좋지 않음 (논문 상 음수가 나올 수 없는데 음수로 나옴) , 심지어 BoW 방식이라 단어의 순서가 고려되지 않아서 문장의 뜻 파괴 

BERTopic

BERTopic은 각 문서 당 주제가 하나라고 추정해서 여러 개의 주제가 들어간 문장을 하나의 주제로 합쳐버림 ex) A + B 와 A만 있는 문장이 같은 주제로 엮임(LDA에서는 없던 오류)

Embedding 후 Cos유사도

 Cos유사도가 제일 낮은 것이 81% 평균적으로 유사도가 91% 가까이 됨 따라서 주제 분류가 어려움

Top2Vec

 BERTopic과 비슷한 내용

 직접 Topic 분류 진행

(2024.05.12 추가)

문장에 들어있는 여러 개의 '의미 단위'를 엑셀에 나눠 41개의 소(작은 의미)단위로 분류 이후 파이썬을 통해 여러 개의 소단위가 엮인 대단위로 분류

지금와서 생각해보면 휴먼 에러가 너무 많았음. (그래도 발표는 칭찬 받았으니까..)

- 현재 진행하고 있는 로또 후기 분석 프로젝트에서 ChatGPT를 사용해서 비슷한 작업을 하고 있는데, 프롬프트 엔지니어링만 잘하면 분류가 잘됨 (295개 중 240개 분류 완벽 : 81%의 정확도, few shot 방식 사용). (주)대상의 프로젝트는 기업 기밀이 들어있는 파일이었고, 내부 LLM을 구현하기에는 시간이 너무 부족했어서 수작업으로 할 수 밖에 없었음. (다음 프로젝트로 langchain 사용해서 구현해볼까 생각 중)