본문 바로가기

Dev/NLP

[NLP/KoNLPy] 텍스트 전처리

  • 텍스트 전처리: 용도에 맞게 텍스트를 사전 처리하는 작업
  • 토큰화(tokenization): 코퍼스에서 토큰이라는 단위로 나누는 작업
  • 단어 토큰화(word tokenization)
    • 토큰의 기준을 단어로 하는 경우
    • 단어 단위 외에도 단어구, 의미를 갖는 문자열로 간주되기도 함
  • 토큰화에서 고려해야 할 사항
    • 구두점/특수문자를 단순 제외해서는 안됨
    • 줄임말과 단어 내에 띄어쓰기가 있는 경우
  • 문장 토큰화(sentence tokenization): 코퍼스 내에서 문장 단위로 구분하는 작업
  • 한국어에서 토큰화의 어려움
    • 교착어의 특성
    • 잘 지켜지지 않는 띄어쓰기

 

  • 정제(cleaning): 코퍼스로부터 노이즈 데이터 제거
  • 정규화(normalization): 표현 방법이 다른 단어들을 통합시켜서 같은 단어로 만듦
    • 표기가 다른 단어들의 통합
    • 대/소문자 통합
    • 불필요한 단어(노이즈 데이터)의 제거
      • 등장 빈도가 적은 단어
      • 길이가 짧은 단어
    • 정규 표현식

 

  • 표제어 추출(Lemmatization)
    • 단어들이 다른 형태를 가지더라도, 뿌리 단어를 찾아 단어의 개수를 줄일 수 있는 지 판단
    • 형태학적 파싱: 어간과 접사를 분리하는 작업
    • 단어의 형태가 적절히 보존되는 약상을 보이지만, 본래 단어의 품사 정보를 알아야 정확한 결과를 얻을 수 있음
  • 어간 추출(Stemming)
    • 형태학적 분석을 단순화한 작업 or 정해진 규칙으로 단어의 어미를 자르는 작업

 

  • 불용어(Stopword)
    • 문장에서 자주 등장하지만 실제 의미 분석을 하는 데는 거의 기여하는 바가 없는 단어
  • 정규 표현식
    • 특정 규칙이 있는 텍스트 데이터를 빠르게 정제 가능
  • 패딩(Padding)
    • 병렬 연산을 위해 데이터에 특정 값을 채워 데이터의 크기를 조정하는 것
    • 제로 패딩: 숫자 0을 사용해 데이터의 크기를 조정하는 것
  • 원-핫 인코딩(One-Hot Encoding)
    • 단어 집합의 크기를 벡터의 차원으로 하고, 표현하고 싶은 단어의 인덱스에 1의 값을 부여하고, 다른 인덱스에는 0을 부여하는 단어의 벡터 표현 방식
    • 정수 인코딩 수행 → 표현하고 싶은 단어의 고유한 정수를 인덱스로 간주, 해당 위치에 1 부여
    • 저장 공간 측면에서 매우 비효율적
    • 유사도 표현 불가

'Dev > NLP' 카테고리의 다른 글

[NLP/KoNLPy] 데이터  (0) 2023.07.03
[NLP/KoNLPy] 형태소 분석 및 품사 태깅  (0) 2023.07.03
[NLP/KoNLPy] NLP란?  (0) 2023.07.03