최근 노코드 툴, 데이터 플랫폼, ChatGPT 등이 등장하면서 데이터 분석가에게 요구되는 역량도 변화하고 있습니다. 이번 글에서는 데이터 분석가가 갖춰야 할 9가지 역량을 크게 하드 스킬과 소프트 스킬로 살펴보겠습니다. 데이터 분석가에게 필요한 하드 스킬 먼저 데이터 분석가에게 필요한 하드 스킬에 대해 살펴보겠습니다. 하드 스킬의 경우, 각 기업이나 팀마다 요구하는 것이 다를 수 있으니 기본적으로 이러한 역량들이 필요하다 정도로 봐주시면 좋겠습니다. 1) 사용 언어 데이터 분석가가 실무에서 데이터 추출 및 간단한 분석을 할 때 주로 SQL을 사용합니다. 따라서 요즘은 채용 과정에서 기본적으로 SQL 코딩 테스트를 보는 회사도 많습니다. 더불어 심화된 분석(요인 분석, 예측 모델링 등)이 필요할 때는 파..
scikit-learn 사용해보기 예제 데이터 제공 scikit-learn은 예제 데이터 세트를 제공합니다. 데이터가 없는 상황에서 원하는 기능을 간단하게 사용해 보고 싶을 때 유용하게 사용할 수 있는데요. 이번 튜토리얼에서는 와인 품질 관련 정보가 담긴 데이터를 사용해 볼게요. sklearn.dataset 패키지에 있는 load_wine()로 원하는 데이터 세트를 가져올 수 있습니다. 데이터는 data로(wine.data), 변수 이름은 feature_names로(wine.feature_names) 접근할 수 있는데요. 이 둘을 이용해 하나의 데이터 프레임을 만들어 볼게요. from sklearn.dataset import load_wine import pandas as pd wine = load_wi..
이번 포스팅에서는 전처리된 자연어 데이터를 활용한 감성 분석을 배워 보겠습니다. 감성 분석이란 자연어에 담긴 어조가 긍정적인지, 부정적인지, 혹은 중립적인지 확인하는 작업을 감성 분석(Sentiment Analysis)이라고 합니다. 예를 들어 어떤 상품의 리뷰가 아래와 같이 작성됐다고 할게요. I love it. I hate this. 첫 번째 리뷰에 등장하는 love는 긍정적인 의미입니다. 때문에 해당 리뷰가 많이 달린 상품은 고객 반응이 좋은 것으로 해석됩니다. 반대로 hate는 부정적인 의미이기 때문에, 해당 리뷰가 많이 달린 상품은 고객 불만족이 큰 것으로 해석되죠. 이렇게 코퍼스에 담긴 의미가 긍정인지 부정인지를 구분할 수 있으면 재미있는 인사이트를 얻을 수 있습니다. 하지만 수많은 리뷰들을 ..
패딩(Padding)이란? 예를 들어서, 아래와 같은 문장들이 있다고 가정해 보겠습니다. I love you You are so lovely I am loving you now 각 문장을 전처리 한 후에, 단어들을 등장 빈도로 정수 인코딩을 하게 되면 어떻게 될까요? 각 문장들은 길이와 토큰의 수가 다 다르기 때문에 인코딩된 정수의 개수도 서로 다르겠죠. 'I love you'는 3개, 'You are so lovely'는 4개, 'I am loving you now'에는 5개의 정수 인덱스가 포함될 겁니다. 그런데 만약에, 각 문장의 토큰 수가 모두 같다면 정수 인코딩 결과는 하나의 행렬로 만들 수 있을 겁니다. 위의 예시와 다르게 3개의 문장 전부 단어 토큰 수가 5개였다면 3*5 행렬이 만들어지겠죠..
실습 설명 코퍼스에 포함된 단어 토큰의 등장 빈도 기준으로 정수 인덱스를 생성하고, 모든 토큰들을 정수 인덱스로 변환해 주세요. 주어진 코퍼스의 단어별 등장 빈도를 계산하고, 많이 등장한 단어순으로 정렬해 주세요. 빈도수 기준으로 정렬한 단어들에 인덱스를 부여해 주세요. 부여된 정수 인덱스를 기준으로 모든 토큰들을 정수 인코딩해 주세요. main.py # 필요한 패키지와 함수 불러오기 import nltk from nltk.tokenize import word_tokenize from collections import Counter from text import TEXT nltk.download('punkt') word_to_idx = {} # 단어 별 인덱스 부여하기 위한 딕셔너리 i = 0 encod..
정수 인코딩이란?전처리된 텍스트 데이터를 컴퓨터가 분석에 활용할 수 있게 하려면 숫자 데이터로 변환해야 합니다. 이를 위한 여러 방법이 있는데요. 대표적으로 정수 인코딩이 있습니다. 정수 인코딩은 토큰화된 각 단어에 특정 정수를 맵핑하여 고유 번호로 사용하는 방법입니다. 단어 토큰에 정수 인덱스를 부여하는 방법은 다양한데요. 그 중 가장 일반적인 방법은 단어의 등장 빈도를 기준으로 정렬한 다음 인덱스를 부여하는 방식입니다.정수 인코딩 하기정수 인코딩을 하면 더 이상 추가적인 전처리를 할 수 없습니다. 때문에 모든 전처리 과정이 끝난 코퍼스를 가지고 정수 인코딩을 해야 합니다. 자연어 전처리 적용 II 레슨에서 작업한 df['cleaned_tokens']을 이용해 진행해 보겠습니다. 현재 데이터 프레임이 ..
최근 자연어 처리 분야에서 사용되는 여러 패키지들은 자연어 전처리 과정부터 모델 적용, 후처리까지 모든 기능을 한 번에 제공하는 경우가 많습니다. 그런 패키지들을 사용할 때에는 코퍼스를 단어 토큰으로 나눈 형태가 아니라, 토큰화되기 전 코퍼스 원래의 형태로 활용해야 할 수 있습니다. 그래서 경우에 따라 전처리한 토큰들을 하나의 코퍼스로 통합하는 과정이 필요한데요. 이번 포스팅을 통해 그 과정을 소개해 드릴게요. 먼저 자연어 전처리 적용 II 레슨에서 정제 작업을 완료했던 데이터 df['cleaned_tokens']를 확인해 볼게요. df[['cleaned_tokens']] 각 로우에는 코퍼스를 구성하는 단어 토큰들이 저장된 리스트가 값으로 들어있네요. 해당 리스트들을 토큰 구분이 없는 하나의 코퍼스로 통..
이전에 배운 내용들도 실제 데이터를 통해 적용해 보겠습니다. 실습에는 이전 챕터에서 사용했던 IMDb 데이터를 다시 불러와서 사용할게요. df = pd.read_csv('imdb.tsv', delimiter = "\\t") 대소문자 통합 먼저 전체 코퍼스의 대소문자를 통합하겠습니다. 기존 실습에서도 다뤘던 내용이기 때문에 별도의 설명 없이 코드만 보여드릴게요. # 대소문자 통합 df['review'] = df['review'].str.lower() # 대소문자를 소문자로 바꾸는 과정 문장 토큰화 다음으로 문장 단위로 토큰화해 보겠습니다. df[’reviews’]의 각 코퍼스에 apply() 함수로 sent_tokenize()를 적용해 주겠습니다. df['sent_tokens'] = df['review']..
실습 연습 표제어 추출 함수인 words_lemmatizer() 함수를 만들어 주세요. words_lemmatizer() 함수는 (단어, 품사) 형태로 품사 태깅이 된 리스트를 파라미터로 받고, 표제어 추출을 한 결과를 반환합니다. Penn Treebank POS Tag를 WordNet POS Tag로 바꾸기 위한 함수 penn_to_wn()을 미리 만들어 놨습니다. preprocess.py에서 해당 함수를 불러와 사용할 수 있습니다. WordNet POS Tag의 품사와 매칭되지 않는 경우 표제어 추출을 하지 않은 원래 단어를 결과에 추가합니다. penn_to_wn() 함수를 사용해서 품사를 WordNet POS Tag로 바꿔 주세요. lemmatization_practice.py import nltk..
표제어 추출표제어(Lemma)란 단어의 사전적 어원을 뜻합니다. 서로 다른 단어도 표제어는 같은 경우가 있기 때문에, 표제어를 기준으로 통합하면 단어가 정규화됩니다. 예를 들어 am, are, is는 서로 다른 단어이지만 표제어는 동일하게 be입니다. 영어 코퍼스에 특히 많은 be 동사들을 모두 표제어로 통합시킨다면 전체 단어의 수가 많이 줄어들겠죠? 표제어 추출을 하기 위해서는 먼저 토큰화된 단어에 품사 태깅을 해야 하는데요. 실습할 문장에 품사 태깅을 먼저 해 볼게요.text = 'You are the happiest person.' tokenized_words = word_tokenize(text) # 품사 태그 tagged_words = pos_tag(tokenized_words) pos_tag(..