Data Science/NLP

텍스트 전처리 과정과 사전의 쓰임

준나이 2019. 4. 5. 17:23

text 전처리 과정

 

  1. 텍스트
    • 텍스트는 대표적인 비정형 데이터이고, 텍스트 그 자체로는 분석을 할 수 없기 때문에 일정부분 정형화된 feature의 형태로 나타내야한다.
  2. 형태소 분석
    • 분석에서 feature 하나하나는 의미를 가지고 있어야하기 떄문에 한국어에서 의미를 가지는 최소 단위인 형태소 단위로 텍스트를 잘게 쪼개줘야 한다.
    • 도메인마다 서로 다른 단어들이 존재하고 신조어가 등장하면 잘못된 형태로 쪼개기 때문에 형태소 분석기가 올바르게 분석을 할 수 있도록 사용자 사전이필요하다. (미등록 단어 문제)
      잘못된 예: 팩트를 → 팩, 트, 를 / 헤어에센스가 → 헤어에, 센스, 가
    • 사용자 사전의 역할 : 텍스트 내 있는 키워드(혹은 어절)를 어떻게 파싱할것 같인가?에 대해 가이드를 준다.
  3. 불필요 pos 제거
    • 형태소 분석을 하면 형태소 단위로 쪼갤 뿐만 아니라 형태소의 pos(part of speech/품사)까지 판별된 형태로 제시된다.
    • pos tagging을 통해 얻은 pos 중 의미를 가진 형태소(명사, 동사, 형용사, 부사, 감탄사 등)만 골라내는 작업이다.
      • 영어에서 단어를 정규화(lemmatisation/stemming)하는 것과 비슷한 역할을 하게된다 
      • pos 제거의 예 : 예쁘다 → 예쁘,  / 예쁜 → 예쁘,  / 예쁘네 → 예쁘, 
    • pos 정보 정리 : joonable.tistory/com/33?category=682569
  4. 동의어 변환
    • 같은 의미를 가진 형태소들을 하나의 대표어로 변환하는 과정이다.
    • 특히 bag-of-words 기반에서는 "펙트"와 "팩트"는 전혀 다른 feature로 인식된다.
    • 텍스트 분석에서는 형태소를 feature로 사용하고 모든 형태소는 경우의 수가 너무 많기 때문에, feature의 수가 기하급수적으로 증가 할 수 있는데 이를 어느 정도 줄여주는 역할도 한다.
    • 이러한 동의어↔대표어간의 변환규칙들을 담은 사전을 동의어 사전이라고 한다.
  5. 불용어 제거
    • feature로써 역할을 하지 못하거나 의미 없는 형태소들을 제거한다.
    • 너무 많이 등장하거나 도메인에 따라서 의미가 없는 말들이 주로 불용어가 됨
    • 이러한 형태소들을 모아놓은 사전을 불용어 사전이라고 한다.
  6. 벡터화
    • 알고리즘에 따라 수치형태(numeric)로 연산 가능한 형태가 되어야한다.
    • 텍스트를 bag-of-words(tf_idf) / word-embedding(w2v) 도 벡터화 시키는 방법 중 하나이다.

 

작업 작업 후 상태 예시
텍스트 원본 텍스트 지에스 홈쇼핑에서 견미리 팩트 사면 사은품으로 앰플까지 주는데 홍진영 파데가 더 좋은것 같아요
형태소 분석 형태소 및 pos tag

 사전 적용 전 : ["지에스, "홈", "쇼핑", "에서", "견미리", "살", "면", "팩", "트", "사은", "품", "으로", "앰", "플", "까지", "주", "는데", "홍진영", "파", "데", "가",  "더", "좋", "은", "것", "같", "아요"]

사전 적용 후 : ["지에스", "홈쇼핑", "에서", "견미리", "팩트", "살", "면", "사은품", "앰플", "까지", "주", "는데", "홍진영", "파데", "가",  "더", "좋", "은", "것", "같", "아요"]

불필요 pos 제거 필요한 pos만 선별된 형태소 ["지에스", "홈쇼핑", "견미리", "팩트", "살", "사은품", "앰플", "주", "홍진영", "파데", "더", "좋", "같"]
동의어 변환 동의어는 치환된 형태소  ["gs shop", "견미리 팩트", "살", "사은품", "앰플", "주", "홍샷", "더", "좋", "같"]
불용어 제거 불용어가 제거된 형태소  ["견미리 팩트", "살", "사은품", "앰플", "주", "홍샷", "더", "좋"]
벡터화 벡터(numeric) [0, 0, 0, 1, ... 0, 0, 1, 1]

 

'Data Science > NLP' 카테고리의 다른 글

Bag-Of-Words Model  (0) 2018.11.25
Text Preprocessing (텍스트 전처리)  (0) 2018.11.25
NLP 기본 가정  (0) 2018.11.25
Text Similarity (Jaccard Similarity, Cosine Similarity, Euclidean distance)  (0) 2018.11.15