워드 클라우드(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)로 변환하는 작업 등이 실무, 학회에서 많이 논의됨.
'Study > 자연어처리[NLP]' 카테고리의 다른 글
[자연어처리(NLP)] 3. 임베딩_1(이론) (0) | 2024.01.18 |
---|---|
[자연어처리(NLP)] 2. 자연어 처리 진행 순서_2(실습) (0) | 2024.01.17 |
[자연어처리(NLP)] 2. 자연어 처리 진행 순서_1(이론) (0) | 2024.01.17 |
[자연어처리(NLP)] 1. 자연어 처리 개요_1(Hannanum, Kkma, Komoran, Okt) (0) | 2024.01.16 |