워드 클라우드(Word Cloud)란?
핵심 단어를 시각화 하는 기법
문서의 키워드, 개념 등을 직관적으로 파악할 수 있게 핵심 단어를 시각적으로 돋보이게 하는 기법을 말합니다.
실습
1. 코렙에서 워드 클라우드 설치방법
!pip install wordcloud
2. text파일 생성
text = open('/content/drive/MyDrive/KDT v2/9. 자연어 처리/data/alice.txt').read()
text
3. 모듈 임포트
from wordcloud import WordCloud
4. 활성화 및 객체 생성
wordcloud = WordCloud().generate(text)
wordcloud
# 결과값 :
<wordcloud.wordcloud.WordCloud at 0x7aaaf2977400>
# generate() : 단어별 출현 빈도수를 비율로 반환하는 객체를 생성하는 함수 입니다.
5. 특정단어의 %를 출력
wordcloud.words_
# words_ : 특정단어의 %(비율)을 보여주는 함수입니다.
내부 단어가 많아 일정치만 찍었습니다.
6. matplotlib 임포트
import matplotlib.pyplot as plt
7. plt를 이용하여 이미지 출력
plt.figure(figsize=(15, 10))
plt.imshow(wordcloud)
plt.axis('off')
plt.show()
8. 객체를 생성할 대 파라미터를 추가하여 생성
wordcloud = WordCloud(max_words=100).generate(text)
plt.figure(figsize=(15, 10))
plt.imshow(wordcloud)
plt.axis('off')
plt.show()
# max_words : 워드 클라우드에 표시되는 단어의 개수를 설정합니다.
9. 나눔체 설치
!apt-get update -qq
!apt-get install fonts-nanum* -qq
※ 설치 완료 후 런타임 재실행 하시면 됩니다.
10. font_manager 임포트
import matplotlib.font_manager as fm
10-1. Nanum체 확인
sys_font = fm.findSystemFonts()
[f for f in sys_font if 'Nanum' in f]
11. 폰트 설치 후 wordcloud 다시 생성
wordcloud = WordCloud(max_words=100,
font_path='/usr/share/fonts/truetype/nanum/NanumPen.ttf').generate(text)
plt.figure(figsize=(15, 10))
plt.imshow(wordcloud)
plt.axis('off')
plt.show()
이미지를 이용하여 내용을 추가하기
1. 필요 모듈 임포트
from PIL import Image
import numpy as np
2. 이미지를 array배열로 변환
alice_mask = np.array(Image.open('/content/drive/MyDrive/KDT v2/9. 자연어 처리/data/alice_mask.png'))
alice_mask
# 결과값 :
array([[255, 255, 255, ..., 255, 255, 255],
[255, 255, 255, ..., 255, 255, 255],
[255, 255, 255, ..., 255, 255, 255],
...,
[255, 255, 255, ..., 255, 255, 255],
[255, 255, 255, ..., 255, 255, 255],
[255, 255, 255, ..., 255, 255, 255]], dtype=uint8)
3. 워드 클라우드 생성
wordcloud = WordCloud(max_words=100,
font_path='/usr/share/fonts/truetype/nanum/NanumPen.ttf',
mask=alice_mask,
background_color='ivory').generate(text)
plt.figure(figsize=(15, 10))
plt.imshow(wordcloud)
plt.axis('off')
plt.show()
대한민국 지도에 찍어보기
1. 모듈 임포트 및 파일 읽어오기
# kolaw에서 constitution.txt 파일을 읽어오기
from konlpy.corpus import kolaw
text = kolaw.open('constitution.txt').read()
2. okt 분석기를 이용하여 파일 내용 중 명사만 추출하기
from konlpy.tag import Okt
okt = Okt()
noun_text = okt.nouns(text)
print(noun_text)
3. 단어의 길이를 기준으로 오름차순 정렬 후 저장
noun_text.sort(key=lambda x: len(x))
print(noun_text)
4. 불용어를 제외한 단어만 저장
stopword = ['얻지','범한','즈음','가지','자주','이제','붙이','도하','일로','거나','로부터','날로','이내','다운','내지','로서','로써']
noun_test = [word for word in noun_text if word not in stopword]
5. 2글자 이상만 저장
noun_text = [word for word in noun_text if len(word) > 1]
6. 빈도수가 많은 TOP 100만 저장
from collections import Counter
count = Counter(noun_text)
7. 워드 클라우드 생성
kor_mask = np.array(Image.open('/content/drive/MyDrive/KDT v2/9. 자연어 처리/data/korea_mask.jpg'))
wordcloud = WordCloud(max_words=100,
font_path='/usr/share/fonts/truetype/nanum/NanumPen.ttf',
mask=kor_mask,
background_color='ivory').generate_from_frequencies(data)
plt.figure(figsize=(15, 10))
plt.imshow(wordcloud)
plt.axis('off')
plt.show()
자연어 처리의 다양한 Task
1. Text Classification
단어, 문장, 문서 단위의 텍스트에 사전 정의된 카테고리를 할당하는 작업
Sentiment Analysis : 주어진 문장의 감정을 분류
Abusing Detection : 주어진 문장의 어뷰징(나쁜뜻, 비속어등) 여부를 판별합니다.
2. Information Retrieval and Document Ranking
두 문서나 문장 간 유사도를 결정하는 작업
Text Similarity Task는 document DB가 있을 때 query text에 대하여 가장 유사한 문서를 반환하는 것을 목표로 하는 작업으로 확장될 수 있음
3. Text to Text Generation
텍스트를 입력으로 받아서 목표를 달성하는 텍스트를 생성하는 작업
소스 언어의 텍스트의 의미를 유지한채 타켓 언어의 텍스트로 번역하는 작업
여러 문서들의 의미를 유지한 채 더 짧은 버전의 테스트로 요약하는 작업
포괄적인 관점에서 사람이 작성한 것 같은 텍스트를 생성하는 작업
4. Knowledge bases, Entities and Relations
자식 기반, 의미론적인 엔티티나 관계를 파악하는 자연어처리 분야
5. Topics and Keywords
문서 혹은 문장 내의 주제나 키워드를 파악하는 자연어 처리 분야
6. Chatbots
음성이나 문자를 통한 인간과의 대화를 통해 특정한 작업을 수행하도록 제작된 컴퓨터 프로그램
정해진 규칙에 맞춰 메세지를 입력하면, 발화를 출력하는 규칙 기반 챗봇부터 문맥을 입력으로 받아 적절한 답변을 생성/검색하는 인공지능 기반 챗봇 등이 있음
7. Text Reasoning
주어진 지식이나 상식을 활용하여 일련의 추론 작업을 수행하는 작업
간단한 수학 문제들을 푼다고 생각해보면 일련의 계산 과정에 의해 답을 도출하게 되는데, 그러한 일련의 계산 과정을 추론 과정이라고 함
8. FAke News and Hate Speech Detecion
허위 혹은 오해의 소지가 있는 정보가 포함된 텍스트를 감지하고 필터링하는 작업
소셜 미디어 혹은 배포 중인 제품에서 발생하는 어뷰징 컨텐츠들을 필터링하기 위해 사용
9. Text to Data and Vice-versa
음성을 텍스트(STT)로 혹은 텍스트를 음성(TTS)으로 변환하는 작업이나, 텍스트를 이미지(Text to Image)로 변환하는 작업 등이 실무, 학회에서 많이 논의됨.