nlp
-
[Deep Learning] Bag-of-Words(BoW) - CountVectorizer, TF-IDF VectorizerData Science/Machine Learning & Deep Learning 2021. 4. 18. 23:36
머신러닝 모델에 텍스트를 이용하기 위해서는 텍스트를 토큰화한 것을 컴퓨터가 이해할 수 있도록 벡터화 해주어야 합니다. 벡터화 방법 중 BoW( Bag of Words )는 단어의 존재 여부와 그 빈도 정보만을 고려해 벡터화하는 모델입니다. CountVectorizer 단어의 출현 빈도로 여러 문서를 벡터화하는 방법 행에 문서, 열에 토큰, 그 값(value)으로 문서에서 토큰의 출현 횟수 모든 문자를 소문자로 전환하여 계산 from sklearn.feature_extraction.text import CountVectorizer # Count vectorizer. vect = CountVectorizer(stop_words = 'english', max_features = 20) # fit & trans..
-
[Deep Learning] NLP - 통계적 트리밍(Trimming)Data Science/Machine Learning & Deep Learning 2021. 4. 15. 00:58
자연어 처리에서 불용어 사전을 이용해서 불용어를 직접 제거해주는 방법도 있지만, 통계적인 방법을 이용해서 전체 말뭉치에서 너무 많이 쓰였거나 너무 적게 쓰인 토큰을 제거해주는 방법도 있습니다. 위 왼쪽 그래프는 토큰화 후 토큰의 누적 분포를 나타낸 그래프입니다. 그래프를 통해 소수의 단어들이 전체 텍스트 데이터의 약 90%를 차지하고 있음을 알 수 있습니다. 이는 전체 말뭉치에서 자주 나타나는 단어들(그래프의 왼쪽)이거나 자주 나타나지 않는 단어들(그래프의 오른쪽)로 너무 많이 또는 너무 드물게 나타나기 때문에 텍스트 큰 의미를 가지지 못하고 통찰력을 제공하지 못할 확률이 높습니다. 따라서 통계적 트리밍으로 너무 많이 쓰인 토큰과 너무 적게 쓰인 토큰을 제거하여 우측 그래프와 같은 분포를 만들어 주겠습니..
-
[Deep Learning] NLP - 불용어 ( Stop Words ) 처리Data Science/Machine Learning & Deep Learning 2021. 4. 15. 00:12
어떠한 데이터를 토큰화한 후 문서에 많이 사용된 단어를 보면 'I', 'and', 'of' 등의 텍스트 내에서 큰 의미를 가지지 않는 것들을 볼 수 있습니다. 이는 그다지 텍스트의 내용을 이해하는데 도움이 되지 않는 것들로 불용어(Stop words) 라고 합니다. 대부분의 NLP 라이브러리는 불용어 사전을 내장하고 있습니다. spacy의 불용어 사전을 보겠습니다. import spacy # load the small english model nlp = spacy.load("en_core_web_sm") print(nlp.Defaults.stop_words) 먼저 데이터를 불러와 불용어를 제거하지 않고 토큰화를 해보았습니다. import spacy from spacy.tokenizer import Tok..
-
[Deep Learning] NLP - 텍스트 토큰화 ( Tokenization )Data Science/Machine Learning & Deep Learning 2021. 4. 13. 22:44
토큰(Token)은 보통 자연어 처리에서 최소단위로 사용되는데 단어, 형태소 등의 형태가 될 수 있습니다. 문서나 문장 등을 자연어 처리에 사용하기 위해 텍스트를 토큰으로 바꿔주는 토큰화(Tokenization)를 해야하는데, 토큰화를 올바르게 하기 위해서 아래와 같은 조건을 충족하는 것이 좋습니다. 반복 가능한 데이터 구조(list, generator 등)에 저장 가능하면 대문자 또는 소문자로 통일 가능하면 영문자, 숫자가 아닌 문자들을 제거해야함 - ex) 문장부호, 공백 등 NLP 라이브러리를 사용하기 앞서 파이썬을 이용하여 토큰화를 위한 함수를 만들어 보겠습니다. import re # 정규식 # []: [] 사이 문자를 매치, ^: not regex = r"[^a-zA-Z0-9 ]" # 치환할 문..