티스토리 뷰
텍스트 데이터 레이블
텍스트 데이터의 레이블은 다양한 형태로 존재할 수 있다. csv파일(comma-separated variables)은 문장 내의 comma와 혼동 될 수 있어서, tsv(tab-separated variables)를 권장한다.
- text classification의 경우는 클래스와 sentence가 tab으로 구분된 형태로 존재한다.
Class Sentence positive !빠른 배송 좋아요 negative 이게뭐야?진짜이게뭐야?리뷰보고구매했는데!나원참! negative 제품 손잡이가 생각보다 너무약해 사용하기가 불편합니다. ... ... - sentence ↔ sentence의 경우 1번과 같은 형태, 또는 대응되는 다른 파일로도 저장되어 있을 수 있다.
Sentence Segmentation
텍스트 데이터의 형태는 언제나 우리가 원하는 모양으로 아름답게 저장되어 있지 않을 수 있다. 따라서 Sentence Segmentation 테크닉으로 우리가 원하는 형태로 변환할 필요가 있다. NLTK와 같은 라이브러리로 변환이 가능하다. 대부분의 예시는 긴 문단의 글을 각각의 문장으로 나눠주거나, 툭툭 끊어진 문장을 완전한 각각의 문장으로 합쳐주는 형태의 변환이다.
Tokenization(분절)
Tokenization은 두 개 이상의 token들의 결합으로 이뤄진 단어를 쪼개는 작업이다. (Token이란?)
이전 포스팅에서 한국어는 교착어이기 때문에 어렵다고 얘기 했었는데, 교착어이기 때문에 반드시 필요한 작업이 tokenization이다.
Tokenization은 형태소 분석과 품사 태깅으로 이뤄진다(POS; Part of Speech Tagging). POS tagger의 종류는 매우 많고 특징도 다 다르다. 한국어에 가장 많이 쓰이는 형태소 분석기는 Mecab과 KoNLPy이다. POS tagger마다 신조어, 고유명사를 처리하는 능력이 조금씩 다르다. 주어진 문제에 맞는 정책을 가진 tagger를 선택해서 사용해야 한다.
Mecab을 설치한 후에 터미널을 통해서 아래의 예시를 실행시켜보면 다음과 같이 나온다.
echo "아버지가 방에서 나오신다." | mecab
echo "아버지가 방에서 나오신다." | mecab -O wakati
리뷰 데이터 실습
일단 class와 sentence를 분리한다.
#첫 번째 column(f1)만 따로 떼어내서 review.sorted.uniq.refined.label로 저장
cut -f1 ./review.sorted.uniq.refined.tsv > review.sorted.uniq.refined.label
두 번째 열은 mecab 분절을 먹여서 저장한다.
#2열만 떼서 mecab의 분절 결과만 review.sorted.uniq.refined.text.tok으로 저장
cut -f2 ./review.sorted.uniq.refined.tsv | mecab -O wakati > ./review.sorted.uniq.refined.text.tok
두 파일을 다시 합쳐서 review.sorted.uniq.refined.tok.tsv로 저장한다.
paste review.sorted.uniq.refined.label review.sorted.uniq.refined.text.tok > review.sorted.uniq.refined.tok.tsv
.py스크립트로 작성해서 실행시켜도 되지만, 하나하 절차를 터미널로 따라해보니 생각보다 어렵지는 않은 작업이다.
'Study > NLP' 카테고리의 다른 글
NLP with DeepLearning (6) - Word Embedding(prev) (0) | 2021.11.25 |
---|---|
NLP with DeepLearning (5) - Minibatch (0) | 2021.11.24 |
NLP with DeepLearning (4) - Subword Segmentation (0) | 2021.11.23 |
NLP with DeepLearning (2) - Corpus 정제 (0) | 2021.11.18 |
NLP with DeepLearning (1) - intro (0) | 2021.11.18 |
- Total
- Today
- Yesterday
- 전처리
- 스타트업
- Bert
- 파이프라인
- 머신러닝
- nlp
- productowner
- 자연어처리
- PM
- 쿠버네티스
- mlpipeline
- 딥러닝
- 인공지능
- PO
- Tennis
- 머신러닝파이프라인
- DDUX
- docker
- productresearch
- container
- dl
- torch
- 도커
- deeplearning
- Oreilly
- productmanager
- Kubernetes
- MLOps
- ML
- pmpo
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |