728x90
반응형
NLTK
import nltk
NLTK는 자연어 처리 및 문서 분석에 사용되는 파이썬 라이브러리이다.
기본적인 실습에 필요한 자료를 제공하며, 토큰 생성, 형태소 분석, 품사 태깅 등의 작업을 수행해준다.
또한 한글의 경우 불용어로 별도로 가져와 사용해야 했지만,
NLTK는 기본적으로 stopwords를 제공한다는 특징이 있다.
from nltk.corpus import stopwords
참고로 만약 위의 두 작업 중 다음의 에러가 발생할 수 있다.
Resource stopwords not found. Please use the NLTK Downloader to obtain the resource:
이 경우도 위와 마찬가지로 download 함수를 사용하여 별도의 다운로드를 해주면 더 이상 발생하지 않는다.
nltk.download('stopwords')
그러면 이제 실습을 시작해보자.
위에서 언급했듯 NLTK는 기본적으로 실습에 필요한 여러 자료들을 제공한다.
그 목록은 아래와 같이 확인할 수 있다.
import nltk
from nltk.book import *
#BOOK 다운로드
nltk.download("book", quiet=True)
#목록 확인
nltk.corpus.gutenberg.fileids()
출력된 목록 중 가장 첫 번째 파일을 사용한다.
data = nltk.corpus.gutenberg.raw("austen-emma.txt")
그 후의 작업은 Konlpy와 동일하다.
문장을 단어 단위로 나누고, 단어를 필터링한 후 집계하여 그래프로 표시하는 작업을 할 것이다.
이에 대한 위의 코드를 포함한 전체 코드는 아래와 같다.
import nltk
from nltk.book import *
from nltk.corpus import stopwords
from nltk.tokenize import RegexpTokenizer, WordPunctTokenizer
from collections import Counter
from wordcloud import WordCloud
#필요 파일 다운로드
nltk.download("book", quiet=True)
nltk.download("stopwords", quiet=True)
#데이터 로드
data = nltk.corpus.gutenberg.raw("austen-emma.txt")
#데이터가 너무 많아 시간이 오래 걸리니 일정 부분만 사용
data = data[:1000]
#단어 단위 토크나이징
tokenizer = WordPunctTokenizer() #띄어쓰기 단위 토크나이저
#tokenizer = RegexpTokenizer("[\w']+") #축약형의 경우 축약된 단어를 분리하지 않고 출력하고 싶으면 정규식을 사용하여 토크나이징
data = tokenizer.tokenize(data)
#data = nltk.pos_tag(data) #단어의 품사까지 같이 보고싶을 때 사용
#불용어 제거
data = [each_word for each_word in data if each_word not in stopwords.words()]
#단어 별 언급 빈도 확인
data_cnt = Counter(data)
#data_cnt = data.most_common(100) #가장 많이 나온 100개 단어 확인
#data_cnt dict 타입으로 변경
data_cnt = dict(data_cnt)
#집계된 단어 그래프 표시
data_graph = nltk.Text(data, name="word count")
data_graph.plot() #nltk안에 기본적으로 그림을 그리는 기능이 있다.
#워드 클라우드 그리기
wordcloud = WordCloud().generate_from_frequencies(data_cnt)
plt.figure(figsize=(8, 4))
plt.imshow(wordcloud)
plt.axis('on')
plt.show()
728x90
반응형
'실습 > 파이썬 데이터 분석 및 시각화' 카테고리의 다른 글
Konlpy_한글 텍스트 분석 (0) | 2021.11.18 |
---|---|
Bokeh 패키지 (0) | 2021.11.17 |
Seaborn 사용법 (0) | 2021.11.17 |
Matplotlib 사용법 (0) | 2021.11.17 |
Pandas 사용법 (0) | 2021.11.17 |