My First Python Application – A Word Cloud Based Resume Optimizer

A real world application of Python for Data Visualization that I learnt from recently completed Artificial Intelligence Foundation course.

It has been a couple of months since I started learning Foundations of Artificial Intelligence Program from SkillUp Online. After putting in some dedicated effort on the studies, I successfully completed the well crafted course on last Wednesday. So I thought of applying my learning in a real world scenario by developing a Python application.

Here is my first application of Python programming that I learnt through the course. Well, it is not a CAD/Design AI Application as I mentioned in my earlier post. Rather, I would start with a simple yet really useful application for now. As an aspiring job seeker, I thought of analyzing my resume for relevant keywords by visualizing how prominently they appear in the resume. Moreover, it is a well know fact that Application Tracking Systems (ATS) scrutinize resumes based on keywords and filter them accordingly. So I wanted to analyze the current resume status and optimize it accordingly.

Here is the result I got from the first run of Python program on my resume

Word Cloud Before Resume Optimization
Word Cloud Before Resume Optimization

A quick analysis of the word cloud revealed that my resume does not properly represent my key skills. I wanted to represent my key strengths such as Information Management, Automation, Innovation and VBA in a better way. Other skills such as CAD, Data Control, Design and Engineering are better represented though. After several iterations of the resume, I was able to come up with a balanced one. The word cloud generated by the same application after the resume fine-tuning is as shown below.

Word Cloud After Resume Optimization
Word Cloud After Resume Optimization

And here is the tiny-dirty Python application that I wrote for accomplishing this. Since this is my first program, I haven’t cared much about following best programming practices. I hope to improve that part in future though. Nevertheless, it was really amazing to see what such a small program in Python could achieve! Here is the link to the GitHub Gist page if you want to play with the code.

"""
Word Cloud Resume Optimizer
By Mohamed Haris
GitHub ID: @harismohamed

"""
#install and import required libraries
!pip install python-docx 
!pip install wordcloud 
from docx import Document
from wordcloud import WordCloud, STOPWORDS
import matplotlib as mpl
import matplotlib.pyplot as plt

#set path for resume file
myresume="C:\\temp\\my_resume.docx"

#read the document
doc = Document(myresume)

#collect text from each paragraph
resumetext = "" 
text = []
for para in doc.paragraphs:
    text.append(para.text)
    resumetext = '\n'.join(text)
stopwords = set(STOPWORDS)

#add custom stop words for better results
#custom stopwords may be stored in a text file
custstopwordsfile="C:\\temp\\stopwords.txt"
f=open(custstopwordsfile,'r')
custstopwords=f.read().splitlines()
f.close()

#add custom stop words to the default ones
stopwords.update(custstopwords)

#instantiate a word cloud object
resume_wc = WordCloud(
    background_color='black',
    stopwords=stopwords)

#adjust the image rendering area
fig = plt.figure()
fig.set_figwidth(12) # set width
fig.set_figheight(16) # set height

#generate the word cloud
resume_wc.generate(resumetext)
plt.imshow(resume_wc, interpolation='bilinear')
plt.axis('off')
plt.show()

It would be fun to host this program online for the readers to analyze their own resumes. But right now I don’t have any idea on how to go about it. I shall post an update once it is configured online for public testing. Till then, I advise you to run the code on your system to test the output.