텍스트 전처리(1)

HojunJang·2024년 3월 4일

텍스트 전처리(Text Preprocessing)란?

  • 배경 : 초거대 인공지능 시대에도 유효한 데이터 전처리

    • LLM의 시대에서 모델링을 하는 과정을 크게 6단계로 나누는데 그 중 4단계나 포함할 정도로 중요한 과정이다!
  • 방법

    • HTML태그, 특수문자, 이모티콘
    • 정규표현식
      • 특정 정보 추출
    • 불용어(Stopword)
      • 의미 없는 단어들 제거
    • 어간추출(Stemming)
      • 의미를 가진 부분만 추출
    • 표제어추출(Lemmatizing)
      • 원형 추출 ex) am, are -> be
  • Preprocessing Pipeline

  • 토큰화(Tokenization)

    • 주어진 데이터를 토큰이라 불리는 단위로 나누는 작업

    • 토큰이 되는 기준은 다를 수 있음(어절, 단어, 형태소, 음절, 자소 등)

    • Character-based/Word-based/Subword-based

    • 왜 토큰화하는가?

      • 단어 의미를 밀집 벡터로 표현하기 위해 단어들을 사전화
        • 어떻게 토큰화를 하였는지에 따라 모델의 성능과 학습에 직결됨
    • 고려사항

      • 구두점이나 특수 문자를 단순 제외
      • 줄임말과 단어 내 띄어쓰기
      • 문장 토큰화 : 단순 마침표를 기준으로 자를 수 없음
    • 한국어 토큰화의 어려움

      • 영어는 합성어와 줄임말에 대한 예외처리만 한다면, 띄어쓰기 토큰화를 수행해도 단어 토큰화가 잘 작동
      • But, 한국어는 형태소 단위의 토큰화가 필요
        • 조사라는 것이 존재
        • 띄어쓰기가 잘 지켜지지 않음 -> 잘 안되어 있더라도 사람들이 잘 이해하기 때문에
    • 문장 토큰화
      • 문장 분리
    • 단어 토큰화
      • 구두점 분리, 단어 분리
      • Hello, World! -> Hello / , / World / !
  • 텍스트 정제

    • 코퍼스 내에서 토큰화 작업에 방해가 되거나 의미가 없는 부분의 텍스트, 노이즈 제거 작업
    • 불용어, 특수문자 제거
    • 대소문자 통합
    • 중복 문구 제거
    • 다중 공백 통일 등
  • 정규화(Normalization)

    • Stemming(어간 추출)
      • 어형이 변형된 단어로부터 접사 등을 제거하고 그 단어의 어간을 분리해내는 것
      • 심플하고 빠름
      • 포터 스태머 알고리즘
    • Lemmatization(표제어 추출)
      • 품사 정보가 보존된 형태의 기본형으로 변환
      • 가장 섬세한 방법? => 형태학적 파싱(parsing 구문분석)
      • 형태소란?
        • 의미를 가진 가장 작은 단위
        • 어간(stem) - 단어의 의미를 담고 있는 핵심 부분
        • 접사(affix) - 단어에 추가적인 의미를 주는 부분
      • 원형 추출
      • 더 정확하지만 느림
  • 편집거리(Edit distance)

    • Levenshtein distance
    • 나는, 난 1
    • hat, cat 1
    • s1을 s2로 바꾸는 최소한의 횟수
    • delete, insert, substitution = 연산횟수 판별 방법
  • 정규표현식(Regex)

    • 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어
    • Python 뿐만 아니라 문자열을 처리하는 모든 곳에서 사용됨
    • python에서는 re라이브러리를 이용해 사용 가능

SentencePiece

  • Google이 공개한 Tokenization 도구
  • BPE, unigram 방식 등 다양한 subword units를 지원함

Tokenizer

  • Huggingface에서 제공하는 토큰화 라이브러리

한국어 전처리를 위한 대표적인 라이브러리

  • KoNLPy
    • 한국어 자연어처리를 위한 대표적 python Library (=r에서 텍스트 마이닝에 사용하던 KoNLP와 사용법 동일)
    • Twitter, Komaran, Mecab 등 다양한 형태소 분석기들을 제공
    • morphs : 형태소 추출
    • pos : 품사 태깅
    • nouns : 명사 추출
  • NLTK(Natural Language Toolkit)
    • 영어로 된 텍스트 자연처리를 위한 대표적 python Library
    • Classification, Tokenization 등 50개가 넘는 library를 제공하며 쉬운 interface를 제공
profile
일단 취업하고 싶어요

0개의 댓글