Data Analysis/Natural Language Processing(NLP)

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/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)' 카테고리의 글 목록 (3 Page)