데이터분석

63. NLP, 자연어 처리

장수우 2024. 2. 27. 22:37
학습 주제
  • 토픽 모델링
  • LDA
  • 워드 클라우드
  • NLP, 자연어 처리
  • 주요 프레임워크
주요 학습 내용
  • 토픽 모델링(Topic Modeling)
    • 대규모 텍스트 데이터에 존재하는 다양한 주제를 자동으로 식별하고 분류하는 과정
    • 데이터 안에 숨겨진 주제 구조를 발견하고 이해하는 목적이 있다
  • 토픽 모델링의 주제
    • 토픽 모델링의 주제는 일반적으로 단어의 집합으로 표현 
    • 텍스트 내의 특정 패턴이나 빈도를 기반으로 선택 
    • 데이터 소스에 따라 주제의 범위가 결정 
    • 하나의 문서에 다수의 주제를 포함 
    • 데이터의 트렌드와 특정 이벤트를 반영하는 경향 
    • 선택된 주제는 다른 텍스트 분석에 긍정적인 도움이 되는 방향으로 사용될 수 있다.
  • 토픽 모델링 사례
    • 직원 복지를 위해 설문 결과를 분석 – Dell 사례
      1. Dell 회사는 많은 직원들의 고민과 생각을 알고 싶어하여 이를 위해 직원 만족도 설문 조사를 분석 
      2. 약 10,000개가 넘는 텍스트 설문 조사 과정을 진행, 과정에서 토픽 모델링을 활용 
      3. 직원들의 의견을 빠르고 직관적으로 파악, 운영 효율 증가
    • 검색어 트랜드 - NAVER
      1. 국내 검색 엔진 회사인 네이버에서 제공하는 인기 검색어 
      2. 사람들의 관심도와 전반적인 트랜드를 확인할 수 있다
      3. 이를 통해 사업 인사이트, 마케팅 아이디어 등을 얻을 수 있다.
        - 겨울이 다가오니 털신발을 팔아보자
        - 여름이 다가오니 기능성 운동복이 좋겠다. 
        - 요즘은 “도파민”이라는 단어를 많이 사용하니, 우리 제품에도 그런 단어를 녹여봐야지

  • 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의 중요한 두 확률 값
    1. 문서에 어떤 토픽이 들어있는가
      - P(토픽 t | 문서 d) 라고한다.
    2. 각 토픽에 어떤 단어가 들어 있는가
      - P(단어 w | 토픽 t) 라고 한다.
  • 확률 값의 의미
    • P(토픽 t | 문서 d)
      - 특정문서 d에서 토픽 t가 차지하는 비율
      - 문서에서 각 토픽이 얼마나 중요한지를 나타낸다.
    • P(단어 w | 토픽 t)
      - 특정 토픽 t에서 단어 w가 차지하는 비율
      - 토픽에 특정 단어가 나타낼 확률
    • P(토픽 t | 문서 d, 단어 w)
      - 특정 단어가 어떤 문서의 주제에 속할 확률
      - 어떤 단어가 문서의 주제와 얼마나 잘 맞는지를 나타낸다.
      - 값이 크면, 특정 단어가 그 문서의 주제와 매우 밀접한 관련이 있음을 의미한다.
    • LDA에서 최종적으로 유추해야하는 값이지만 직접적으로 구하기가 어렵다.
  • 알고리즘 적용 과정
    1. 토픽 개수 K 설정 (사용자 몫)
    2. 문서 내 모든 단어에 무작위로 K 토픽 중 하나를 할당
    3. 단어 w의 토픽 할당을 결정하기 위해 나머지 단어들의 할당 결과를 활용
      - P (토픽 t | 문서 d) * P (단어 w | 토픽 t) 계산
      • 이 값이 제일 커지는 t를 w에 재 할당
      • 전체 문서의 모든 단어들을 대상으로 연산을 진행
      • 종료 시점에 도달할 때까지 반복 진행
        ex) w에 할당된 t의 변화가 없는 시점까지
              정해진 업데이트 횟수 도달까지 
    4. 최종 결과 분석
      - 토픽에 존재하는 단어를 보고 토픽이 의미하는 주제를 사용자가 정의
      - 할당된 토픽을 기준으로 문서에 존재하는 토픽을 분석한다.

  • 워드 클라우드 (Word Cloud)
    • 텍스트 데이터를 시각적으로 표현한 것
    • 문서나 데이터에서 가장 빈번하게 등장하는 단어들을 시각적으로 돋보이게 하는 방법
    • 자주 등장하는 단어는 더 크고 두드러지게 표시
    • 대량의 텍스트 데이터에서 중요한 키워드의 빠르고 직관적 이해를 위함 
    • 데이터 해석을 위한 직관적인 접근 가능
    • 활용 분야
      1. 소셜 미디어 : 트렌드 & 핫 토픽
      2. 시장 조사 분석 : 소비자 리뷰 & 피드백 
      3. 교육 : 학습 자료 내용 요약 및 시각화 
    • 보고자 하는 목적에 맞춰 데이터를 전처리 해야 함
    • 일반적으로 특수 문자와 숫자는 제거

  • 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에서 다룬 감정 분석도 문장 분류의 한 종류 
      - 클래스 : 긍정 / 부정 
      - ʻ중립’ 감정도 다루는 경우가 있음
    • 감정 분석 말고도 다양한 하위 테스크가 존재 
    • 분류 이외의 다른 복잡한 문제에서 문장 분류에 특화된 기술 모델을 사용
      - 분류의 특화된 모델은 문장을 분석하는 능력이 좋다
    • 문장 분류에는 다양한 하위 문제가 존재 
      1.  감정 분석 (Sentiment Analysis) 
      2. 주제 분류 (Topic Classification) : 글이 속한 주제 탐지 (스포츠, 정치, 엔터 등) 
      3. 의도 분석 (Intent Detection) : 발화의 의도 파악 (정보 요청, 구매, 예약, 질의 등) 
      4. 빠른 업무 배분 가능 
      5. 언어 감지 (Language Detection) : 번역에서 언어 감지 등에 사용 
    • 복잡한 문제를 풀기 위한 베이스 모델로 문장 분류 모델을 사용 
      1. 텍스트 요약 
      2. 텍스트 생성
      3. QA 챗봇
      4. 등등
  • 순환 신경망 (Recurrent Neural Network, RNN)
    • 딥러닝을 활용한 초기 텍스트 처리 모델 
    • 사람이 글을 읽고 이해하는 과정을 모방해 모델을 설계 
      1. 단어를 하나씩 입력 받고 
      2. 이전에 이해한 내용을 바탕으로 새로운 정보를 생성 
      3. 모든 단어를 처리하는 과정까지 이를 반복 순환(Recurrent) 
      4. 마지막 생성된 정보를 바탕으로 분류 진행
  • 주의 메커니즘 (Attention Mechanism)
    • 순환 신경망 (RNN) 이후에 나타난 새로운 분석 방법 
    • 입력으로 받은 텍스트 정보에서 딥러닝 모델이 주의(Attention)를 집중할 단어를 자동을 판단 
    • 집중된 단어를 바탕으로 NLP 문제를 처리 
    • 단어의 정보를 모델 스스로 판단
    • 높은 성능, 다양한 정보 추출 가능
  • Tokenize 
    • 딥러닝 모델의 전처리는 모델마다 상이함
    • HuggingFace는 특정 모델에 맞는 전처리 코드를 제공 
    • 목표하는 모델 HF 페이지 이름을 제공하면
    • 그 모델의 전처리 Tokenizer를 제공
      - Auto : HF 페이지 이름만으로 목표하는 것들을 자동으로 가져올 수 있음 
    • Stop words, Stemming 사용하지 않음 
    • Tokenizer의 결과로 
      - Token의 index와 
      - 기타 모델 입력 데이터가 생성 
반응형