Data Analysis

Data Analysis/Data Analysis Practice

주피터 노트북에서 파이썬 모듈 자동 리로드하기

직접 만든 파이썬 모듈(.py)을 주피터 노트북(.ipynb)에서 불러와 사용하는 경우가 있습니다. 예를 들어, 파이썬 모듈로 만든 계산기 기능을 주피터 노트북에서 사용하는 경우를 생각해 볼게요. 아래와 같이 calculator.py라는 파일에 더하기와 빼기 기능을 하는 함수가 있습니다.plus()와 minus()라는 함수는 파라미터로 두 값을 받아와 각각 더한 값과 뺀 값을 리턴하는 함수입니다. 해당 함수를 example.ipynb라는 주피터 노트북 파일에서 한번 불러와 보도록 하겠습니다(참고로, calculator.py와 example.ipynb는 같은 디렉토리에 있어야 합니다).두 함수가 잘 불러와 지네요. 사용도 잘 되는지 확인해 볼까요?결과도 잘 나옵니다. 그러면, 이번엔 calculator.p..

Data Analysis/Natural Language Processing(NLP)

어간 추출(Stemming)

어간 추출이란? 특정한 단어의 핵심이 되는 부분을 어간(Stem)이라고 합니다. 그리고 단어에서 어간을 찾아내는 것을 어간 추출(Stemming)이라고 합니다. 서로 다른 형태의 단어들도 어간 추출을 하면 같은 단어로 통합되기 때문에 이를 정규화 방법 중 하나로 사용합니다. 아래는 어간 추출 알고리즘 중 하나인 포터 스테머 알고리즘(Porter Stemming Algorithm)의 규칙 일부입니다. 단순히 어미만 잘라내는 방식으로 어간을 찾고 있는데요. 그렇기 때문에 사전에 없는 단어가 결과로 나오기도 합니다. ● alize → al (Formalize → Formal) ● ational → ate (Relational -> Relate) ● ate → 제거 (Activate -> Activ) ● men..

Data Analysis/Natural Language Processing(NLP)

정규화(Normalization)

아래 단어들은 형태가 조금씩 다르지만 의미는 같습니다. ● US, USA, U.S., USA, America ... 이렇게 형태가 다르지만 같은 의미를 나타내는 단어들이 많아질수록 코퍼스는 복잡해지고 분석이 어려워집니다. 그래서 의미가 같은 단어라면 형태를 하나로 통일하는 게 좋습니다. 해당 과정을 정규화(Normalization)라고 합니다. 정규화에는 여러 방법이 있는데요. 이번 포스팅에서는 가장 보편적으로 사용되는 두 가지만 소개해 드리겠습니다. 정규화 방법: 대소문자 통합대부분의 프로그래밍 언어는 대소문자를 구분합니다. 그래서 코퍼스를 대문자나 소문자 중 하나로 통일하면 정규화가 됩니다. 영어 문법 상 대문자는 특수한 상황에서만 사용되고, 보통은 소문자가 많이 사용됩니다. 따라서 대문자를 소문자로..

Data Analysis/Natural Language Processing(NLP)

자연어 전처리 적용 I

이번 챕터에서 배운 전처리 방법들을 실제 데이터에 적용해 보겠습니다. 실습 준비하기 실습에는 IMDb 영화 리뷰 데이터를 사용하겠습니다. IMDb는 The Internet Movie Database의 약자로, 약 200만개 이상의 영화 관련 정보들이 저장되어 있는 데이터 베이스입니다. 실습에는 IMDb에 있는 데이터 중 10개만 가져와서 사용하겠습니다. 아래 imdb.tsv 파일을 확인해 주세요. imdb.tsv review 0"Watching Time Chasers, it obvious that it was made by a bunch of friends. Maybe they were sitting around one day in film school and said, \""Hey, let's pool..

Data Analysis/Natural Language Processing(NLP)

불용어 제거 실습

실습 설명 불용어 제거를 위한 함수 clean_by_stopwords()를 만들어 주세요. ● clean_by_stopwords()는 파라미터로 단어 토큰화된 코퍼스(tokenized_words)와 불용어 목록(stopwords_set)을 받습니다. ● 결과로는 불용어가 제거된 단어 토큰 리스트를 반환합니다. ● 불용어 목록은 NLTK에서 제공하는 기본 불용어 목록 세트를 받아와 사용합니다. main.py import nltk from nltk.corpus import stopwords from nltk.tokenize import word_tokenize from text import TEXT nltk.download('stopwords') nltk.download('punkt') corpus = TE..

Data Analysis/Natural Language Processing(NLP)

불용어(Stopwords)

