Data Analysis

Data Analysis/Natural Language Processing(NLP)

감성 분석 결과 확인

이전 포스팅에서 만들어 둔 swn_polarity() 함수를 pos_tagged_df에 적용해 데이터 프레임의 각 로우에 저장되어 있는 코퍼스들의 감성 지수를 확인해 보겠습니다.from preprocess import swn_polarity # dataframe에 swn_polarity() 함수 적용 df['swn_sentiment'] = df['pos_tagged_tokens'].apply(swn_polarity) df[['review', 'swn_sentiment']]각 문장의 감성 분석 결과를 구해 봤습니다. 결과로 나온 Dataframe에서 몇 개의 원문 데이터를 보며 결과가 잘 나왔는지 확인해 볼게요. 먼저 첫 번째 리뷰입니다. 해당 리뷰는 감성 지수가 -0.25로, 부정적인 리뷰라고 확인됐는데..

Data Analysis/Natural Language Processing(NLP)

감성 분석 적용

이전 포스팅까지 사용하던 IMDb 영화 리뷰 데이터에 감성 분석도 적용해 보겠습니다. 감성 분석을 위해선 각 토큰의 품사가 태깅된 상태의 데이터가 필요하기 때문에 df['pos_tagged_tokens']를 사용해 분석을 진행하겠습니다.df[['pos_tagged_tokens']] df['pos_tagged_tokens']는 모든 전처리 단계가 전부 적용되진 않았는데요. 보통 정제 작업에서 제거되는 단어들은 감성 지수가 중립인 경우가 많기 때문에, 전체 결과에 큰 영향을 주진 않습니다. 그래서 품사 태깅까지만 된 데이터를 가지고 실습을 진행해도 큰 문제는 없습니다.감성 분석먼저 첫 번째 로우로 감성 분석을 진행해 보고, 해당 코드를 함수로 만들어서 전체 데이터 프레임에도 적용해 볼게요. 하나의 코퍼스로 ..

Data Analysis/Natural Language Processing(NLP)

감성 지수 구하기 실습

실습 설명 주어진 단어의 감성 지수를 구하는 함수 get_sentiment_score()를 작성해 주세요. 함수의 파라미터로는 단어(word)와 품사(pos)가 전달됩니다. 반환하는 값은 감성 지수(sentiment_score)입니다. 감성 지수는 긍정 감성 지수에서 부정 감성 지수를 뺀 값을 사용합니다. 해당 함수를 아래 단계에 따라 만들어 주세요. 단어와 품사 태그를 기반으로 Synsets 구하기 Synsets의 첫 번째 요소의 이름으로 단일 SentiSynset 구하기 SentiSynset의 긍정 지수, 부정 지수 구하기 긍정 지수 - 부정 지수로 감성 지수 값 계산해 반환하기 main.py import nltk from nltk.corpus import wordnet as wn from nltk...

Data Analysis/Natural Language Processing(NLP)

SentiWordNet

SentiWordNet과 SentiSynset SentiWordNet은 WordNet과 유사한 영어 어휘 사전입니다. 하지만 Synset별로 긍정 지수, 부정 지수, 객관성 지수를 할당해 준다는 차이가 있습니다. 여기에서 객관성 지수란 감성 지수와 반대되는 개념으로, 해당 단어가 얼마나 감성적 어조와 관계 없는지를 보여 주는 수치입니다. 그러면 SentiWordNet을 이용해 특정 단어의 감성 지수를 한번 확인해 볼게요. 먼저, sentiwordnet을 불러옵니다. from nltk.corpus import wordnet as wn from nltk.corpus import sentiwordnet as swn nltk.download('wordnet') nltk.download('sentiwordnet'..

Data Analysis/Natural Language Processing(NLP)

WordNet

대표적인 감성 어휘 사전으로 SentiWordNet이 있는데요. SentiWordNet을 사용하려면 먼저 WordNet에 대해 알아야 합니다. 본격적인 실습 전에 한번 살펴보겠습니다.WordNet 어휘 사전WordNet은 NLTK에서 제공하는 대규모 영어 어휘 사전입니다. 단어와 함께 해당 단어의 문맥상 의미가 저장되어 있습니다. 예를 들어 살펴볼게요.She had the lead in a new film.She found lead.두 문장에서 공통으로 사용된 단어 lead는 문맥에 따라 '이끌다'와 '납' 두 가지 의미를 가집니다. 동일한 단어인 lead가 사용된 문장에 따라 다른 의미를 갖는 것이죠. WordNet은 이러한 문맥상 의미를 나타내기 위해 Synset(Sets of Cognitive Sy..

Data Analysis/Data Analysis Practice

데이터 분석가가 갖춰야 할 9가지 역량

최근 노코드 툴, 데이터 플랫폼, ChatGPT 등이 등장하면서 데이터 분석가에게 요구되는 역량도 변화하고 있습니다. 이번 글에서는 데이터 분석가가 갖춰야 할 9가지 역량을 크게 하드 스킬과 소프트 스킬로 살펴보겠습니다. 데이터 분석가에게 필요한 하드 스킬 먼저 데이터 분석가에게 필요한 하드 스킬에 대해 살펴보겠습니다. 하드 스킬의 경우, 각 기업이나 팀마다 요구하는 것이 다를 수 있으니 기본적으로 이러한 역량들이 필요하다 정도로 봐주시면 좋겠습니다. 1) 사용 언어 데이터 분석가가 실무에서 데이터 추출 및 간단한 분석을 할 때 주로 SQL을 사용합니다. 따라서 요즘은 채용 과정에서 기본적으로 SQL 코딩 테스트를 보는 회사도 많습니다. 더불어 심화된 분석(요인 분석, 예측 모델링 등)이 필요할 때는 파..

Data Analysis/Data Analysis Practice

scikit-learn 사용해 보기

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..

Data Analysis/Natural Language Processing(NLP)

감성 분석이란?

이번 포스팅에서는 전처리된 자연어 데이터를 활용한 감성 분석을 배워 보겠습니다. 감성 분석이란 자연어에 담긴 어조가 긍정적인지, 부정적인지, 혹은 중립적인지 확인하는 작업을 감성 분석(Sentiment Analysis)이라고 합니다. 예를 들어 어떤 상품의 리뷰가 아래와 같이 작성됐다고 할게요. I love it. I hate this. 첫 번째 리뷰에 등장하는 love는 긍정적인 의미입니다. 때문에 해당 리뷰가 많이 달린 상품은 고객 반응이 좋은 것으로 해석됩니다. 반대로 hate는 부정적인 의미이기 때문에, 해당 리뷰가 많이 달린 상품은 고객 불만족이 큰 것으로 해석되죠. 이렇게 코퍼스에 담긴 의미가 긍정인지 부정인지를 구분할 수 있으면 재미있는 인사이트를 얻을 수 있습니다. 하지만 수많은 리뷰들을 ..

Data Analysis/Natural Language Processing(NLP)

패딩(Padding)

패딩(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 행렬이 만들어지겠죠..

Data Analysis/Natural Language Processing(NLP)

정수 인코딩 실습

실습 설명 코퍼스에 포함된 단어 토큰의 등장 빈도 기준으로 정수 인덱스를 생성하고, 모든 토큰들을 정수 인덱스로 변환해 주세요. 주어진 코퍼스의 단어별 등장 빈도를 계산하고, 많이 등장한 단어순으로 정렬해 주세요. 빈도수 기준으로 정렬한 단어들에 인덱스를 부여해 주세요. 부여된 정수 인덱스를 기준으로 모든 토큰들을 정수 인코딩해 주세요. 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..

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