How to Create Stylist Word Cloud Using Python
What is Word Cloud?
Word cloud atau disebut juga tag cloud adalah representasi visual dari data teks, biasanya digunakan untuk menggambarkan metadata keywords (tags) pada sebuah website/situs, untuk memvisualisasikan suatu bentuk teks secara bebas
To create word cloud, you can use the data obtained from my research by downloading the data here.
How to make Word Cloud in Python?
- Remove unused words
- Replace words
- Counting the frequency of words (optional)
- Creating Word CLoud
- Styling Word CLoud (optional)
Remove unused words
Data teks, biasanya terdapat kata yang tidak penting untuk dilakukan pembuatan word cloud oleh karena itu diperlukan syntax untuk melakukan penghapusan kata yang tidak digunakan.
infile = "/folder/infile.txt"
outfile = "/folder/outfile.txt"
delete_list = ["kita", "dan", "yg", "jangan", "jgn", "juga", "Yg"]
fin = open(infile)
fout = open(outfile, "w+")
for line in fin:
for word in delete_list:
line = line.replace(word, "")
fout.write(line)
fin.close()
fout.close()
infile.txt merupakan data teks yang asli sebelum dihapus kata yang tidak akan digunakan dalam word cloud. sedangkan outfile.txt merupaka data teks hasil dari menghapus kata yang tidak digunakan dalam word cloud.
Replace words
Sebuah teks yang diperoleh dari saran seseorang akan menghasilkan kata yang berbeda akan tetapi memiliki arti yang sama. sehingga untuk memperhemat pembendaharaan kata dalam word cloud diperlukan mengganti kata yang berbeda dengan arti kata yang sama dengan menjadikannya satu kata yang sama.
with open('/folder/outfile.txt', 'r') as file :
filedata = file.read()
filedata = filedata.replace("skill", "kemampuan").replace("Skill", "kemampuan").replace("skills", "kemampuan").replace("softskill", "kemampuan").replace("connection", "koneksi").replace("ipk", "IPK").replace("cv", "CV").replace("berdoa", "doa").replace("yg", " ").replace("communication", "komunikasi")
with open('/folder/outfile.txt', 'w') as file:
file.write(filedata)
Counting the frequency of words
Untuk mengetahui masing-masing jumlah kata yang sering muncul dalam saran yang diberikan pada data teks kita dapat menggunakan syntax seperti dibawah ini :
import re
import string
frequency = {}
document_text = open('/home/kiki/Code/python/job/outfile.txt')
text_string = document_text.read().lower()
match_pattern = re.findall(r'\b[a-z]{3,15}\b', text_string)
for word in match_pattern:
count = frequency.get(word,0)
frequency[word] = count + 1
frequency_list = frequency.keys()
for words in frequency_list:
print (words, frequency[words])
Berikut ini adalah gambar hasil dari perhitungan kata dalam data teks.
Creating Word Cloud
Nah, ini dia tahap inti dari artikel ini yaitu pembuatan word cloud.
import os
import matplotlib.pyplot as plt
from wordcloud import WordCloud
text = open('/folder/outfile.txt')
data = text.read()
%matplotlib inline
wordcloud = WordCloud(background_color='white', mode="RGB", width=1600, height=800).generate(data)
plt.figure(figsize=(20,10))
plt.title('what we need to get job?')
plt.imshow(wordcloud)
plt.axis("off")
plt.tight_layout(pad=0)
plt.show()
Berikut ini adalah gambar hasil word cloud data teks.
Styling Word Cloud
Untuk membuat word cloud menjadi lebih menarik, kita dapat mengubah word cloud tersebut dengan berbagai bentuk yang kita inginkan. Dalam hal ini saya ingin membuat word cloud dengan tema pekerjaan. Dengan gambar asli seperti dibawah ini :
Berikut ini adalah syntax yang dapat digunakan untuk mengubah style dari word cloud.
import sys
from os import path
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
from wordcloud import WordCloud, STOPWORDS
d = path.dirname(sys.argv[0])
# Read the whole text.
text = open(path.join(d,'/folder/outfile.txt')).read()
#read the mask image
job_mask = np.array(Image.open(path.join(d, "/folder/work.jpg")))
stopwords = set(STOPWORDS)
stopwords.add("said")
wc = WordCloud(background_color="white", max_words=2000, mask=job_mask, stopwords=stopwords)
# generate word cloud
wc.generate(text)
# store to file
wc.to_file(path.join(d, "/folder/baru.png"))
# show
plt.imshow(wc, interpolation='bilinear')
plt.axis("off")
plt.figure()
plt.imshow(job_mask, cmap=plt.cm.gray, interpolation='bilinear')
plt.axis("off")
plt.show()
Output dari style word cloud yang dibuat menggunakan syntax diatas adalah sebagai berikut :
gambar tersebut dapat disimpan dengan menggunakan format .png berikut ini adalah hasil dari styling word cloud yang telah dibuat.