Data Analysis/Natural Language Processing(NLP)

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/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/Natural Language Processing(NLP)

정수 인코딩(Integer Encoding)

정수 인코딩이란?전처리된 텍스트 데이터를 컴퓨터가 분석에 활용할 수 있게 하려면 숫자 데이터로 변환해야 합니다. 이를 위한 여러 방법이 있는데요. 대표적으로 정수 인코딩이 있습니다. 정수 인코딩은 토큰화된 각 단어에 특정 정수를 맵핑하여 고유 번호로 사용하는 방법입니다. 단어 토큰에 정수 인덱스를 부여하는 방법은 다양한데요. 그 중 가장 일반적인 방법은 단어의 등장 빈도를 기준으로 정렬한 다음 인덱스를 부여하는 방식입니다.정수 인코딩 하기정수 인코딩을 하면 더 이상 추가적인 전처리를 할 수 없습니다. 때문에 모든 전처리 과정이 끝난 코퍼스를 가지고 정수 인코딩을 해야 합니다. 자연어 전처리 적용 II 레슨에서 작업한 df['cleaned_tokens']을 이용해 진행해 보겠습니다. 현재 데이터 프레임이 ..

Data Analysis/Natural Language Processing(NLP)

자연어 전처리 후 통합하기

최근 자연어 처리 분야에서 사용되는 여러 패키지들은 자연어 전처리 과정부터 모델 적용, 후처리까지 모든 기능을 한 번에 제공하는 경우가 많습니다. 그런 패키지들을 사용할 때에는 코퍼스를 단어 토큰으로 나눈 형태가 아니라, 토큰화되기 전 코퍼스 원래의 형태로 활용해야 할 수 있습니다. 그래서 경우에 따라 전처리한 토큰들을 하나의 코퍼스로 통합하는 과정이 필요한데요. 이번 포스팅을 통해 그 과정을 소개해 드릴게요. 먼저 자연어 전처리 적용 II 레슨에서 정제 작업을 완료했던 데이터 df['cleaned_tokens']를 확인해 볼게요. df[['cleaned_tokens']] 각 로우에는 코퍼스를 구성하는 단어 토큰들이 저장된 리스트가 값으로 들어있네요. 해당 리스트들을 토큰 구분이 없는 하나의 코퍼스로 통..

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