Text 데이터를 핸들링하는 기본적인 TextMining 내용
torchtext.data.utils.get_tokenizer(tokenizer, language=’en’)
- 파라미터 tokenizer: 어떤 방식으로 토큰화를 진행할지 결정해주기
- 적어주지 않으면 그냥 split() 기능을 하도록 설정
- 기본적으로 많이 하는 것이 ‘basic_english’
‘basic_english’ 예시
tokenizer = torchtext.data.utils.get_tokenizer('basic_english')
tokenizer("You can now install TorchText using pip!")
# ['you', 'can', 'now', 'install', 'torchtext', 'using', 'pip', '!']
기본적으로 lower() 처리 해주고, 특수문자 분리 후 split() 하는 듯?
torchtext.vocab.vocab(ordered_dict: Dict, min_freq: int = 1, …)
- key가 단어, value가 단어의 빈도로 구성된 ordered_dict에서 최소 min_freq 의 value를 가지는 key 단어를 추출하는 것
- len() 을 통해 해당하는 단어의 개수를 뽑을 수 있음
print(counter)
vocab = torchtext.vocab.vocab(counter, min_freq=1)
print(f"Vocab size if {len(vocab)}")
# counter({'.': 225971, 'the': 203843, ',': 165685, ... , '43-27-3': 1})
# Vocab size if 95810
torchtext.vocab.vocab.get_stoi()
- tokens → indices
- 보통 encode, encoder로 사용
vocab = torchtext.vocab.vocab(counter, min_freq=1)
vocab.get_stoi()
# {'43-27-3': 95809,
# 'rauffer': 95807,
# 'and': 95802,
# ...}
key가 token, value가 index로 구성된 dict 객체를 반환함
‘bears’의 index를 뽑아보자
vocab.get_stoi()['bears'] # 3
torchtext.vocab.vocab.get_itos()
- indces → tokens
- 보통 decode, decoder로 사용
vocab = torchtext.vocab.vocab(counter, min_freq=1)
vocab.get_itos()
# ['wall',
# 'st',
# '.',
# 'bears',
# 'claw',
# ...]
index 순으로 구성된 token의 list 객체를 반환함
3번째 token을 뽑아보자
vocab.get_itos()[3] # 'bears'
sklearn.feature_extraction.text.CountVectorizer()
sklearn의 내장된 객체로 단어들의 frequency를 확인할 수 있음, 대소문자 구분 안 함 (모두 소문자 처리)
vectorizer = CountVectorizer()
corpus = [
'I like hot dogs.',
'The dog ran fast.',
'Its hot outside.',
]
vectorizer.fit(corpus) # fit: corpus를 이용하여 단어 사전을 추출함
# 단어 사전에 대해 corpus의 단어 카운팅
print(vectorizer.transform(corpus).toarray())
# [[0 1 0 1 0 1 0 0 0]
# [1 0 1 0 0 0 0 1 1]
# [0 0 0 1 1 0 1 0 0]]
# 단어 사전에 대해 해당 문장 단어 카운팅
print(vectorizer.transform(['My dog likes hot dogs on a hot day.']).toarray())
# [[1 1 0 2 0 0 0 0 0]]
사실 요즘은 NLP 한다 하면 HuggingFace 라는 모듈을 쓰는 게 국룰이라고 한다.
'boostcamp AI Tech > 기타 정리' 카테고리의 다른 글
[DL Basic] Generative Models - Autoregressive Models (0) | 2023.03.26 |
---|---|
[DL Basic] Optimization (0) | 2023.03.21 |
[DL Basic] Neural Networks 기본 (0) | 2023.03.20 |
[DL Basic] 딥러닝의 개념과 역사 (0) | 2023.03.20 |