티스토리 뷰

본격적으로 자연어처리를 위한 데이터 전처리 파이프라인에 대해서 알아보자.

크게 다음과 같은 절차를 따른다.

  1. 데이터(Corpus) 수집 
  2. 데이터 정제
  3. 레이블링 (optional)
  4. Tokenization(분절) : 형태소 분석기를 활용하여 분절 수행
  5. Subword Sefmentation (optional)
  6. Batchify : 사전 생성 및 word2index

Corpus 정제

코퍼스는 문장들로 구성된 데이터셋, 말뭉치를 말한다. 코퍼스는 크게 전형적인 노이즈를 제거(전각문자 등)해야 한다. 전각 문자는 Unicode 이전의 한중일 언어를 예로 들 수 있는데, 쉽게 얘기하면 standard가 아닌 legacy라고 생각하면 될 것 같다.

 

대소문자는 가능하면 통일하는 것이 좋다. NYC, n.y.c는 같은 뉴욕 시를 뜻하지만, 통일하지 않고 학습하게 되면 기계는 다른 두 단어로 인식하기 때문에 희소성이 높아진다(즉, 기계가 학습할 기회가 낮아진다). 하지만 딥러닝 시대에 들어서 임베딩하는 과정에서 알아서 분류하기 때문에 생략이 가능할 수도 있다.

 

코퍼스의 특성에 따른 노이즈를 제거(domain knowledge)해야한다. 또한 Task에 따라서 이모티콘은 무조건 버리지 않는다. 중요할수도, 중요하지 않을 수도 있다. 정제는 보통 Regular Expression(RegEx)를 활용하는 것이 용이하다. Python으로 파일 일괄 처리를 할 수도 있고, Text Editor(Sublime Text, VS Code 등)를 활용해서 결과를 보면서 처리할 수도 있다.

 

정제는 한 번으로 끝나지 않고, 적용 후 노이즈가 남아있는 지 확인, 다시 정제하는 방식으로 만족할 때까지 반복한다.

 

전각 문자 제거 실습

예제 데이터는 강의에서 제공하는 리뷰 데이터를 사용한다. tsv 형식이며 0열에는 neg/pos 레이블링이 되어있고, 1열에는 텍스트로 된 리뷰가 적혀있다. txt파일 형태로 전각/반각 문자가 각각의 column에 배치되어 있으며, python 스크립트를 통해 0열의 전각 문자를 1열의 반각 문자로 치환하는 작업을 진행한다.

text classification 실습에 쓰일 raw data 와 전각 문자/반각 문자가 포함된 txt파일.

터미널을 열고, 리눅스 명령어를 통해서 제공된 파이썬 스크립트를 실행한다.

python refine.py refine.regex.txt 1 < review.sorted.uniq.tsv > review.sorted.uniq.refined.tsv

전각 문자 제거 전
전각 문자 제거 후

전각 문자 제거 후 '' 라는 전각 문자가 사라진 것을 볼 수 있다.

 

스크립트에 포함된 전각 문자 제거 후에도 intractive하게 확인하면서 쓸데 없는 특수문자, 의미 없는 숫자나열, 세미 콜론 등을 없애주었다. (VScode replace 기능(.*)을 이용하면 쉽게 바꿀 수 있다)

^(positive|negative)\t[,.0-9\-=|;]+$

때로는 꼭 파이썬이 아니더라도 더 쉬운 방법들이 많이 있는 것 같다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함