데이터분석
63. NLP, 자연어 처리
장수우
2024. 2. 27. 22:37
학습 주제
- 토픽 모델링
- LDA
- 워드 클라우드
- NLP, 자연어 처리
- 주요 프레임워크
주요 학습 내용
- 토픽 모델링(Topic Modeling)
- 대규모 텍스트 데이터에 존재하는 다양한 주제를 자동으로 식별하고 분류하는 과정
- 데이터 안에 숨겨진 주제 구조를 발견하고 이해하는 목적이 있다
- 토픽 모델링의 주제
- 토픽 모델링의 주제는 일반적으로 단어의 집합으로 표현
- 텍스트 내의 특정 패턴이나 빈도를 기반으로 선택
- 데이터 소스에 따라 주제의 범위가 결정
- 하나의 문서에 다수의 주제를 포함
- 데이터의 트렌드와 특정 이벤트를 반영하는 경향
- 선택된 주제는 다른 텍스트 분석에 긍정적인 도움이 되는 방향으로 사용될 수 있다.
- 토픽 모델링 사례
- 직원 복지를 위해 설문 결과를 분석 – Dell 사례
- Dell 회사는 많은 직원들의 고민과 생각을 알고 싶어하여 이를 위해 직원 만족도 설문 조사를 분석
- 약 10,000개가 넘는 텍스트 설문 조사 과정을 진행, 과정에서 토픽 모델링을 활용
- 직원들의 의견을 빠르고 직관적으로 파악, 운영 효율 증가
- 검색어 트랜드 - NAVER
- 국내 검색 엔진 회사인 네이버에서 제공하는 인기 검색어
- 사람들의 관심도와 전반적인 트랜드를 확인할 수 있다
- 이를 통해 사업 인사이트, 마케팅 아이디어 등을 얻을 수 있다.
- 겨울이 다가오니 털신발을 팔아보자
- 여름이 다가오니 기능성 운동복이 좋겠다.
- 요즘은 “도파민”이라는 단어를 많이 사용하니, 우리 제품에도 그런 단어를 녹여봐야지
- 직원 복지를 위해 설문 결과를 분석 – Dell 사례
- LDA (Latent Dirichlet Allocation)의 기본 가정
- LDA란, 문서에 내재되어 있는 토픽을 찾아가는 알고리즘
- 전체 문서는 여러 개별적인 문서들의 집합으로 구성되며,
- 하나의 개별 문서는 여러 개의 주제로 구성되고, 하나의 주제는 여러 단어들로 구성된다는 가정
- 예시
- 문서 1 : 우리 부모님은 건강을 위해 아침마다 수영을 하시고 저녁에는 산책을 합니다.
- 문서 2 : 나와 동생은 햄버거를 좋아합니다. 특히 치킨이 들어간 햄버거를 좋아하고, 어제는 피자를 먹었습니다.
- 문서 3 : 오늘은 나의 생일이라 햄버거를 먹었습니다. 그런데 살이 너무 많이 쪄서 산책과 수영을 시작했습니다.
각 문서를 구성하는 토픽의 구성을 보면
문서 1 : 100% 토픽 A / 문서 2 : 100% 토픽 B / 문서 3 : 67% 토픽 A & 33% 토픽 B
또한, 각 토픽을 구성하는 단어를 보면
토픽 A : 건강 (20%) / 수영 (40%) / 산책 (40%)
토픽 B : 햄버거 (60%) / 치킨 (20%) / 피자 (20%) - 확률이나 비율의 집합을 분포로 표현한 것을 Dirichlet 분포라고 함
- LDA는 문서 표면에 드러나지 않은 숨어있는 토픽의 확률 분포(Latent Dirichlet)를 가정하고,
각 단어를 토픽에 할당(Allocation)하는 분석 방법
- LDA의 중요한 두 확률 값
- 문서에 어떤 토픽이 들어있는가
- P(토픽 t | 문서 d) 라고한다. - 각 토픽에 어떤 단어가 들어 있는가
- P(단어 w | 토픽 t) 라고 한다.
- 문서에 어떤 토픽이 들어있는가
- 확률 값의 의미
- P(토픽 t | 문서 d)
- 특정문서 d에서 토픽 t가 차지하는 비율
- 문서에서 각 토픽이 얼마나 중요한지를 나타낸다. - P(단어 w | 토픽 t)
- 특정 토픽 t에서 단어 w가 차지하는 비율
- 토픽에 특정 단어가 나타낼 확률 - P(토픽 t | 문서 d, 단어 w)
- 특정 단어가 어떤 문서의 주제에 속할 확률
- 어떤 단어가 문서의 주제와 얼마나 잘 맞는지를 나타낸다.
- 값이 크면, 특정 단어가 그 문서의 주제와 매우 밀접한 관련이 있음을 의미한다. - LDA에서 최종적으로 유추해야하는 값이지만 직접적으로 구하기가 어렵다.
- P(토픽 t | 문서 d)
- 알고리즘 적용 과정
- 토픽 개수 K 설정 (사용자 몫)
- 문서 내 모든 단어에 무작위로 K 토픽 중 하나를 할당
- 단어 w의 토픽 할당을 결정하기 위해 나머지 단어들의 할당 결과를 활용
- P (토픽 t | 문서 d) * P (단어 w | 토픽 t) 계산- 이 값이 제일 커지는 t를 w에 재 할당
- 전체 문서의 모든 단어들을 대상으로 연산을 진행
- 종료 시점에 도달할 때까지 반복 진행
ex) w에 할당된 t의 변화가 없는 시점까지
정해진 업데이트 횟수 도달까지
- 최종 결과 분석
- 토픽에 존재하는 단어를 보고 토픽이 의미하는 주제를 사용자가 정의
- 할당된 토픽을 기준으로 문서에 존재하는 토픽을 분석한다.
- 워드 클라우드 (Word Cloud)
- 텍스트 데이터를 시각적으로 표현한 것
- 문서나 데이터에서 가장 빈번하게 등장하는 단어들을 시각적으로 돋보이게 하는 방법
- 자주 등장하는 단어는 더 크고 두드러지게 표시
- 대량의 텍스트 데이터에서 중요한 키워드의 빠르고 직관적 이해를 위함
- 데이터 해석을 위한 직관적인 접근 가능
- 활용 분야
- 소셜 미디어 : 트렌드 & 핫 토픽
- 시장 조사 분석 : 소비자 리뷰 & 피드백
- 교육 : 학습 자료 내용 요약 및 시각화
- 보고자 하는 목적에 맞춰 데이터를 전처리 해야 함
- 일반적으로 특수 문자와 숫자는 제거
- Natural Language Tool Kit (NLTK)
- 전통적인 NLP 기법을 구현한 패키지 모음
- 전처리, 딥러닝 이전의 NLP 방법들이 많이 활용됨
- https://www.nltk.org/
- PyTorch, TorchText
- Facebook에서 개발한 머신 러닝 오픈 소스 라이브러리, 특히, 딥러닝에 특화
- TorchText는 PyTorch에서 제공하는 NLP에 특화된 내부 라이브러리
- (초기 ~ 최신의) 딥러닝 모델을 쉽게 구현할 수 있는 인터페이스 제공
- 데이터 전/후처리와 모델 학습에 필요한 여러 요소를 제공
- https://pytorch.org/text/stable/index.html
- HuggingFace
- 자연어 처리에 특화된 커뮤니티 기반의 라이브러리
- NLP를 비롯해 다양한 연구 분야(이미지, 음성, 생성 등)의 연구 성과를 공유 & 활용 가능
- 손쉬운 사용과 학습을 위한 유용한 기능을 내포
- 데모 사이트(Spaces) 사용, 데이터 업로드 & 다운로드(Datasets)가 가능
- 매우 다양한 연구 결과물(학습 결과 모델, 데이터, 데모 등)이 빠르게 업데이트
- 연구 결과물을 공통된 인터페이스로 강제, 코드 진행의 통일성 제공
- https://huggingface.co/
- KoNLPy
- 자연어 처리(NLP) 중 한글 데이터 처리에 특화된 파이썬 라이브러리
- 한국어에 특화된 전처리 기법을 많이 갖고 있음
- 형태소 분석
- 학교에 갑니다 > 학교 / 에 / 가/ㅂ니다 - 품사 태깅 및 추출
- 한국어 단어에 특화된 품사 예측
- https://konlpy.org/en/latest/
- 문장 분류 (Sentence Classification)
- 텍스트 데이터를 활용해 분류 문제를 푸는 것
- 정해진 클래스 중 어떤 클래스에 속하는지를 판단
- 텍스트의 의미를 이해하고 구조화된 방식으로 분류를 하는 것이 목표
- Part4에서 다룬 감정 분석도 문장 분류의 한 종류
- 클래스 : 긍정 / 부정
- ʻ중립’ 감정도 다루는 경우가 있음 - 감정 분석 말고도 다양한 하위 테스크가 존재
- 분류 이외의 다른 복잡한 문제에서 문장 분류에 특화된 기술 모델을 사용
- 분류의 특화된 모델은 문장을 분석하는 능력이 좋다 - 문장 분류에는 다양한 하위 문제가 존재
- 감정 분석 (Sentiment Analysis)
- 주제 분류 (Topic Classification) : 글이 속한 주제 탐지 (스포츠, 정치, 엔터 등)
- 의도 분석 (Intent Detection) : 발화의 의도 파악 (정보 요청, 구매, 예약, 질의 등)
- 빠른 업무 배분 가능
- 언어 감지 (Language Detection) : 번역에서 언어 감지 등에 사용
- 복잡한 문제를 풀기 위한 베이스 모델로 문장 분류 모델을 사용
- 텍스트 요약
- 텍스트 생성
- QA 챗봇
- 등등
- 순환 신경망 (Recurrent Neural Network, RNN)
- 딥러닝을 활용한 초기 텍스트 처리 모델
- 사람이 글을 읽고 이해하는 과정을 모방해 모델을 설계
- 단어를 하나씩 입력 받고
- 이전에 이해한 내용을 바탕으로 새로운 정보를 생성
- 모든 단어를 처리하는 과정까지 이를 반복 순환(Recurrent)
- 마지막 생성된 정보를 바탕으로 분류 진행
- 주의 메커니즘 (Attention Mechanism)
- 순환 신경망 (RNN) 이후에 나타난 새로운 분석 방법
- 입력으로 받은 텍스트 정보에서 딥러닝 모델이 주의(Attention)를 집중할 단어를 자동을 판단
- 집중된 단어를 바탕으로 NLP 문제를 처리
- 단어의 정보를 모델 스스로 판단
- 높은 성능, 다양한 정보 추출 가능
- Tokenize
- 딥러닝 모델의 전처리는 모델마다 상이함
- HuggingFace는 특정 모델에 맞는 전처리 코드를 제공
- 목표하는 모델 HF 페이지 이름을 제공하면
- 그 모델의 전처리 Tokenizer를 제공
- Auto : HF 페이지 이름만으로 목표하는 것들을 자동으로 가져올 수 있음 - Stop words, Stemming 사용하지 않음
- Tokenizer의 결과로
- Token의 index와
- 기타 모델 입력 데이터가 생성
반응형