Data Analysis

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)

자연어 전처리 적용 II

이전에 배운 내용들도 실제 데이터를 통해 적용해 보겠습니다. 실습에는 이전 챕터에서 사용했던 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']..

Data Analysis/Natural Language Processing(NLP)

표제어 추출 실습

실습 연습 표제어 추출 함수인 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..

Data Analysis/Natural Language Processing(NLP)

표제어 추출(Lemmatization)

표제어 추출표제어(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(..

Data Analysis/Natural Language Processing(NLP)

품사 태깅 실습

실습 설명 품사 태깅을 위한 함수 pos_tagger()를 완성해 주세요. pos_tagger()는 파라미터로 문장 토큰화 된 코퍼스를 받습니다. 결과로는 문장 간 경계가 사라진 1차원 [(단어, 품사), (단어, 품사), ...] 리스트를 반환합니다. main.py import nltk from nltk.tokenize import sent_tokenize from nltk.tokenize import word_tokenize from nltk.tag import pos_tag from text import TEXT nltk.download('punkt') nltk.download('averaged_perceptron_tagger') corpus = TEXT tokenized_sents = sent_t..

Data Analysis/Natural Language Processing(NLP)

품사 태깅(POS; Part of Speech Tagging)

문장에 사용된 단어의 의미를 제대로 파악하려면 해당 단어가 어떤 품사로 사용되었는지 함께 알아야 합니다. 이를 위해 각 단어가 어떤 품사로 쓰였는지 표시하는 작업이 필요한데요. 해당 작업을 품사 태깅(POS; Part of Speech Tagging)이라고 합니다. 품사 태깅(POS; Part of Speech Tagging) 품사는 문장 안에서 단어가 어떻게 사용되는지에 따라 정해집니다. 따라서 여러 문장으로 이루어진 코퍼스에 품사 태깅을 하려면 먼저 코퍼스를 문장으로 구분하고, 각 문장 별로 단어 토큰화를 한 다음, 단어 토큰들 각각에 품사를 태깅해야 합니다. 코드를 통해 자세히 살펴볼게요. 먼저 전체 코드입니다. import nltk import pandas as pd from nltk.tokeni..

Data Analysis/Natural Language Processing(NLP)

문장 토큰화 실습

실습 설명 text.py 파일에 있는 코퍼스 TEXT를 불러와서 문장 단위로 토큰화해 주세요. main.py # 필요한 패키지와 함수 불러오기 import nltk nltk.download('punkt') from nltk.tokenize import sent_tokenize from text import TEXT corpus = TEXT # 여기에 문장 단위 토큰화 코드를 작성하세요 tokenized_sents = sent_tokenize(corpus) # 테스트 코드 tokenized_sents text.py TEXT = """Alice was beginning to get very tired of sitting by her sister on the bank, and of having nothing ..

Data Analysis/Natural Language Processing(NLP)

문장 토큰화(Sentence Tokenization)

이전 포스팅에서 코퍼스를 단어 단위로 토큰화한 후에 적용하는 전처리 방법들을 배웠습니다. 하지만 경우에 따라서 코퍼스를 문장 단위로 토큰화한 다음에 문장의 의미를 살려서 분석을 해야 하는 경우가 있습니다. 대표적으로 다음 레슨에서 배울 품사 태깅이 그렇습니다. 어떠한 단어의 품사는 그 단어 자체의 의미와 함께 문장 안에서 사용된 위치에 따라 달라질 수 있습니다. 이런 경우에는 문장 간의 구분이 된 상태에서 단어의 품사를 정해야 하기 때문에 문장 단위로 먼저 토큰화한 후에 품사를 구분해야 합니다. 이번 포스팅에서 문장 단위의 토큰화 방법을 먼저 알아보겠습니다. 문장 토큰화(Sentence Tokenization) 아래 내용은 코퍼스를 문장 단위로 토큰화하는 코드입니다. # 필요한 패키지와 함수 불러오기 f..

Data Analysis/Natural Language Processing(NLP)

어간 추출 실습

실습 설명 포터 스테머 알고리즘으로 어간을 추출하는 함수 stemming_by_porter()를 만들어주세요. ● stemming_by_porter() 함수는 파라미터로 토큰화한 코퍼스(tokenized_words)가 전달됩니다. ● 결과로는 어간이 추출된 토큰 리스트가 반환됩니다. main.py # 필요한 패키지와 함수 불러오기 import nltk import pandas as pd from nltk.tokenize import word_tokenize from nltk.stem import PorterStemmer from text import TEXT nltk.download('punkt') corpus = TEXT tokenized_words = word_tokenize(corpus) # 포터 ..

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