텍스트 전처리

김승혁·2023년 7월 11일
0

ML

목록 보기
2/9
post-thumbnail

전처리란

“데이터를 분석하기에 앞서 분석에 용이하도록
데이터를 정제/가공하는 작업”


How?

영어는 NLTK 패키지를,
한글은 KoNLPy 패키지를 사용한다.

텍스트 전처리

“텍스트 데이터 전처리로는

토큰화, 노이즈/불용어 제거, 정규화, 품사 태깅, 벡터화 등이 있다.”

  1. 토큰화 : 텍스트를 원하는 단위로 분절하는 작업이다. 문장 토큰화, 단어 토큰화 등이 있다.
    여기서 말하는 ‘토큰’은 분절하는 기준이 되는 ‘문장’이나 ‘단어’라고 생각하면 된다.
  2. 노이즈/불용어 제거 : 분석에 도움이 되지 않는 ‘노이즈/불용어’들을 제거하는 작업이다.
  3. 통일화 : 형태는 다르나 같은 의미를 가진 단어들을 통일시키는 작업이다. ‘어간 추출’과 ‘표제어 추출’이 있다.
  4. 품사 태깅 : 앞서 토큰화한 단어에 품사를 붙이는 작업이다.
  5. 벡터화 : 비정형 데이터인 텍스트를 정형화하는 작업이다. BoW, TF-IDF, word embedding 등이 있다.

토큰화

“텍스트를 원하는 단위로 분절하는 작업이다.”

보편적으로 문장 토큰화와 단어 토큰화를 사용한다.
1. 문장 토큰화 : 주로 . ! ? 등으로 구분한다. (NLTK에서 sent_tokenize() 함수를 지원한다.)
2. 단어 토큰화 :
(영어) 주로 공백 등으로 구분한다.
(NLTK에서 word_tokenize() 함수를 지원한다.)!

(한글) 최소 단위가 공백으로 구분되지만은 않기 때문에 별도의 word segmentation 작업을 해줘야 한다.

토큰화-정규표현식

“전체 문서에서 지칭하고 싶은 대상(일부 글자)을 정규표현식으로 표현하는 것”
예를 들어,
전체문서 “내년 경기는 1.5% 성장할 것으로 전망된다.”에서 한글만 남기고 싶다면?
컴퓨터한테 “한글만”이라고 어떻게 지시해야 할까요?

예를 들어,
href=“/webtoon/detail?titleId=783053&weekday=tue”에서
783053만 남기고 싶다면?
→ 숫자열만 남겨! 라고 명령할 수 있다면 좋겠다!

“문자열을 특정한 규칙으로 표현하는 방식”

re패키지를 사용하며, 대표적으로 findall(), sub() 함수 등을 사용한다.
숫자 → 0-9
알파벳 대문자 → A-Z
한글 자음 → ᄀ-ᄒ
등등!

텍스트 어그멘테이션

텍스트 어그멘테이션은 NLP 모델에서 성능을 향상시키기 위한 중요한 기술이다. 다양한 텍스트 어그멘테이션 방
법이 있지만, 여기서는 몇 가지 대표적인 방법을 살펴보자.

  1. Synonym Replacement
    문장에서 임의의 단어를 유의어로 바꾸는 것이다. 이렇게 하면 문장의 의미는 유지되면서 단어의 다양성이 증가한다.
    • 원본 문장: The cat sat on the mat.
    • 어그멘테이션 문장: The feline sat on the mat.

  2. Random Deletion
    임의의 단어를 문장에서 삭제하는 것이다. 이렇게 하면 모델이 누락된 단어를 예측하는 능력을 향상시킬 수 있다.
    • 원본 문장: I went to the store to buy some milk.
    • 어그멘테이션 문장: I went to the store to buy milk.

  3. Random Swap
    문장에서 임의의 두 단어를 서로 바꾸는 것이다. 이렇게 하면 모델이 단어 순서에 대한 다양한 경우를 고려하게 된다.
    • 원본 문장: I love pizza and pasta.
    • 어그멘테이션 문장: I pasta pizza and love.

  4. Random Insertion
    문장에서 임의의 단어를 추가하는 것이다. 이렇게 하면 모델이 문장의 다양한 길이를 고려하게 되며, 단어의 배치에 대한 다양성이 증가한다.
    • 원본 문장: She took a walk in the park.
    • 어그멘테이션 문장: She took a long walk in the park.

  5. Back Translation
    이 방법은 번역 모델을 사용하여 문장을 다른 언어로 번역한 다음, 다시 원래 언어로 번역하는 것 이다. 이렇게 하면
    원래 문장과는 약간 다른 문장이 생성되며, 모델이 다른 형태의 문장을 처리하는 능력을 향상시킬 수 있다. Back Translation을 수행하기 위해서는 번역 API를 사용해야 한다. 다양한 번역 API가 제공되고 있으며, 그 중에서도 Google Cloud Translation API, Microsoft Translator API, AWS Translate API 등이 대표적이다.

  6. Text Generation
    생성 모델을 사용하여 새로운 문장을 생성하는 것입니다. 이 방법은 크게 두 가지로 나눌 수 있습니다.
    첫째, 완전한 문장 생성 방법으로, 모델에 시작 문장을 주면 이를 기반으로 새로운 문장을 생성합니다.
    둘째, 문장 일부를 주고 나머지를 모델이 생성하도록 하는 방법으로, 이를 "Prompt-based Text Generation"이라고 합니다.

  7. Domain Adaptation
    방법은 특정 도메인에 적합한 문장을 생성하는 것입니다. 예를 들어, 의학 분야에서는 의료 용어나 특정 증상에 대한 설명 등이 필요하며, 이를 위해서는 해당 분야의 전문 지식이 필요합니다.

profile
어떻게 오셨나요

0개의 댓글