코퍼스에서 큰 의미가 없거나, 분석 목적에서 벗어나는 단어들을 불용어(stopword)라고 합니다. 이런 단어들은 정확한 분석을 방해하기 때문에 제거해야 합니다. 불용어(Stopwords) 정의하기 불용어 제거는 다음과 같은 방식으로 진행됩니다. ● 불용어를 모아 놓은 불용어 세트 준비 ● 코퍼스의 각 단어 토큰이 불용어 세트에 포함되는지 확인 ● 불용어 세트에 있는 단어 토큰은 분석에서 제외 불용어 제거에 활용되는 불용어 세트는 분석을 하는 사람이 코퍼스의 형태, 분석의 목적을 고려해 미리 만들어야 합니다. 그런데 매번 분석을 할 때만다 불용어 세트를 새롭게 만드는 것은 번거롭겠죠? 분명 코퍼스의 종류에 상관 없이 많이 사용되는 불용어들이 있기 때문에, 그런 것들은 미리 정의해 두고 필요할 때마다 불러..

Data Analysis/Natural Language Processing(NLP)

정제 실습

실습 설명 등장 빈도와 단어의 길이를 입력받고, 입력받은 수 이하인 토큰을 정제하는 함수 clean_by_freq()와 clean_by_len()을 만들어 주세요. ● clean_by_freq()는 단어 토큰화된 코퍼스(tokenized_words)와 정제할 등장 빈도 기준(cut_off_count)을 파라미터로 받습니다. ● clean_by_len()은 단어 토큰화 된 코퍼스(tokenized_words)와 정제할 단어 길이 기준(cut_off_length)을 파라미터로 받습니다. ● 두 함수 모두 정제 후 남은 단어 토큰 리스트를 결과로 반환합니다. ● 실제로 만든 함수가 잘 동작하는지 확인하기 위한 실행 코드도 완성해 주세요. clean_by_freq()는 파라미터로 단어 토큰화 된 리스트와 cut..

Data Analysis/Natural Language Processing(NLP)

정제(Cleaning)

cleaned_by_freq = [word for word in tokenized_words if word not in uncommon_words] print('빈도수 3 이상인 토큰 수:', len(cleaned_by_freq)) 코퍼스에는 아무 의미도 없거나 분석의 목적에 적합하지 않은 단어들도 포함됩니다. 이런 단어들은 전처리 과정에서 제거해야 하는데요. 그 과정을 정제(Cleaning)라고 합니다. 자연어 데이터를 정제하는 방법은 여러가지인데요. 그 중에서도 등장 빈도, 단어 길이, 불용어 등을 기준으로 많이 사용합니다. 하나씩 살펴볼게요. 등장 빈도가 적은 단어 코퍼스에 등장하는 빈도가 너무 적은 단어는 분석에 도움이 되지 않기 때문에 제거해야 합니다. 실제 데이터로 살펴볼게요. 데이터는 실습 ..

Data Analysis/Natural Language Processing(NLP)

단어 토큰화 실습

실습 설명 text.py 파일에는 영어 자연어 코퍼스가 있습니다. 이상한 나라의 앨리스 본문 중 일부인데요. 해당 코퍼스를 전처리해 보겠습니다. 먼저 text.py에 있는 코퍼스(TEXT)를 불러와서 단어 토큰화해 주세요. main.py import nltk from text import TEXT from nltk.tokenize import word_tokenize nltk.download('punkt') corpus = TEXT tokenized_words = word_tokenize(corpus) # 테스트 코드 tokenized_words text.py TEXT = """Alice was beginning to get very tired of sitting by her sister on the b..

Data Analysis/Natural Language Processing(NLP)

단어 토큰화(Word Tokenization)

from nltk.tokenize import word_tokenize 분석에 활용하기 위한 자연어 데이터를 코퍼스(Corpus)라고 합니다. 한국어로는 말뭉치라고 하는데요. 코퍼스를 분석에 활용하려면 먼저 의미있는 작은 단위로 나눠야 합니다. 여기에서 '의미있는 작은 단위'를 토큰(Token)이라고 하고, 하나의 코퍼스를 여러 개의 토큰으로 나누는 과정을 토큰화(Tokenization)라고 합니다. 토큰화에는 단어 토큰화와 문장 토큰화가 있습니다. 분석의 목적에 맞게 둘 중 필요한 토큰화 방식을 적절하게 사용하면 되는데요. 문장 토큰화는 다음 챕터에서 알아보고, 일단 이번 챕터에서는 단어 토큰화만 배워보겠습니다. NLTK 설치 pip install nltk 다음으로, nltk 패키지와 단어 토큰화에 사..

달려라 국나뇽
'Data Analysis' 카테고리의 글 목록 (4 Page)