-
[Deep Learning] NLP - 어간추출(stemming) & 표제어추출(lemmatization)Data Science/Machine Learning & Deep Learning 2021. 4. 16. 15:46
어간 추출과 표제어 추출은 token 의 수를 줄일 수 있습니다.
apple, apples가 있다면 apple 하나로 하여 단어의 수를 줄일 수 있는 것입니다.
어간추출 Stemming
- 접사를 제거하고 단어의 의미가 포함된 핵심 부분만 남겨 변환
- 어간과 접사 분리( ing, ed, s 와 같은 것들을 제거 )
- ex ) wolves -> wolv
from nltk.stem import PorterStemmer ps = PorterStemmer() text = 'Wolves were feeding in the forest' words = text.split(" ") for word in words: print(ps.stem(word))
표제어추출 Lemmatization
- 단어들은 기본 사전형 단어 형태인 lemma(표제어)로 변환
- 명사의 복수형은 단수형으로, 동사는 타동사로
- ex ) wolves -> wolf
import spacy nlp = spacy.load("en_core_web_sm") lem = "Wolves were feeding in the forest" doc = nlp(lem) for token in doc: print(token.lemma_)
어간 추출은 표제어 추출보다 알고리즘이 간단해 속도가 빠릅니다.
조금 부정확할 수 있다는 단점이 있지만 사용하는데 있어서 성능이 나쁘다고 할 정도는 아닙니다.
반면 표제어 추출은 어간 추출보다 연산이 더 필요하기에 속도는 느리지만 더 체계화되어 있다는 장점이 있습니다.
'Data Science > Machine Learning & Deep Learning' 카테고리의 다른 글
[Deep Learning] Bag-of-Words(BoW) - CountVectorizer, TF-IDF Vectorizer (0) 2021.04.18 [Deep Learning] NLP - 통계적 트리밍(Trimming) (0) 2021.04.15 [Deep Learning] NLP - 불용어 ( Stop Words ) 처리 (0) 2021.04.15 [Deep Learning] NLP - 텍스트 토큰화 ( Tokenization ) (0) 2021.04.13 [Deep Learning] 손실함수(Loss Function) (0) 2021.04.13