Clustering Job Posts

Given a job title (in an industry), we would like to group its job posts into clusters by their similarity in topic distributions. The clusters are speculated to reveal us some interesting insights (e.g. trends) on the job title.


In [1]:
import my_util as my_util
import cluster_skill_helpers as cluster_skill_helpers
from cluster_skill_helpers import *

import random as rd

In [2]:
global doc_topic_distr

In [3]:
HOME_DIR = 'd:/larc_projects/job_analytics/'
SKILL_DAT = HOME_DIR + 'data/clean/skill_cluster/' 
SKILL_RES = HOME_DIR + 'results/' + 'skill_cluster/new/'
JOB_PROF = SKILL_RES + 'job_prof/'

In [4]:
df = pd.read_csv(SKILL_DAT + 'filter_doc_index.csv')
print df.shape
df.set_index('index', inplace=True)


(71338, 9)

In [5]:
with(open(SKILL_RES + 'doc_20topic_distr.mtx', 'r')) as f:
    doc_topic_distr = mmread(f)

In [6]:
# reload(my_util)
# from my_util import *
reload(cluster_skill_helpers)
from cluster_skill_helpers import *

In [19]:
def changeTitle(df, t1='Teacher, Kindergarten', t2='Kindergarten Teacher'):
    n_post = df.shape[0]
    idx = [i for i in range(n_post) if df.iloc[i].title == t1]
    out_df = df.copy()
    out_df.title.iloc[idx] = t2
    return out_df

def vizPair(i, sim_df, labels, abbv_title=''):
    fig = vizDists4Pair(sim_df.iloc[i], df, doc_topic_distr, labels)
    fig.savefig(SKILL_RES + 'fig/{}_p{}.pdf'.format(abbv_title, i+1))
    plt.show(); plt.close()
    
def calSimScores(job_title='Research Fellow', industry=None, df=df, out_fmt='data_frame'): # 'Education'
    posts = df[(df['title'] == job_title) & (df['industry'] == industry)] if industry is not None else df[df['title'] == job_title]
#     posts = rmBadPosts(posts, job_title)
    n_post = posts.shape[0]
    if n_post > 100: posts = posts.sample(100)
    n_post = posts.shape[0]
#     print('{} in {}: {} posts'.format(job_title, industry, n_post))
    return pairwiseSim(posts, doc_topic_distr, out_fmt, verbose=False)

def consistency(job_title, industry, save_sim=False, abbv_job='', abbv_industry=''):
    '''
    @brief: calculate consistency score of given job title in given industry as avg of job post sims
    @param: save_sim=True if want to save the sims
    '''
    sims = calSimScores(job_title, industry)
    if save_sim:
        fname = JOB_PROF + 'consistency/{}_{}_sims.csv'.format(abbv_industry, abbv_job)
        sims.to_csv(fname, index=False)
    
    cscore = round(sims['topic_sim'].mean(), 3)
    return cscore

def cScoreAtRow(row):
    '''
    @return: consistency score of pair (job_title, industry) in the given row
    '''
    count = row.name
    if (count % 100 == 0): print('{} pairs and counting...'.format(count))
    job_title, industry = row['title'], row['industry']
    sims = calSimScores(job_title, industry)
    cscore = round(sims['topic_sim'].mean(), 3)
    return cscore

def simScore(t1, t2):
    print('{} vs. {}'.format(t1, t2))
    posts1 = df[df.title == t1]; posts2 = df[df.title == t2]
##     Rm lousy posts with too few skills from both sets
#     posts1 = rmBadPosts(posts1, t1)
#     posts2 = rmBadPosts(posts2, t2)
    
##     Sample for efficiency (if too many posts)
    n1, n2 = posts1.shape[0], posts2.shape[0]
    if n1 > 100: posts1 = posts1.sample(100)
    if n2 > 100: posts2 = posts2.sample(100)
    
    if (n1 > 0) and (n2 > 0): # needed to avoid empty sets if bad posts are removed
        res = crossSimScores(posts1, posts2, doc_topic_distr, verbose=False)
        topic_sim = round(res['topic_sim'].mean(), 3)
        return topic_sim  # return res
        # print('Topic similarity score bw {} and {}: {}'.format(t1, t2, topic_sim))
    return np.nan

def AF_clustering(posts, job_title, sim_mat):
    
    af = cluster.AffinityPropagation(affinity='precomputed').fit(sim_mat) # preference=-50,
    
    cluster_centers_indices = af.cluster_centers_indices_
    n_clusters_ = len(cluster_centers_indices)
    n_post = posts.shape[0]
    print('# posts to be clustered by Affinity Propagation model: {}'.format(n_post))
    print('Estimated number of clusters: %d' %n_clusters_)
    
    # Representatives (cluster centers)
    reps = posts.iloc[cluster_centers_indices]
    reps.to_csv(JOB_PROF + 'clusters/{}_reps.csv'.format(job_title), index=False)
    
    # Retrieve labels of posts
    res = posts.copy()
    res['af_label'] = af.labels_
    return res.sort_values('af_label')

def plotCluster(c, job_title, cluster_res): # figsize=(12,6)
    posts = cluster_res.query('af_label == {}'.format(c))
    n_post = posts.shape[0]
    if (n_post % 2 == 1):
        print('n_post={} is odd number, drop 1 post'.format(n_post)); n_post -= 1
        posts = posts.iloc[1:]

    w = 12; h = 3*n_post/4 if n_post >= 8 else 6
    fig = vizTopicDists(posts, doc_topic_distr, figsize=(w, h))
    i=c+1; title = 'Topic distribution of {} posts in {}th cluster'.format(job_title, i)
    fig.suptitle(title, fontsize=20)
    fig.savefig(SKILL_RES + 'fig/c{}_{}.pdf'.format(i, job_title))
    return fig

In [ ]:
good_df = df.query('n_skill >= 10')
good_df.shape[0]

We need to get basic stats of job titles to understand more about them. Given a title, we need to know:

  • How many posts for the title in whole ds
  • avg n_skill in the posts
  • n_employer having the title

In [ ]:
stats = getTitleStats(df)
stats.describe().round(1)
stats.to_csv(SKILL_RES + 'stats.csv', index=False)

In [ ]:
k = 20;  fname = SKILL_RES + 'lda/{}_topics.csv'.format(k)
doc_topic_distr = topic_distr[k]
topic_df = pd.read_csv(fname) 
labels = map(str.upper, topic_df['label'])

Range of Job Post Similarity Scores

We will look at distribution of topic similarity scores of certain samples in data. We investigate how the distribution varies with n_topic and sample size.


In [ ]:
with(open(SKILL_RES + 'doc_topic_distr.mtx', 'r')) as f:
    doc_15topic_distr = mmread(f)

with(open(SKILL_RES + 'doc_20topic_distr.mtx', 'r')) as f:
    doc_20topic_distr = mmread(f)

with(open(SKILL_RES + 'doc_30topic_distr.mtx', 'r')) as f:
    doc_30topic_distr = mmread(f)

In [ ]:
print(doc_15topic_distr.shape)
print(doc_20topic_distr.shape)
print(doc_30topic_distr.shape)

In [ ]:
# Allow us to loop over doc-topic dists wrt diff no. of topics
topic_distr = {15: doc_15topic_distr, 20: doc_20topic_distr, 30: doc_30topic_distr}

In [ ]:
rd.seed(1234567) # time()
size = 500; posts = good_df.sample(size)

In [ ]:
sims_15 = pairwiseSim(posts, doc_15topic_distr)
sims_20 = pairwiseSim(posts, doc_20topic_distr)
sims_30 = pairwiseSim(posts, doc_30topic_distr)

In [ ]:
sims_15.topic_sim.describe().round(3)
sims_20.topic_sim.describe().round(3)
sims_30.topic_sim.describe().round(3)

In [ ]:
sims_15.sort_values('topic_sim', inplace=True)
vizPair(0, sims_15)
vizPair(1, sims_15)

In [ ]:
medium = sims_15.query('0.7 < topic_sim and topic_sim <= 0.8')
medium.sort_values('topic_sim', inplace=True)

vizPair(0, medium, abbv_title='medium')

last = medium.shape[0]-1
vizPair(last, medium, abbv_title='medium')

large = sims_15.query('topic_sim > 0.8')
vizPair(0, large, abbv_title='large')

n_pair = sims_15.shape[0]; last = n_pair - 1
vizPair(last, sims_15)

In [ ]:
sims = {15: sims_15, 20: sims_20, 30: sims_30}
ks = [15, 20, 30]

In [413]:
for k in ks:
    fig = plotSimDists(sims[k])
    fig.suptitle('Sample size: {} posts'.format(size), fontsize=20)
    fname = SKILL_RES + 'fig/sim_dists_{}topics.pdf'.format(k)
#     fig.set_tight_layout(True)
    fig.savefig(fname)
    plt.show(); plt.close()


The plots show that topic similarity distribution $sim_{topic}$ changes gradually with the number of topics $k$ and with sample size. For a sample of size 300, we have

  • $k=15$: $sim_{topic}$ is distributed in the range $ [0.63, 0.93] $
  • $k=20$: $sim_{topic}$ is distributed in the range $ [0.62, 0.92] $
  • $k=30$: $sim_{topic}$ is distributed in the range $ [0.6, 0.9] $

Similarity of Job Posts and Consistency Score

We will look at consistency score of a given job title in a given industry. First, let's see how many pairs (job title, industry) we have and get stats for the pairs.


In [6]:
df.head(1)


Out[6]:
doc job_id title n_skill occur_skills employer_id employer_name industry
index
102501 oversee site operations for ground improvement... JOB-2015-0145129 Site Engineer 5 consultant,installation,ground improvement,lan... 199800294Z KIARATEX EXPORTS PTE. LTD. Wholesale and Retail Trade

In [8]:
by_job_and_industry = df.groupby(['title', 'industry'])

agg_df = by_job_and_industry.agg({'job_id': len, 'employer_id': 'nunique', 'n_skill': 'mean'})

agg_df = agg_df.rename(columns={'job_id': 'n_post', 'employer_id': 'n_employer', 
                               'n_skill': 'avg_n_skill'})
agg_df = agg_df.reset_index()
agg_df.describe().round(1)


Out[8]:
n_employer avg_n_skill n_post
count 15471.0 15471.0 15471.0
mean 3.3 14.9 4.6
std 6.2 8.5 13.6
min 1.0 2.0 1.0
25% 1.0 9.0 1.0
50% 1.0 13.0 2.0
75% 3.0 18.5 4.0
max 170.0 87.0 525.0

In [12]:
agg_df.sort_values('n_post', inplace=True)

In [61]:
agg_df.head(10)


Out[61]:
title industry n_employer avg_n_skill n_post
0 Analyst Financial and Insurance Activities 78 19.613333 525
1 Research Fellow Education 4 11.977876 452
2 Associate Financial and Insurance Activities 53 26.796569 408
3 Administrative Assistant Administrative and Support Service Activities 124 9.773810 336
4 Research Assistant Education 7 11.843511 262
5 Manager Financial and Insurance Activities 48 21.367089 237
6 Vice President Financial and Insurance Activities 30 26.600858 233
7 Research Associate Education 5 13.545045 222
8 Application Developer Information and Communications 100 14.820276 217
9 Recruitment Consultant Administrative and Support Service Activities 114 13.995305 213
  • First, analyze tuples (job title, industry) with $\ge 100 $ posts.

In [10]:
res = agg_df.query('n_post >= 100').copy()
print('# pairs to analyze: %d' %res.shape[0])


# pairs to analyze: 55

In [11]:
cScoreAtRow(res.iloc[0])


Accountant in Administrative and Support Service Activities: 100 posts
Out[11]:
0.881

In [96]:
res['cscore'] = res.apply(cScoreAtRow, axis=1)


Analyst in Financial and Insurance Activities
Computing pairwise similarity scores among 100 job posts,
Done after 7.9s
Research Fellow in Education
Computing pairwise similarity scores among 100 job posts,
Done after 7.9s
Associate in Financial and Insurance Activities
Computing pairwise similarity scores among 100 job posts,
Done after 7.9s
Administrative Assistant in Administrative and Support Service Activities
Computing pairwise similarity scores among 100 job posts,
Done after 7.9s
Research Assistant in Education
Computing pairwise similarity scores among 100 job posts,
Done after 7.9s
Manager in Financial and Insurance Activities
Computing pairwise similarity scores among 100 job posts,
Done after 7.9s
Vice President in Financial and Insurance Activities
Computing pairwise similarity scores among 100 job posts,
Done after 7.9s
Research Associate in Education
Computing pairwise similarity scores among 100 job posts,
Done after 7.8s
Application Developer in Information and Communications
Computing pairwise similarity scores among 100 job posts,
Done after 7.9s
Recruitment Consultant in Administrative and Support Service Activities
Computing pairwise similarity scores among 100 job posts,
Done after 7.9s
Researcher in Education
Computing pairwise similarity scores among 100 job posts,
Done after 7.9s
Information Technology Specialist in Financial and Insurance Activities
Computing pairwise similarity scores among 100 job posts,
Done after 7.9s
Software Developer in Information and Communications
Computing pairwise similarity scores among 100 job posts,
Done after 8.0s
Quantity Surveyor in Construction
Computing pairwise similarity scores among 100 job posts,
Done after 7.9s
Software Engineer in Information and Communications
Computing pairwise similarity scores among 100 job posts,
Done after 8.1s
Business Analyst in Administrative and Support Service Activities
Computing pairwise similarity scores among 100 job posts,
Done after 7.9s
Assistant Vice President in Financial and Insurance Activities
Computing pairwise similarity scores among 100 job posts,
Done after 8.2s
Accounts Assistant in Administrative and Support Service Activities
Computing pairwise similarity scores among 100 job posts,
Done after 8.0s
Business Analyst in Information and Communications
Computing pairwise similarity scores among 100 job posts,
Done after 7.9s
Business Analyst in Financial and Insurance Activities
Computing pairwise similarity scores among 100 job posts,
Done after 7.9s
Accounts Executive in Administrative and Support Service Activities
Computing pairwise similarity scores among 100 job posts,
Done after 8.1s
Sales Executive in Administrative and Support Service Activities
Computing pairwise similarity scores among 100 job posts,
Done after 8.1s
Accountant in Administrative and Support Service Activities
Computing pairwise similarity scores among 100 job posts,
Done after 8.0s
Application Developer in Administrative and Support Service Activities
Computing pairwise similarity scores among 100 job posts,
Done after 7.9s
Senior Software Engineer in Information and Communications
Computing pairwise similarity scores among 100 job posts,
Done after 8.0s
Engineer, Software in Administrative and Support Service Activities
Computing pairwise similarity scores among 100 job posts,
Done after 7.7s
Consultant in Information and Communications
Computing pairwise similarity scores among 100 job posts,
Done after 7.8s
Analyst in Administrative and Support Service Activities
Computing pairwise similarity scores among 100 job posts,
Done after 7.9s
SAP Consultant in Administrative and Support Service Activities
Computing pairwise similarity scores among 100 job posts,
Done after 7.9s
Assistant Manager in Education
Computing pairwise similarity scores among 100 job posts,
Done after 7.9s
Human Resource Executive in Administrative and Support Service Activities
Computing pairwise similarity scores among 100 job posts,
Done after 7.9s
Sales Engineer in Administrative and Support Service Activities
Computing pairwise similarity scores among 100 job posts,
Done after 7.8s
Application Consultant in Information and Communications
Computing pairwise similarity scores among 100 job posts,
Done after 8.0s
Information Technology Project Manager in Information and Communications
Computing pairwise similarity scores among 100 job posts,
Done after 8.0s
Assistant Manager in Financial and Insurance Activities
Computing pairwise similarity scores among 100 job posts,
Done after 7.9s
Engineer in Manufacturing
Computing pairwise similarity scores among 100 job posts,
Done after 8.1s
Administrative Assistant in Professional, Scientific and Technical Activities
Computing pairwise similarity scores among 100 job posts,
Done after 8.2s
Information Technology Consultant in Information and Communications
Computing pairwise similarity scores among 100 job posts,
Done after 8.1s
Sales Coordinator in Administrative and Support Service Activities
Computing pairwise similarity scores among 100 job posts,
Done after 8.2s
Manager in Professional, Scientific and Technical Activities
Computing pairwise similarity scores among 100 job posts,
Done after 8.4s
Project Manager in Information and Communications
Computing pairwise similarity scores among 100 job posts,
Done after 8.8s
SAP Consultant in Information and Communications
Computing pairwise similarity scores among 100 job posts,
Done after 8.5s
Customer Service Executive in Administrative and Support Service Activities
Computing pairwise similarity scores among 100 job posts,
Done after 9.0s
Information Technology Engineer in Administrative and Support Service Activities
Computing pairwise similarity scores among 100 job posts,
Done after 8.9s
Marketing Executive in Administrative and Support Service Activities
Computing pairwise similarity scores among 100 job posts,
Done after 8.8s
Management Assistant Officer in Education
Computing pairwise similarity scores among 100 job posts,
Done after 8.9s
Relationship Manager in Financial and Insurance Activities
Computing pairwise similarity scores among 100 job posts,
Done after 9.0s
Senior Software Engineer in Administrative and Support Service Activities
Computing pairwise similarity scores among 100 job posts,
Done after 9.8s
Project Manager in Administrative and Support Service Activities
Computing pairwise similarity scores among 100 job posts,
Done after 9.3s
Information System Engineer in Administrative and Support Service Activities
Computing pairwise similarity scores among 100 job posts,
Done after 9.5s
Executive in Education
Computing pairwise similarity scores among 100 job posts,
Done after 9.2s
Project Engineer in Construction
Computing pairwise similarity scores among 100 job posts,
Done after 9.4s
Manager in Education
Computing pairwise similarity scores among 100 job posts,
Done after 9.4s
Sales Executive in Wholesale and Retail Trade
Computing pairwise similarity scores among 100 job posts,
Done after 9.5s
Software Consultant in Information and Communications
Computing pairwise similarity scores among 100 job posts,
Done after 10.6s

In [102]:
res.cscore.describe().round(3)


Out[102]:
count    55.000
mean      0.851
std       0.031
min       0.772
25%       0.836
50%       0.851
75%       0.874
max       0.906
Name: cscore, dtype: float64

In [99]:
res = res.sort_values('cscore', ascending=False)

In [100]:
res.head()


Out[100]:
title industry n_employer avg_n_skill n_post cscore
51 Project Engineer Construction 96 8.500000 106 0.906
38 Sales Coordinator Administrative and Support Service Activities 46 9.145299 117 0.902
20 Accounts Executive Administrative and Support Service Activities 79 10.514620 171 0.901
13 Quantity Surveyor Construction 170 10.680412 194 0.899
17 Accounts Assistant Administrative and Support Service Activities 88 9.951351 185 0.889

In [101]:
res.tail()


Out[101]:
title industry n_employer avg_n_skill n_post cscore
39 Manager Professional, Scientific and Technical Activities 47 16.730435 115 0.796
16 Assistant Vice President Financial and Insurance Activities 29 21.259459 185 0.789
5 Manager Financial and Insurance Activities 48 21.367089 237 0.788
6 Vice President Financial and Insurance Activities 30 26.600858 233 0.787
2 Associate Financial and Insurance Activities 53 26.796569 408 0.772

In [103]:
res.to_csv(JOB_PROF + 'cscore_jobs_100posts.csv', index=False)

Distribution of c-scores


In [60]:
def vizCScores(res):
    fig = plt.figure(figsize=(6,5))
    plt.hist(res.cscore)
    avg, std = round(res.cscore.mean(), 3), round(res.cscore.std(), 3)
    xl = 'Consistency score' + r'$(\mu = {}, \sigma = {})$'.format(avg, std)
    plt.xlabel(xl, fontsize=16); 
    plt.ylabel('Count', fontsize=16)
    plt.grid(True)
    return fig

In [ ]:
res = agg_df.query('2 <= n_post < 100')
res.reset_index(inplace=True)

In [59]:
_ = agg_df.query('2 <= n_post')
print('# pairs with at least 2 posts: %d' % _.shape[0])


# pairs with at least 2 posts: 8037

In [29]:
del res['index']
res.head()


Out[29]:
title industry n_employer avg_n_skill n_post
0 Business Executive Professional, Scientific and Technical Activities 2 23.0 2
1 Communications Executive Administrative and Support Service Activities 2 13.5 2
2 Other Finance Dealers and Brokers Financial and Insurance Activities 2 8.5 2
3 Operations Assistant Wholesale and Retail Trade 2 9.5 2
4 Business Applications Manager Administrative and Support Service Activities 2 33.5 2

In [30]:
res['cscore'] = res.apply(cScoreAtRow, axis=1)


0 pairs and counting...
100 pairs and counting...
200 pairs and counting...
300 pairs and counting...
400 pairs and counting...
500 pairs and counting...
600 pairs and counting...
700 pairs and counting...
800 pairs and counting...
900 pairs and counting...
1000 pairs and counting...
1100 pairs and counting...
1200 pairs and counting...
1300 pairs and counting...
1400 pairs and counting...
1500 pairs and counting...
1600 pairs and counting...
1700 pairs and counting...
1800 pairs and counting...
1900 pairs and counting...
2000 pairs and counting...
2100 pairs and counting...
2200 pairs and counting...
2300 pairs and counting...
2400 pairs and counting...
2500 pairs and counting...
2600 pairs and counting...
2700 pairs and counting...
2800 pairs and counting...
2900 pairs and counting...
3000 pairs and counting...
3100 pairs and counting...
3200 pairs and counting...
3300 pairs and counting...
3400 pairs and counting...
3500 pairs and counting...
3600 pairs and counting...
3700 pairs and counting...
3800 pairs and counting...
3900 pairs and counting...
4000 pairs and counting...
4100 pairs and counting...
4200 pairs and counting...
4300 pairs and counting...
4400 pairs and counting...
4500 pairs and counting...
4600 pairs and counting...
4700 pairs and counting...
4800 pairs and counting...
4900 pairs and counting...
5000 pairs and counting...
5100 pairs and counting...
5200 pairs and counting...
5300 pairs and counting...
5400 pairs and counting...
5500 pairs and counting...
5600 pairs and counting...
5700 pairs and counting...
5800 pairs and counting...
5900 pairs and counting...
6000 pairs and counting...
6100 pairs and counting...
6200 pairs and counting...
6300 pairs and counting...
6400 pairs and counting...
6500 pairs and counting...
6600 pairs and counting...
6700 pairs and counting...
6800 pairs and counting...
6900 pairs and counting...
7000 pairs and counting...
7100 pairs and counting...
7200 pairs and counting...
7300 pairs and counting...
7400 pairs and counting...
7500 pairs and counting...
7600 pairs and counting...
7700 pairs and counting...
7800 pairs and counting...
7900 pairs and counting...
C:\Users\mdluu.2011\AppData\Local\Continuum\Anaconda2\lib\site-packages\ipykernel\__main__.py:1: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
  if __name__ == '__main__':

In [33]:
res_55 = pd.read_csv(JOB_PROF + 'cscore_jobs_100posts.csv')
res = pd.concat([res, res_55])
res.to_csv(JOB_PROF + 'cscore_all.csv', index=False)

In [61]:
fig = vizCScores(res)
fig.savefig(JOB_PROF + 'cscore_dist.pdf')
plt.show(); plt.close()



In [36]:
res = res.sort_values('cscore', ascending=False)
  • Analyze cases where cscore is 1 (posts are 100% consistent):

In [49]:
res.query('cscore == 1')


Out[49]:
title industry n_employer avg_n_skill n_post cscore
2709 Application Architect Transportation and Storage 2 18.0 2 1.0
2619 Junior Copywriter Professional, Scientific and Technical Activities 2 15.0 2 1.0
334 Operations Administrator Professional, Scientific and Technical Activities 2 19.0 2 1.0
2028 Corporate Secretarial Assistant Wholesale and Retail Trade 2 8.0 2 1.0
1658 Web Developer Health and Social Services 2 11.0 2 1.0
1359 Data Center Operator Wholesale and Retail Trade 1 14.0 2 1.0
407 Book Editor Information and Communications 2 5.0 2 1.0
2141 Application Technician Administrative and Support Service Activities 2 4.0 2 1.0
656 Senior Client Relations Officer Financial and Insurance Activities 2 23.0 2 1.0
1232 Graphic Web Designer Other Service Activities 2 15.0 2 1.0
2620 Customer Service Consultant Other Service Activities 2 6.0 2 1.0
868 Sales Support Specialist Professional, Scientific and Technical Activities 2 9.0 2 1.0
153 Communication Specialist Professional, Scientific and Technical Activities 2 8.0 2 1.0
851 Parent Liaison Manager Health and Social Services 2 5.0 2 1.0
2772 Accountant, Company Construction 3 22.0 3 1.0
2452 Senior Materials Engineer Professional, Scientific and Technical Activities 2 21.0 2 1.0
259 Business Operations Manager Accommodation and Food Service Activities 2 6.0 2 1.0
1083 Storeman Manufacturing 2 6.0 2 1.0
2190 Architectural Designer Manufacturing 2 10.0 2 1.0
1128 Sourcing Manager Professional, Scientific and Technical Activities 2 24.0 2 1.0
1710 Warehouse Manager Construction 2 7.0 2 1.0

As these cases have only 2, 3 posts, they are very likely to be re-posts. Let's see:


In [52]:
def checkRepost(in_df):
    for i in range(in_df.shape[0]):
        row = in_df.iloc[i]
        title = row['title']; industry = row['industry']
        docs = set(df[(df.title == title) & (df.industry == industry)]['doc'])
        if (len(docs) == 1):
            print (i, True)  
        else: print(docs)

In [53]:
tmp = res.query('cscore == 1')
checkRepost(tmp)


(0, True)
(1, True)
(2, True)
(3, True)
(4, True)
set(['perform day to day centre computer operations batch processing printing reports systems backup tape management server reboots facilties and infrastructure checks in the data centre handle escalations of server network issues and provide troubleshooting support pro actively monitor the data centre systems uptime and connectivity to ensure system availability to prevent any down time and coordinate problem resolution with vendor or second level support groups ensure physical security procedures are followed strictly provide server troubleshooting support', 'ability to perform day to day data center computer operations batch processing printing reports systems backup tape management server reboots facilities and infrastructure checks in data center demonstrate initative to pro actively monitor the data center systems up time and connectivity to ensure system availability to prevent any down time coordinate problem resolution with vendor or second level support groups to log and submit problem management record assigned to appropriate party to manage physical security procedures strictly'])
(6, True)
set(['our mnc client is seeking committed talent to join them as responsibilities provide technical and application support to the performance coatings industry in the australasia region assist in supporting new products development and conduct applications testing in the laboratory support day to day lab testing operations and maintain laboratory equipment assist the application manager in daily duties', 'provide technical and application support to the performance coatings industry in the australasia region assist in supporting new products development and conduct applications testing in the laboratory support day to day lab testing operations and maintain laboratory equipment assist the application manager in daily duties'])
(8, True)
(9, True)
(10, True)
(11, True)
(12, True)
(13, True)
(14, True)
(15, True)
(16, True)
set(['organizing maintaining store basic store keeping duties picking packing stock taking and inventory management basic data entry', 'organizing and maintaining store basic store keeping duties picking packing stock taking and inventory management basic data entry'])
(18, True)
(19, True)
(20, True)

Gotcha: All of them are re-posts, some with a bit editing (cases 5, 7 and 17).


In [48]:
res.query('cscore < 1').head()


Out[48]:
title industry n_employer avg_n_skill n_post cscore
2557 Junior Sous Chef Professional, Scientific and Technical Activities 1 14.0 2 0.996
1392 Advisory Software Engineer Professional, Scientific and Technical Activities 1 7.5 2 0.994
2237 Mechatronics Technician Professional, Scientific and Technical Activities 1 8.5 2 0.994
2155 Logistics Clerk Administrative and Support Service Activities 1 6.5 2 0.994
2317 Motor Vehicle Cleaner / Polisher Other Service Activities 1 8.5 2 0.994

In [54]:
checkRepost(res.query('cscore < 1').head())


set(['reporting to the executive chef designates the incumbent shall be responsible to handle kitchen operations in the kitchen assist the pastry chef in overseeing the preparation of both pastry and western cuisine assist the head chef in the planning and development of menus and recipes supervise train and develop staff ensuring consistency in work performance ensure the quality control and presentation of all food items ensure proper handling and storage of all food items in accordance with hotel standards and sanitation health regulations assist the head chef in maintaining food costs and labor costs in the outlet', 'reporting to the executive chef designates the incumbent shall be responsible to handle kitchen operations in the cafe kitchen assist the sous chef in overseeing the preparation of both local and western cuisine assist the sous chef in the planning and development of menus and recipes supervise train and develop staff ensuring consistency in work performance ensure the quality control and presentation of all food items ensure proper handling and storage of all food items in accordance with hotel standards and sanitation health regulations assist the sous chef in maintaining food costs and labor costs in the outlet'])
set(['degree or diploma in computer engineering or electrical electronics engineering strong software engineering skills 4 years in jquery standalone applications web services and database optimize application for maximum speed and scalability assure that all user input is validated before submitting to back end', 'degree or diploma in computer engineering or electrical electronics engineering strong software engineering skills 4 years in cg perl standalone applications web services and database'])
set(['this is in collaboration with ite where you will study 1 2 days and work 3 4 days school fees are paid for 1 job will include building and assembly of special vehicles and equipment 2 the trainee will be taught welding general fabrication and composites lamination 3 the trainee will be taught to integrate electronics and electrical systems to vehicle 4 the trainee will be taught how to assemble wiring harnesses', '1 job will include building and assembly of special vehicles and equipment 2 the trainee will be taught welding general fabrication and composites lamination 3 the trainee will be taught to integrate electronics and electrical systems to vehicle 4 the trainee will be taught how to assemble wiring harnesses'])
set(['coordinating of logistic shipment related activities other administrative support as and when assigned such as data entry filling and documenting you will work with a supervisor and training will be provided minimum n o levels or equivalent some simple logistic shipment working experience proficient in ms offices able to commence immediately preferred company information a engineering company located near to commonwealth mrt working hour mon thurs 8 30am 6pm friday 8 30am 5 45pm 2 months work 1 saturday sat 8 30am 12 30pm to apply interested and suitable candidates please email your cv in ms word by click apply job please include the following information in your cv 1 current salary 2 expected salary 3 reasons for leaving 4 availability', 'data entry assist in logistic duties willing to learn training will be provided 1 2 years of working experience able to commence immediately preferred responsible and good working altutide company information industry engineering working location a few minutes walk from commonwealth mrt working hour mon thurs 8 30am 6pm friday 8 30am 5 45pm 2 months work 1 saturday sat 8 30am 12 30pm salary range about 1600 1800 negotiable depends on working experience to apply interested and suitable candidates please email your cv in ms word by click apply job please include the following information in your cv 1 current salary 2 expected salary 3 reasons for leaving 4 availability'])
set(['we are a reputable car washing company dealing with government agencies our company have been awarded numerous government contracts and we are looking to expand you will be responsible for the maintenence and cleanliness of our clieant vehicles job include washing of vehicles and reporting to the transport officer supervising a team of car washers transporting the team members to different washing locations ensure monthly washing target are met developing and conducting work safety and company training programe report directly to manager we are looking for dedicated and hardworking individuals to join our dynamic team of mobile car washers the positions are only open to singaporean and pr our salary package include 13 month target bonus annual leave benefits and transport benefits', 'we are a reputable car washing company dealing with government agencies our company have been awarded numerous government contracts and we are looking to expand you will be responsible for the maintenence and cleanliness of our clieant vehicles job include washing of vehicles and reporting to the transport officer we are looking for dedicated and hardworking individuals to join our dynamic team of mobile car washers the positions are only open to singaporean and pr our salary package include 13 month target bonus annual leave benefits and transport benefits'])

Niche vs. General Job Titles

InfoCom industry


In [70]:
info_df = agg_df.query('industry == "Information and Communications"')

info_top50 = info_df.iloc[range(50)]
info_top50['cscore'] = info_top50['title'].apply(consistency, industry='Information and Communications')
info_top50.to_csv(JOB_PROF + 'consistency/infocom_cscore.csv', index=False)

info_top50.cscore.describe()


Out[70]:
count    50.00000
mean      0.84618
std       0.02295
min       0.77500
25%       0.83800
50%       0.85000
75%       0.85875
max       0.88000
Name: cscore, dtype: float64

In [79]:
info_top50.sort_values('cscore', ascending=False, inplace=True)

In [80]:
info_top50.head()


Out[80]:
title industry n_employer avg_n_skill n_post cscore
257 Analyst Programmer Information and Communications 22 9.555556 36 0.880
160 Marketing Executive Information and Communications 42 14.720000 50 0.878
41 SAP Consultant Information and Communications 33 11.149123 114 0.878
173 Administrative Assistant Information and Communications 44 12.333333 48 0.876
178 Sales Executive Information and Communications 37 11.608696 46 0.875

In [81]:
info_top50.tail()


Out[81]:
title industry n_employer avg_n_skill n_post cscore
26 Consultant Information and Communications 24 16.964539 141 0.807
282 Architect Information and Communications 19 22.606061 33 0.807
74 Analyst Information and Communications 39 18.768293 82 0.805
95 Engineer Information and Communications 21 25.819444 72 0.781
81 Manager Information and Communications 22 20.155844 77 0.775

Financial and Insurance Activities


In [75]:
fin_df = agg_df.query('industry == "Financial and Insurance Activities"')

fin_top50 = fin_df.iloc[range(50)]
fin_top50['cscore'] = fin_top50['title'].apply(consistency, industry='Financial and Insurance Activities')
fin_top50.to_csv(JOB_PROF + 'consistency/fin50_cscore.csv', index=False)


Job title Analyst:
Computing pairwise similarity scores among 100 job posts,
Done after 7.9s
Job title Associate:
Computing pairwise similarity scores among 100 job posts,
Done after 7.9s
Job title Manager:
Computing pairwise similarity scores among 100 job posts,
Done after 7.8s
Job title Vice President:
Computing pairwise similarity scores among 100 job posts,
Done after 7.8s
Job title Information Technology Specialist:
Computing pairwise similarity scores among 100 job posts,
Done after 7.8s
Job title Assistant Vice President:
Computing pairwise similarity scores among 100 job posts,
Done after 7.9s
Job title Business Analyst:
Computing pairwise similarity scores among 100 job posts,
Done after 7.9s
Job title Assistant Manager:
Computing pairwise similarity scores among 100 job posts,
Done after 7.8s
Job title Relationship Manager:
Computing pairwise similarity scores among 100 job posts,
Done after 7.9s
Job title Senior Manager:
Computing pairwise similarity scores among 97 job posts,
Done after 7.4s
Job title Executive:
Computing pairwise similarity scores among 89 job posts,
Done after 6.2s
Job title Product Manager:
Computing pairwise similarity scores among 74 job posts,
Done after 4.3s
Job title Application Developer:
Computing pairwise similarity scores among 70 job posts,
Done after 3.9s
Job title Compliance Officer:
Computing pairwise similarity scores among 63 job posts,
Done after 3.1s
Job title Administrative Assistant:
Computing pairwise similarity scores among 61 job posts,
Done after 3.0s
Job title Operations Analyst:
Computing pairwise similarity scores among 59 job posts,
Done after 2.8s
Job title Project Manager:
Computing pairwise similarity scores among 53 job posts,
Done after 2.3s
Job title Risk Manager:
Computing pairwise similarity scores among 52 job posts,
Done after 2.1s
Job title Officer:
Computing pairwise similarity scores among 50 job posts,
Done after 2.0s
Job title Associate Director:
Computing pairwise similarity scores among 50 job posts,
Done after 2.0s
Job title Information Technology Analyst:
Computing pairwise similarity scores among 49 job posts,
Done after 2.0s
Job title Compliance Manager:
Computing pairwise similarity scores among 46 job posts,
Done after 1.8s
Job title Director:
Computing pairwise similarity scores among 45 job posts,
Done after 1.6s
Job title Senior Business Analyst:
Computing pairwise similarity scores among 45 job posts,
Done after 1.6s
Job title Information Technology Project Manager:
Computing pairwise similarity scores among 44 job posts,
Done after 1.5s
Job title Risk Analyst:
Computing pairwise similarity scores among 42 job posts,
Done after 1.4s
Job title Business Development Manager:
Computing pairwise similarity scores among 41 job posts,
Done after 1.3s
Job title Accountant:
Computing pairwise similarity scores among 39 job posts,
Done after 1.3s
Job title Finance Manager:
Computing pairwise similarity scores among 39 job posts,
Done after 1.2s
Job title Financial Product Controller:
Computing pairwise similarity scores among 39 job posts,
Done after 1.2s
Job title Management Trainee:
Computing pairwise similarity scores among 37 job posts,
Done after 1.1s
Job title Bank Executive:
Computing pairwise similarity scores among 36 job posts,
Done after 1.1s
Job title Compliance Analyst:
Computing pairwise similarity scores among 35 job posts,
Done after 1.0s
Job title Accounts Executive:
Computing pairwise similarity scores among 33 job posts,
Done after 0.9s
Job title Marketing Manager:
Computing pairwise similarity scores among 32 job posts,
Done after 0.8s
Job title Credit Analyst:
Computing pairwise similarity scores among 32 job posts,
Done after 0.8s
Job title Senior Executive:
Computing pairwise similarity scores among 30 job posts,
Done after 0.7s
Job title Senior Vice President:
Computing pairwise similarity scores among 30 job posts,
Done after 0.7s
Job title Audit Manager:
Computing pairwise similarity scores among 29 job posts,
Done after 0.7s
Job title Specialist:
Computing pairwise similarity scores among 29 job posts,
Done after 0.8s
Job title Corporate Vice President:
Computing pairwise similarity scores among 29 job posts,
Done after 0.7s
Job title Business Manager:
Computing pairwise similarity scores among 29 job posts,
Done after 0.7s
Job title Senior Analyst:
Computing pairwise similarity scores among 28 job posts,
Done after 0.7s
Job title Business Project Manager:
Computing pairwise similarity scores among 28 job posts,
Done after 0.7s
Job title Bank Officer:
Computing pairwise similarity scores among 27 job posts,
Done after 0.6s
Job title In-House Counsel/Lawyer (Public or Private Corporation or Organisation):
Computing pairwise similarity scores among 26 job posts,
Done after 0.6s
Job title Executive Assistant:
Computing pairwise similarity scores among 26 job posts,
Done after 0.6s
Job title Software Engineer:
Computing pairwise similarity scores among 25 job posts,
Done after 0.5s
Job title Senior Software Engineer:
Computing pairwise similarity scores among 25 job posts,
Done after 0.6s
Job title Application Support Analyst:
Computing pairwise similarity scores among 24 job posts,
Done after 0.5s
C:\Users\mdluu.2011\AppData\Local\Continuum\Anaconda2\lib\site-packages\ipykernel\__main__.py:4: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
Out[75]:
count    50.000000
mean      0.835080
std       0.028371
min       0.774000
25%       0.819250
50%       0.836500
75%       0.851750
max       0.906000
Name: cscore, dtype: float64

In [77]:
fin_top50.cscore.describe()


Out[77]:
count    50.000000
mean      0.835080
std       0.028371
min       0.774000
25%       0.819250
50%       0.836500
75%       0.851750
max       0.906000
Name: cscore, dtype: float64

In [88]:
fin_top50 = fin_top50.sort_values('cscore', ascending=False)

In [84]:
fin_top50.head()


Out[84]:
title industry n_employer avg_n_skill n_post cscore
284 Accounts Executive Financial and Insurance Activities 29 11.363636 33 0.906
227 Accountant Financial and Insurance Activities 36 14.307692 39 0.888
253 Bank Executive Financial and Insurance Activities 7 9.944444 36 0.881
48 Relationship Manager Financial and Insurance Activities 34 14.944954 109 0.874
222 Financial Product Controller Financial and Insurance Activities 10 33.871795 39 0.870

In [85]:
fin_top50.tail()


Out[85]:
title industry n_employer avg_n_skill n_post cscore
320 Senior Vice President Financial and Insurance Activities 4 25.033333 30 0.792
2 Associate Financial and Insurance Activities 53 26.796569 408 0.784
6 Vice President Financial and Insurance Activities 30 26.600858 233 0.782
59 Senior Manager Financial and Insurance Activities 24 21.432990 97 0.778
188 Director Financial and Insurance Activities 10 27.044444 45 0.774

In [86]:
fin_res = fin_df.query('n_post >= 2').copy()
print('# cscores to be computed: %d' %fin_res.shape[0])
fin_res['cscore'] = fin_res['title'].apply(consistency, industry='Financial and Insurance Activities')
fin_res.to_csv(JOB_PROF + 'consistency/fin_cscore.csv', index=False)


# cscores to be computed: 786
Job title Analyst:
Computing pairwise similarity scores among 100 job posts,
Done after 7.8s
Job title Associate:
Computing pairwise similarity scores among 100 job posts,
Done after 7.8s
Job title Manager:
Computing pairwise similarity scores among 100 job posts,
Done after 7.8s
Job title Vice President:
Computing pairwise similarity scores among 100 job posts,
Done after 7.8s
Job title Information Technology Specialist:
Computing pairwise similarity scores among 100 job posts,
Done after 7.8s
Job title Assistant Vice President:
Computing pairwise similarity scores among 100 job posts,
Done after 8.0s
Job title Business Analyst:
Computing pairwise similarity scores among 100 job posts,
Done after 7.8s
Job title Assistant Manager:
Computing pairwise similarity scores among 100 job posts,
Done after 7.8s
Job title Relationship Manager:
Computing pairwise similarity scores among 100 job posts,
Done after 7.8s
Job title Senior Manager:
Computing pairwise similarity scores among 97 job posts,
Done after 7.4s
Job title Executive:
Computing pairwise similarity scores among 89 job posts,
Done after 6.2s
Job title Product Manager:
Computing pairwise similarity scores among 74 job posts,
Done after 4.3s
Job title Application Developer:
Computing pairwise similarity scores among 70 job posts,
Done after 3.8s
Job title Compliance Officer:
Computing pairwise similarity scores among 63 job posts,
Done after 3.2s
Job title Administrative Assistant:
Computing pairwise similarity scores among 61 job posts,
Done after 2.9s
Job title Operations Analyst:
Computing pairwise similarity scores among 59 job posts,
Done after 2.8s
Job title Project Manager:
Computing pairwise similarity scores among 53 job posts,
Done after 2.2s
Job title Risk Manager:
Computing pairwise similarity scores among 52 job posts,
Done after 2.1s
Job title Officer:
Computing pairwise similarity scores among 50 job posts,
Done after 2.0s
Job title Associate Director:
Computing pairwise similarity scores among 50 job posts,
Done after 2.1s
Job title Information Technology Analyst:
Computing pairwise similarity scores among 49 job posts,
Done after 1.9s
Job title Compliance Manager:
Computing pairwise similarity scores among 46 job posts,
Done after 1.7s
Job title Director:
Computing pairwise similarity scores among 45 job posts,
Done after 1.6s
Job title Senior Business Analyst:
Computing pairwise similarity scores among 45 job posts,
Done after 1.6s
Job title Information Technology Project Manager:
Computing pairwise similarity scores among 44 job posts,
Done after 1.5s
Job title Risk Analyst:
Computing pairwise similarity scores among 42 job posts,
Done after 1.5s
Job title Business Development Manager:
Computing pairwise similarity scores among 41 job posts,
Done after 1.4s
Job title Accountant:
Computing pairwise similarity scores among 39 job posts,
Done after 1.2s
Job title Finance Manager:
Computing pairwise similarity scores among 39 job posts,
Done after 1.2s
Job title Financial Product Controller:
Computing pairwise similarity scores among 39 job posts,
Done after 1.2s
Job title Management Trainee:
Computing pairwise similarity scores among 37 job posts,
Done after 1.1s
Job title Bank Executive:
Computing pairwise similarity scores among 36 job posts,
Done after 1.0s
Job title Compliance Analyst:
Computing pairwise similarity scores among 35 job posts,
Done after 1.0s
Job title Accounts Executive:
Computing pairwise similarity scores among 33 job posts,
Done after 0.9s
Job title Marketing Manager:
Computing pairwise similarity scores among 32 job posts,
Done after 0.9s
Job title Credit Analyst:
Computing pairwise similarity scores among 32 job posts,
Done after 1.0s
Job title Senior Executive:
Computing pairwise similarity scores among 30 job posts,
Done after 0.8s
Job title Senior Vice President:
Computing pairwise similarity scores among 30 job posts,
Done after 0.7s
Job title Audit Manager:
Computing pairwise similarity scores among 29 job posts,
Done after 0.7s
Job title Specialist:
Computing pairwise similarity scores among 29 job posts,
Done after 0.7s
Job title Corporate Vice President:
Computing pairwise similarity scores among 29 job posts,
Done after 0.7s
Job title Business Manager:
Computing pairwise similarity scores among 29 job posts,
Done after 0.7s
Job title Senior Analyst:
Computing pairwise similarity scores among 28 job posts,
Done after 0.7s
Job title Business Project Manager:
Computing pairwise similarity scores among 28 job posts,
Done after 0.7s
Job title Bank Officer:
Computing pairwise similarity scores among 27 job posts,
Done after 0.6s
Job title In-House Counsel/Lawyer (Public or Private Corporation or Organisation):
Computing pairwise similarity scores among 26 job posts,
Done after 0.6s
Job title Executive Assistant:
Computing pairwise similarity scores among 26 job posts,
Done after 0.6s
Job title Software Engineer:
Computing pairwise similarity scores among 25 job posts,
Done after 0.6s
Job title Senior Software Engineer:
Computing pairwise similarity scores among 25 job posts,
Done after 0.5s
Job title Application Support Analyst:
Computing pairwise similarity scores among 24 job posts,
Done after 0.5s
Job title Finance Analyst:
Computing pairwise similarity scores among 24 job posts,
Done after 0.5s
Job title System Administrator:
Computing pairwise similarity scores among 22 job posts,
Done after 0.4s
Job title Department Head:
Computing pairwise similarity scores among 22 job posts,
Done after 0.5s
Job title Investment Analyst:
Computing pairwise similarity scores among 22 job posts,
Done after 0.4s
Job title Assistant Finance Manager:
Computing pairwise similarity scores among 22 job posts,
Done after 0.5s
Job title Customer Service Executive:
Computing pairwise similarity scores among 22 job posts,
Done after 0.4s
Job title System Analyst:
Computing pairwise similarity scores among 22 job posts,
Done after 0.4s
Job title Human Resource Business Partner:
Computing pairwise similarity scores among 21 job posts,
Done after 0.4s
Job title Operations Manager:
Computing pairwise similarity scores among 21 job posts,
Done after 0.4s
Job title Program Manager:
Computing pairwise similarity scores among 20 job posts,
Done after 0.4s
Job title Engineer:
Computing pairwise similarity scores among 20 job posts,
Done after 0.4s
Job title Finance Executive:
Computing pairwise similarity scores among 20 job posts,
Done after 0.4s
Job title Application Analyst:
Computing pairwise similarity scores among 20 job posts,
Done after 0.4s
Job title Human Resource Executive:
Computing pairwise similarity scores among 20 job posts,
Done after 0.4s
Job title Accounts Assistant:
Computing pairwise similarity scores among 19 job posts,
Done after 0.4s
Job title Internal Auditor:
Computing pairwise similarity scores among 19 job posts,
Done after 0.5s
Job title Senior Associate:
Computing pairwise similarity scores among 19 job posts,
Done after 0.5s
Job title Information Technology Manager:
Computing pairwise similarity scores among 19 job posts,
Done after 0.4s
Job title Operations Officer:
Computing pairwise similarity scores among 18 job posts,
Done after 0.4s
Job title Information Technology Business Analyst:
Computing pairwise similarity scores among 18 job posts,
Done after 0.4s
Job title Senior Application Developer:
Computing pairwise similarity scores among 18 job posts,
Done after 0.4s
Job title Network Engineer/Manager:
Computing pairwise similarity scores among 18 job posts,
Done after 0.4s
Job title Analytics Manager:
Computing pairwise similarity scores among 18 job posts,
Done after 0.4s
Job title Financial Analyst:
Computing pairwise similarity scores among 17 job posts,
Done after 0.3s
Job title Risk Controller:
Computing pairwise similarity scores among 17 job posts,
Done after 0.3s
Job title Customer Service Officer:
Computing pairwise similarity scores among 17 job posts,
Done after 0.3s
Job title Business Development Executive:
Computing pairwise similarity scores among 17 job posts,
Done after 0.3s
Job title Underwriter, Insurance:
Computing pairwise similarity scores among 17 job posts,
Done after 0.4s
Job title Marketing Executive:
Computing pairwise similarity scores among 17 job posts,
Done after 0.3s
Job title Risk Management Executive:
Computing pairwise similarity scores among 17 job posts,
Done after 0.3s
Job title Financial Controller:
Computing pairwise similarity scores among 17 job posts,
Done after 0.3s
Job title Account Manager:
Computing pairwise similarity scores among 17 job posts,
Done after 0.4s
Job title Administrative Officer:
Computing pairwise similarity scores among 17 job posts,
Done after 0.4s
Job title Insurance Specialist:
Computing pairwise similarity scores among 15 job posts,
Done after 0.3s
Job title Administrative Executive:
Computing pairwise similarity scores among 15 job posts,
Done after 0.4s
Job title Sales Manager:
Computing pairwise similarity scores among 14 job posts,
Done after 0.2s
Job title Client Services Manager:
Computing pairwise similarity scores among 14 job posts,
Done after 0.2s
Job title Treasury Analyst:
Computing pairwise similarity scores among 14 job posts,
Done after 0.3s
Job title Human Resource Assistant:
Computing pairwise similarity scores among 14 job posts,
Done after 0.3s
Job title Senior Information Technology Analyst:
Computing pairwise similarity scores among 14 job posts,
Done after 0.2s
Job title Trader:
Computing pairwise similarity scores among 14 job posts,
Done after 0.2s
Job title Business Planning Manager:
Computing pairwise similarity scores among 14 job posts,
Done after 0.3s
Job title Account Sales Manager:
Computing pairwise similarity scores among 14 job posts,
Done after 0.3s
Job title Claims Specialist:
Computing pairwise similarity scores among 13 job posts,
Done after 0.2s
Job title Analyst, Financial:
Computing pairwise similarity scores among 13 job posts,
Done after 0.2s
Job title Operations Executive:
Computing pairwise similarity scores among 13 job posts,
Done after 0.2s
Job title Fund Accountant:
Computing pairwise similarity scores among 13 job posts,
Done after 0.2s
Job title Team Manager:
Computing pairwise similarity scores among 13 job posts,
Done after 0.2s
Job title Human Resource & Administrative Officer:
Computing pairwise similarity scores among 13 job posts,
Done after 0.2s
Job title Senior Audit Manager:
Computing pairwise similarity scores among 13 job posts,
Done after 0.2s
Job title Portfolio Manager:
Computing pairwise similarity scores among 13 job posts,
Done after 0.2s
Job title Information Technology Engineer:
Computing pairwise similarity scores among 13 job posts,
Done after 0.1s
Job title Customer Service Manager:
Computing pairwise similarity scores among 13 job posts,
Done after 0.2s
Job title Insurance Underwriter:
Computing pairwise similarity scores among 13 job posts,
Done after 0.2s
Job title Management Associate:
Computing pairwise similarity scores among 13 job posts,
Done after 0.2s
Job title Client Relationship Manager:
Computing pairwise similarity scores among 13 job posts,
Done after 0.2s
Job title Customer Care Officer:
Computing pairwise similarity scores among 13 job posts,
Done after 0.2s
Job title Secretary:
Computing pairwise similarity scores among 13 job posts,
Done after 0.2s
Job title Project Management Manager:
Computing pairwise similarity scores among 12 job posts,
Done after 0.1s
Job title Senior Operations Analyst:
Computing pairwise similarity scores among 12 job posts,
Done after 0.2s
Job title Human Resource Manager:
Computing pairwise similarity scores among 12 job posts,
Done after 0.2s
Job title Senior Application Support Analyst:
Computing pairwise similarity scores among 12 job posts,
Done after 0.2s
Job title Digital Manager:
Computing pairwise similarity scores among 12 job posts,
Done after 0.2s
Job title Personal Assistant:
Computing pairwise similarity scores among 12 job posts,
Done after 0.1s
Job title Underwriter:
Computing pairwise similarity scores among 12 job posts,
Done after 0.1s
Job title Senior Relationship Manager:
Computing pairwise similarity scores among 12 job posts,
Done after 0.2s
Job title Credit Risk Officer:
Computing pairwise similarity scores among 12 job posts,
Done after 0.1s
Job title Operation Manager:
Computing pairwise similarity scores among 12 job posts,
Done after 0.2s
Job title Client Manager:
Computing pairwise similarity scores among 12 job posts,
Done after 0.1s
Job title Sales Executive:
Computing pairwise similarity scores among 12 job posts,
Done after 0.1s
Job title Broker, Insurance:
Computing pairwise similarity scores among 11 job posts,
Done after 0.1s
Job title Service Manager:
Computing pairwise similarity scores among 11 job posts,
Done after 0.1s
Job title Investment Advisor:
Computing pairwise similarity scores among 11 job posts,
Done after 0.1s
Job title Service Delivery Manager:
Computing pairwise similarity scores among 11 job posts,
Done after 0.1s
Job title Portfolio Analyst:
Computing pairwise similarity scores among 11 job posts,
Done after 0.1s
Job title Analyst, Systems:
Computing pairwise similarity scores among 11 job posts,
Done after 0.1s
Job title Analyst, Market Research:
Computing pairwise similarity scores among 11 job posts,
Done after 0.1s
Job title Legal Consultant:
Computing pairwise similarity scores among 11 job posts,
Done after 0.1s
Job title Project Analyst:
Computing pairwise similarity scores among 11 job posts,
Done after 0.1s
Job title Analyst, Credit:
Computing pairwise similarity scores among 11 job posts,
Done after 0.1s
Job title Senior Auditor:
Computing pairwise similarity scores among 11 job posts,
Done after 0.1s
Job title Human Resource Analyst:
Computing pairwise similarity scores among 11 job posts,
Done after 0.1s
Job title Branch Manager:
Computing pairwise similarity scores among 10 job posts,
Done after 0.1s
Job title Receptionist (General):
Computing pairwise similarity scores among 10 job posts,
Done after 0.1s
Job title Analyst Programmer:
Computing pairwise similarity scores among 10 job posts,
Done after 0.1s
Job title Quantitative Analyst:
Computing pairwise similarity scores among 10 job posts,
Done after 0.1s
Job title Client Service Representative:
Computing pairwise similarity scores among 10 job posts,
Done after 0.1s
Job title Account Executive:
Computing pairwise similarity scores among 10 job posts,
Done after 0.1s
Job title Operations Specialist:
Computing pairwise similarity scores among 10 job posts,
Done after 0.1s
Job title Systems Analyst:
Computing pairwise similarity scores among 10 job posts,
Done after 0.1s
Job title Consultant:
Computing pairwise similarity scores among 10 job posts,
Done after 0.1s
Job title Actuary:
Computing pairwise similarity scores among 10 job posts,
Done after 0.1s
Job title Senior Risk Manager:
Computing pairwise similarity scores among 10 job posts,
Done after 0.1s
Job title Project Executive:
Computing pairwise similarity scores among 10 job posts,
Done after 0.1s
Job title Investment Banker:
Computing pairwise similarity scores among 9 job posts,
Done after 0.1s
Job title Staff Software Engineer:
Computing pairwise similarity scores among 9 job posts,
Done after 0.1s
Job title Innovation Planner:
Computing pairwise similarity scores among 9 job posts,
Done after 0.1s
Job title Compliance Specialist:
Computing pairwise similarity scores among 9 job posts,
Done after 0.1s
Job title Implementation Manager:
Computing pairwise similarity scores among 9 job posts,
Done after 0.1s
Job title Deputy Manager:
Computing pairwise similarity scores among 9 job posts,
Done after 0.1s
Job title Senior Compliance Manager:
Computing pairwise similarity scores among 9 job posts,
Done after 0.1s
Job title Information System Engineer:
Computing pairwise similarity scores among 9 job posts,
Done after 0.1s
Job title Engineer, Software:
Computing pairwise similarity scores among 9 job posts,
Done after 0.1s
Job title Senior Information Technology Infrastructure Analyst:
Computing pairwise similarity scores among 9 job posts,
Done after 0.1s
Job title Financial / Investment Adviser:
Computing pairwise similarity scores among 9 job posts,
Done after 0.1s
Job title Information Technology Executive:
Computing pairwise similarity scores among 9 job posts,
Done after 0.1s
Job title Administrator:
Computing pairwise similarity scores among 9 job posts,
Done after 0.1s
Job title Senior Risk Analyst:
Computing pairwise similarity scores among 9 job posts,
Done after 0.1s
Job title Quality Assurance Engineer:
Computing pairwise similarity scores among 9 job posts,
Done after 0.1s
Job title Human Resource Advisor:
Computing pairwise similarity scores among 9 job posts,
Done after 0.1s
Job title Business Systems Developer:
Computing pairwise similarity scores among 9 job posts,
Done after 0.1s
Job title Senior Account Executive:
Computing pairwise similarity scores among 8 job posts,
Done after 0.1s
Job title Client Support Analyst:
Computing pairwise similarity scores among 8 job posts,
Done after 0.1s
Job title Product Development Manager:
Computing pairwise similarity scores among 8 job posts,
Done after 0.1s
Job title IT Business Process Consultant / Business Analyst:
Computing pairwise similarity scores among 8 job posts,
Done after 0.1s
Job title Executive Secretary:
Computing pairwise similarity scores among 8 job posts,
Done after 0.1s
Job title Accounting Manager (Finance Department):
Computing pairwise similarity scores among 8 job posts,
Done after 0.1s
Job title Claims Manager:
Computing pairwise similarity scores among 8 job posts,
Done after 0.1s
Job title Business Support Executive:
Computing pairwise similarity scores among 8 job posts,
Done after 0.1s
Job title Manager, Marketing:
Computing pairwise similarity scores among 8 job posts,
Done after 0.1s
Job title Change Management Manager:
Computing pairwise similarity scores among 8 job posts,
Done after 0.1s
Job title Senior Project Manager:
Computing pairwise similarity scores among 8 job posts,
Done after 0.1s
Job title Information Technology Infrastructure Analyst:
Computing pairwise similarity scores among 8 job posts,
Done after 0.1s
Job title Information Security Manager:
Computing pairwise similarity scores among 8 job posts,
Done after 0.1s
Job title Acquisition Manager:
Computing pairwise similarity scores among 8 job posts,
Done after 0.1s
Job title Application Administrator - Information Technology:
Computing pairwise similarity scores among 8 job posts,
Done after 0.1s
Job title Controller, Financial:
Computing pairwise similarity scores among 7 job posts,
Done after 0.1s
Job title Compliance & Risk Management Officer:
Computing pairwise similarity scores among 7 job posts,
Done after 0.1s
Job title Senior Specialist:
Computing pairwise similarity scores among 7 job posts,
Done after 0.1s
Job title Senior Analytics Manager:
Computing pairwise similarity scores among 7 job posts,
Done after 0.1s
Job title Recruitment Executive:
Computing pairwise similarity scores among 7 job posts,
Done after 0.1s
Job title Communications Executive:
Computing pairwise similarity scores among 7 job posts,
Done after 0.1s
Job title Database Administrator:
Computing pairwise similarity scores among 7 job posts,
Done after 0.1s
Job title Ebusiness Manager:
Computing pairwise similarity scores among 7 job posts,
Done after 0.1s
Job title Accounting Associate Professional (eg Assistant Accountant, Audit (Accounting) Executive):
Computing pairwise similarity scores among 7 job posts,
Done after 0.1s
Job title Private Banker:
Computing pairwise similarity scores among 7 job posts,
Done after 0.1s
Job title Marketing Assistant:
Computing pairwise similarity scores among 7 job posts,
Done after 0.1s
Job title Auditor:
Computing pairwise similarity scores among 7 job posts,
Done after 0.1s
Job title Adviser, Service (Customer After-Sales Service):
Computing pairwise similarity scores among 7 job posts,
Done after 0.1s
Job title Underwriting Assistant:
Computing pairwise similarity scores among 7 job posts,
Done after 0.1s
Job title Coordinator:
Computing pairwise similarity scores among 7 job posts,
Done after 0.1s
Job title Senior Fund Accountant:
Computing pairwise similarity scores among 7 job posts,
Done after 0.1s
Job title Senior Finance Analyst:
Computing pairwise similarity scores among 7 job posts,
Done after 0.1s
Job title Regional Head:
Computing pairwise similarity scores among 7 job posts,
Done after 0.1s
Job title Manager, Training:
Computing pairwise similarity scores among 7 job posts,
Done after 0.1s
Job title Accounts Trade Executive:
Computing pairwise similarity scores among 7 job posts,
Done after 0.1s
Job title Product Specialist:
Computing pairwise similarity scores among 7 job posts,
Done after 0.1s
Job title Treasury Manager:
Computing pairwise similarity scores among 7 job posts,
Done after 0.1s
Job title Banker:
Computing pairwise similarity scores among 7 job posts,
Done after 0.1s
Job title Bank Teller:
Computing pairwise similarity scores among 7 job posts,
Done after 0.0s
Job title Human Resource Specialist:
Computing pairwise similarity scores among 7 job posts,
Done after 0.1s
Job title Bank Operations Clerk:
Computing pairwise similarity scores among 7 job posts,
Done after 0.1s
Job title Restaurant Manager:
Computing pairwise similarity scores among 7 job posts,
Done after 0.1s
Job title Information Security Consultant:
Computing pairwise similarity scores among 7 job posts,
Done after 0.1s
Job title Application Manager:
Computing pairwise similarity scores among 7 job posts,
Done after 0.1s
Job title Database Developer:
Computing pairwise similarity scores among 7 job posts,
Done after 0.1s
Job title Financial Trader:
Computing pairwise similarity scores among 6 job posts,
Done after 0.0s
Job title Telesales Executive:
Computing pairwise similarity scores among 6 job posts,
Done after 0.0s
Job title Compensation & Benefits Manager:
Computing pairwise similarity scores among 6 job posts,
Done after 0.0s
Job title Application Engineer:
Computing pairwise similarity scores among 6 job posts,
Done after 0.0s
Job title Communication Manager:
Computing pairwise similarity scores among 6 job posts,
Done after 0.0s
Job title Senior System Administrator:
Computing pairwise similarity scores among 6 job posts,
Done after 0.0s
Job title General Manager:
Computing pairwise similarity scores among 6 job posts,
Done after 0.1s
Job title Corporate Communications Manager:
Computing pairwise similarity scores among 6 job posts,
Done after 0.1s
Job title Application Architect:
Computing pairwise similarity scores among 6 job posts,
Done after 0.1s
Job title Audit Executive:
Computing pairwise similarity scores among 6 job posts,
Done after 0.1s
Job title Technical Manager:
Computing pairwise similarity scores among 6 job posts,
Done after 0.0s
Job title Tax Manager:
Computing pairwise similarity scores among 6 job posts,
Done after 0.0s
Job title Senior Product Development Manager:
Computing pairwise similarity scores among 6 job posts,
Done after 0.0s
Job title Applications / Systems Programmer:
Computing pairwise similarity scores among 6 job posts,
Done after 0.0s
Job title Systems Engineer:
Computing pairwise similarity scores among 6 job posts,
Done after 0.0s
Job title Senior Accountant (General):
Computing pairwise similarity scores among 6 job posts,
Done after 0.0s
Job title Senior System Analyst:
Computing pairwise similarity scores among 6 job posts,
Done after 0.0s
Job title Contracts Officer:
Computing pairwise similarity scores among 6 job posts,
Done after 0.0s
Job title Senior Loans Officer:
Computing pairwise similarity scores among 6 job posts,
Done after 0.0s
Job title Actuarial Analyst:
Computing pairwise similarity scores among 6 job posts,
Done after 0.0s
Job title Senior Financial Analyst:
Computing pairwise similarity scores among 6 job posts,
Done after 0.0s
Job title Client Data Management Executive:
Computing pairwise similarity scores among 6 job posts,
Done after 0.0s
Job title Derivatives Analyst:
Computing pairwise similarity scores among 6 job posts,
Done after 0.1s
Job title Senior Risk Management Executive:
Computing pairwise similarity scores among 6 job posts,
Done after 0.0s
Job title Software Developer:
Computing pairwise similarity scores among 6 job posts,
Done after 0.1s
Job title Trainer:
Computing pairwise similarity scores among 6 job posts,
Done after 0.1s
Job title Business Development Director:
Computing pairwise similarity scores among 6 job posts,
Done after 0.1s
Job title Data Architect Manager:
Computing pairwise similarity scores among 6 job posts,
Done after 0.0s
Job title Actuarial Executive:
Computing pairwise similarity scores among 6 job posts,
Done after 0.0s
Job title Client Service Assistant:
Computing pairwise similarity scores among 6 job posts,
Done after 0.0s
Job title Senior Compliance Officer:
Computing pairwise similarity scores among 6 job posts,
Done after 0.0s
Job title Underwriting Manager:
Computing pairwise similarity scores among 6 job posts,
Done after 0.0s
Job title Financial / Insurance Services Manager (eg Financial Institution Branch Manager):
Computing pairwise similarity scores among 6 job posts,
Done after 0.0s
Job title Actuarial Manager:
Computing pairwise similarity scores among 6 job posts,
Done after 0.0s
Job title Senior Engineer, Quality Assurance:
Computing pairwise similarity scores among 6 job posts,
Done after 0.0s
Job title Senior Credit Analyst:
Computing pairwise similarity scores among 6 job posts,
Done after 0.0s
Job title Java Developer:
Computing pairwise similarity scores among 6 job posts,
Done after 0.0s
Job title Assistant Operations Manager:
Computing pairwise similarity scores among 6 job posts,
Done after 0.0s
Job title Logistics Manager:
Computing pairwise similarity scores among 6 job posts,
Done after 0.0s
Job title Infrastructure Technical Specialist:
Computing pairwise similarity scores among 6 job posts,
Done after 0.0s
Job title Credit Manager:
Computing pairwise similarity scores among 6 job posts,
Done after 0.0s
Job title Internal Audit Manager:
Computing pairwise similarity scores among 6 job posts,
Done after 0.0s
Job title Business Relationship Manager:
Computing pairwise similarity scores among 6 job posts,
Done after 0.0s
Job title Finance Director:
Computing pairwise similarity scores among 6 job posts,
Done after 0.0s
Job title Information Technology Support Engineer:
Computing pairwise similarity scores among 6 job posts,
Done after 0.1s
Job title Risk Consultant:
Computing pairwise similarity scores among 6 job posts,
Done after 0.0s
Job title Management Assistant Officer:
Computing pairwise similarity scores among 6 job posts,
Done after 0.0s
Job title Information Technology Support Officer:
Computing pairwise similarity scores among 6 job posts,
Done after 0.1s
Job title Administrative Secretary:
Computing pairwise similarity scores among 6 job posts,
Done after 0.0s
Job title Loans Officer:
Computing pairwise similarity scores among 6 job posts,
Done after 0.0s
Job title Customer Service Representative:
Computing pairwise similarity scores among 6 job posts,
Done after 0.0s
Job title Assistant Information Technology Manager:
Computing pairwise similarity scores among 6 job posts,
Done after 0.0s
Job title Senior Technical Specialist:
Computing pairwise similarity scores among 6 job posts,
Done after 0.0s
Job title Regional Manager:
Computing pairwise similarity scores among 5 job posts,
Done after 0.0s
Job title Finance Intern:
Computing pairwise similarity scores among 5 job posts,
Done after 0.0s
Job title Senior Network Engineer/Manager:
Computing pairwise similarity scores among 5 job posts,
Done after 0.0s
Job title Information Technology Testing / Quality Assurance Specialist:
Computing pairwise similarity scores among 5 job posts,
Done after 0.0s
Job title Infrastructure Engineer:
Computing pairwise similarity scores among 5 job posts,
Done after 0.0s
Job title Human Resource Assistant Manager:
Computing pairwise similarity scores among 5 job posts,
Done after 0.0s
Job title Financial Consultant:
Computing pairwise similarity scores among 5 job posts,
Done after 0.0s
Job title Implementation Specialist:
Computing pairwise similarity scores among 5 job posts,
Done after 0.0s
Job title Administration Clerk:
Computing pairwise similarity scores among 5 job posts,
Done after 0.0s
Job title Client Advisor:
Computing pairwise similarity scores among 5 job posts,
Done after 0.0s
Job title Senior Technology Analyst:
Computing pairwise similarity scores among 5 job posts,
Done after 0.0s
Job title Client Relationship Executive:
Computing pairwise similarity scores among 5 job posts,
Done after 0.0s
Job title Compliance Assistant:
Computing pairwise similarity scores among 5 job posts,
Done after 0.0s
Job title Senior Systems Engineer:
Computing pairwise similarity scores among 5 job posts,
Done after 0.0s
Job title Events Coordinator:
Computing pairwise similarity scores among 5 job posts,
Done after 0.0s
Job title Client Service Consultant:
Computing pairwise similarity scores among 5 job posts,
Done after 0.0s
Job title Accounts Officer:
Computing pairwise similarity scores among 5 job posts,
Done after 0.0s
Job title Distribution Executive:
Computing pairwise similarity scores among 5 job posts,
Done after 0.0s
Job title Customer Service Team Leader:
Computing pairwise similarity scores among 5 job posts,
Done after 0.0s
Job title Senior Product Manager:
Computing pairwise similarity scores among 5 job posts,
Done after 0.0s
Job title Investment Consultant:
Computing pairwise similarity scores among 5 job posts,
Done after 0.0s
Job title Senior Finance Manager:
Computing pairwise similarity scores among 5 job posts,
Done after 0.0s
Job title Investor Relations Manager:
Computing pairwise similarity scores among 5 job posts,
Done after 0.0s
Job title Investigator:
Computing pairwise similarity scores among 5 job posts,
Done after 0.0s
Job title SAP Consultant:
Computing pairwise similarity scores among 5 job posts,
Done after 0.0s
Job title Administrative Support Officer:
Computing pairwise similarity scores among 5 job posts,
Done after 0.0s
Job title Senior Information System Engineer:
Computing pairwise similarity scores among 5 job posts,
Done after 0.0s
Job title Settlements Officer:
Computing pairwise similarity scores among 5 job posts,
Done after 0.0s
Job title Accounts Associate:
Computing pairwise similarity scores among 5 job posts,
Done after 0.0s
Job title Programme Manager:
Computing pairwise similarity scores among 5 job posts,
Done after 0.0s
Job title Dealer, Securities:
Computing pairwise similarity scores among 5 job posts,
Done after 0.0s
Job title Chef:
Computing pairwise similarity scores among 5 job posts,
Done after 0.0s
Job title Senior Engineer:
Computing pairwise similarity scores among 5 job posts,
Done after 0.1s
Job title Legal Executive (Public or Private Corporation or Organisation):
Computing pairwise similarity scores among 5 job posts,
Done after 0.0s
Job title Legal Manager:
Computing pairwise similarity scores among 5 job posts,
Done after 0.0s
Job title Project Engineer:
Computing pairwise similarity scores among 5 job posts,
Done after 0.0s
Job title Category Finance Director:
Computing pairwise similarity scores among 5 job posts,
Done after 0.0s
Job title Manager, Procurement:
Computing pairwise similarity scores among 5 job posts,
Done after 0.0s
Job title Market Research Analyst:
Computing pairwise similarity scores among 5 job posts,
Done after 0.0s
Job title Business Applications Manager:
Computing pairwise similarity scores among 5 job posts,
Done after 0.0s
Job title Technology Manager:
Computing pairwise similarity scores among 5 job posts,
Done after 0.0s
Job title Buyer:
Computing pairwise similarity scores among 5 job posts,
Done after 0.0s
Job title Nurse:
Computing pairwise similarity scores among 5 job posts,
Done after 0.0s
Job title Engineer, Quality Assurance:
Computing pairwise similarity scores among 5 job posts,
Done after 0.0s
Job title Assistant Project Manager:
Computing pairwise similarity scores among 5 job posts,
Done after 0.0s
Job title Systems Administrator:
Computing pairwise similarity scores among 5 job posts,
Done after 0.0s
Job title Marketing and Sales Representative (Institutional Sales of Financial Products):
Computing pairwise similarity scores among 5 job posts,
Done after 0.0s
Job title Senior Account Manager:
Computing pairwise similarity scores among 5 job posts,
Done after 0.0s
Job title Sales Support Executive:
Computing pairwise similarity scores among 5 job posts,
Done after 0.0s
Job title Sales Engineer:
Computing pairwise similarity scores among 5 job posts,
Done after 0.0s
Job title Banking Operations Consultant:
Computing pairwise similarity scores among 5 job posts,
Done after 0.0s
Job title Account Assistant:
Computing pairwise similarity scores among 5 job posts,
Done after 0.0s
Job title Risk Analyst (Financial):
Computing pairwise similarity scores among 5 job posts,
Done after 0.0s
Job title Senior Quality Assurance Engineer:
Computing pairwise similarity scores among 5 job posts,
Done after 0.0s
Job title Payroll Assistant:
Computing pairwise similarity scores among 5 job posts,
Done after 0.0s
Job title Project Coordinator:
Computing pairwise similarity scores among 5 job posts,
Done after 0.0s
Job title Campaign Manager:
Computing pairwise similarity scores among 5 job posts,
Done after 0.0s
Job title Call Centre Agent:
Computing pairwise similarity scores among 5 job posts,
Done after 0.0s
Job title Business Executive:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Supervisor:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Trading Analyst:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Application Specialist:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Brand Manager:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Service Quality Analyst:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Trade Executive:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Systems Specialist:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Sales Associate:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Commercial Executive:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Information Systems Manager:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Actuarial Associate:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Commodity Trader (Financial):
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Market Analyst:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Marketing Director:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Senior Information Technology Business Analyst:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Information System Analyst:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Implementation Project Manager:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Senior Information Technology Specialist:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Designer:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Chief Compliance Officer:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Manager, Quality Assurance:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Investment Sales Specialist:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Investment Manager:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Advanced Software Engineer:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Category Finance Manager:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Chief Financial Officer:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Legal Associate Professional (eg Paralegal):
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Chef de Partie (Restaurant):
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Application Support Engineer:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title User Interface Architect:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Key Account Manager:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Advisor:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Trust Officer:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Structurer:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Claims Handler:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Insurance Sales Representative:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Company Secretary (Executive):
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Information Technology Support Executive:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Business Operations Manager:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Information Technology Program Manager:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Technical Assistant:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Design Engineer:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Credit Research Analyst:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Assistant Operation Officer:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Technical Support Associate:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Financial Planning Manager:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Global Product Leader:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Senior Marketing Manager:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Assistant Business Development Manager:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Telemarketer:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Distribution Manager:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Regional Marketing Manager:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Technical Officer:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Account Relationship Manager:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Customer Relations Officer:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Corporate Sales Executive:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Technical Leader:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Technology Analyst:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Electrical Engineer (General):
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Information Technology Security Specialist:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Finance Business Partner:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Sales Team Leader:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Researcher:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Research Scientist:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Talent Management Manager:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Web Developer:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Network Systems Engineer:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Helpdesk Engineer:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Telesales Consultant:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Test Analyst:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Customer Service Assistant:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Contractor, Employment:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Accounting Executive:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Financial Accountant:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Senior Application Manager:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Senior Application Analyst:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Technical Analyst:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Payroll Executive:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Planning Analyst:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Technical Specialist:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Senior Operations Manager:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Security Analyst, Information Technology:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Senior Credit Underwriter:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Human Resource Officer:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Draftsperson:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Equity Trader:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Waiter:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Computer Systems Engineer:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Service Crew:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Support Engineer:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Business Consultant:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Business Coordinator:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Accounting Officer:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Deputy General Manager:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Administrator, Computer Systems:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Vice President, Institutional Sales:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Cook:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Administrative Operations Executive:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Desktop Support Engineer:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Director (Banking Industry):
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Senior Sourcing Manager:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Accounting Manager:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Accounts Manager:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Accounts Analyst:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Administration Manager:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Business Development Associate:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Banking Consultant:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Call Centre Manager:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Assistant Engineer:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Technician:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Customer Service Clerk:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Senior Systems Administrator:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Database Analyst:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Cashier (General):
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Client Relationship Officer:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Business System Analyst:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Commercial Manager:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Senior Transition Manager:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Solutions Architect:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Sous Chef:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Client Executive:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Clerk, Finance:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Clerk:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Auditor, Information Technology:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Contract Manager:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Budgeting and Financial Accounting Manager (Including Financial Controller):
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Administrative Accounts Assistant:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Customer Care Manager:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Customer Service Consultant:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Application Consultant:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Production Planner:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Recruitment Manager:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Research Manager:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Quality Engineer:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Quality Manager:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Property Officer:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Product Test Engineer:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Production Supervisor:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Sales Account Manager:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Product Development Executive:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Retail Sales Associate:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Product Engineer:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Product Sales Specialist:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Sales & Marketing Executive:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Project Manager (Construction):
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title SAP Specialist:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Program Administrator:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Senior Change Management Manager:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Public Relations / Corporate Communications Officer:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Sales Coordinator:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title After Sales Adviser / Client Account Service Executive:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Procurement / Purchasing Manager:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Engineering Director:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Document Specialist:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Senior Project Analyst:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Executive, Property Management:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Electronic Design Engineer:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Facilities Manager:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Performance Analyst:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Paralegal:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Planning Engineer:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Operations Assistant:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Sales Representative:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Senior Bank Executive:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Mortgage Analyst:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Senior Business Operations Manager:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Network Support Engineer:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Operations Head:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Operations Officer (Finance):
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Senior Analyst Programmer:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Senior Internal Auditor:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Human Resource & Administrative Manager:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Marketing Strategy Manager:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Associate Manager:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Internal Audit Executive:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Lawyer (Excluding Advocate and Solicitor):
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Learning and Development Analyst:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Assistant Private Banker:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Credit Underwriter:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Credit Risk Reviewer:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Assistant Marketing Manager:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Credit Control Assistant:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Corporate Finance Manager:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Hotel Receptionist:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Corporate Finance Executive:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Corporate Finance Associate:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Corporate Development Manager:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Audit Consultant:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Corporate Sales Representative:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Corporate Strategy Planner:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Corporate Secretarial Executive:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Adviser, Customer Service:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Infrastructure Support Specialist:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Intermediate Analyst:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Insurance Sales Agent / Broker (Including Independent Financial Planner):
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Legal Assistant:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Information Systems Architect:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Information Technology (It) Field Engineer:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Information Development Lead:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Information Security Administrator:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Finance Vice President, Asia Pacific:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Senior Operations Specialist:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Senior Operations Officer (Finance):
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Senior Operations Executive:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Financial Manager:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Finance Associate:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Head Chef:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Head of Legal:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Manager, Information Technology:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Senior Credit Manager:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Logistics and Procurement Coordinator:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Marketing Communications Executive:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Manager, Treasury:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Document Controller:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Senior Quantitative Analyst:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Fund Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Fund Accounting Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Facility Executive:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Human Resource Consultant:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title General Technical Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Senior Trading Executive:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Computer and Information Systems Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Senior Public Relations Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Service Executive:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Database Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Senior Infrastructure Technical Specialist:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Communication Specialist:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Senior Recruitment Executive:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Facility Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Events Marketing Executive:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Senior Process Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Corporate Secretarial Assistant:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Deployment Project Leader:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Senior Process Engineer:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Senior Programme Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Senior Manager, Training:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Executive Engineer:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Senior Management Information Systems Executive:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Senior Management Consultant:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Graphic Web Designer:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Senior System Support Associate:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Equities Analyst:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Head of Sales:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Senior Quality Control Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Shift Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Senior Trade Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Human Resource Project Lead:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Audit Associate:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Tax Executive:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Senior Application Team Leader:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Payroll Specialist:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Assistant Project Engineer:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Technical Support Executive:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Technical Support Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Sales Training Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Technical Support Engineer:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Assistant Operation Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Purchaser:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Other Finance Dealers and Brokers:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Assistant Sales Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Quality Assurance & Quality Control Administrator:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Senior Account Director:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Senior Actuarial Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Senior Actuarial Executive:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Other Administrative and Related Associate Professionals Nec:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Assistant System Administrator:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Senior Accounts Assistant:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Technical Helpdesk Specialist:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Segment Marketing Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Securities Dealer:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Section Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Assistant Restaurant Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Security Officer:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Dealer, Foreign Exchange:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Senior Manager, Human Resource:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Head of Information Technology, Asia Pacific:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Commercial Finance Advisor:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Senior Security Analyst, Information Technology:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Credit Control Executive:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Credit Control Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Senior Secretary, Company (Executive):
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Corporate Trainer:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Commodities Trader:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Clinical Quality Executive:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Designer, Graphic:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Senior Researcher, Market:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Senior Portfolio Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Corporate Support Officer:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Senior Network Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Field Service Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Senior Tax Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Events Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Information Technology Coordinator:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Senior Software Developer:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Electrical Maintenance Technician:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Derivatives Trader:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Information Technology Support Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Senior Technical Innovation Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Claims Officer:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Claims Clerk, Insurance:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Senior Marketing Communications Executive:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Executive, Training:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Senior Storage Engineer:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Control Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Senior Legal Consultant:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Engineering Technician:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Financial Services Consultant:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Senior Sales & Marketing Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Credit Officer:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Director (Media Industry):
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Senior Sales Associate:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Senior Network Support Analyst:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Cuisine Chef:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Software Development Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Software Development Engineer:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Information Technology Pre-Sales Consultant:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Senior Information System Officer:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Firmware Engineer:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Software and Applications Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Senior Human Resource Executive:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Credit Administrative Officer:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Documentation Specialist Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Claims Administrator:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Senior Sales Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Insurance Broker:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Sourcing Executive:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Document Processing Officer:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Bank Associate:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Researcher, Market:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Bank Manager (Branch):
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Real Estate Administrator:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Internal Communications Director:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Investment Sales Support:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Chief Information Officer / Chief Technology Officer / Chief Security Officer:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Maintenance Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Senior Digital Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Logistics Executive:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Account Specialist:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Maintenance Technician:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Management Information Systems Executive:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Business Solution Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Research Consultant:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Business Process Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Business Process Analyst:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Business Solutions Consultant:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Network Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Senior Database Administrator:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Management Accountant:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Accountant, Assistant:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Research Associate:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Recruitment Assistant:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Category Finance Assistant:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Ledger and Accounts Clerk:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Lease Management Executive:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Logistics Assistant:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Campaign Executive:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Senior Documentation Specialist Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Senior Distribution Executive:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Process Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Chief Operating Officer:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Civil & Structural Engineer:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Chiropractor:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Chief Technology Officer:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Systems Developer:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Merchandiser:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Web Application Developer:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Media Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Senior Business Applications Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Bartender:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Medical Doctor:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Medical Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Senior Client Relations Officer:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Support Specialist, Information Technology:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Senior Client Service Representative:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Support Executive:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Building and Construction Project Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Marketing Communications Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Building Technician:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Senior Client Support Analyst:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Senior Client Services Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Senior Chemical Engineer (General):
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Marketing Project Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Senior Client Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Registered Nurse:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Junior Sous Chef:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Account Development Executive:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Account Development Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Regional Director:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Learning & Development Executive:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Centre Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Sales Director:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Procurement Analyst:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Process Lead:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Aeronautical Engineering Technician:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Project Lead:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Translator:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Product Marketing Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Risk Management Assistant:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Product Development Engineer:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Application Team Leader:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Project Quantity Surveyor:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Trading Associate:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Product Engineering Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Application Programmer:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Transaction Monitoring Evaluator:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Administrator, Database:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Senior Analyst, Credit:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Quality Assurance & Quality Control Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Associate Banker:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Associate Revenue Operations Specialist:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Associate Marketing Director:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Associate Editor:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Senior Administrative Accounts Executive:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Accounts Payable (Or Receivable) Bookkeeper:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Operator:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Technical Engineer:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Talent Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Automotive Engineering Assistant:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Reservations Executive:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Network Administrator:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Tax Associate:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Advertising / Public Relations Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Project Management Coordinator:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Assistant Account Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title SAP Project Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Process Engineer:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Sales Consultant:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Architectural Executive:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Procurement Executive:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Vice President, Human Resources:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Procurement Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Procurement Officer:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Mobile Engineer:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Policy Administration Professional (eg Policy Analyst):
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Assistant Director:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Technical Support Specialist:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Assistant Legal Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Technical Writer:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Sales Support Specialist:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Planning Executive:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Principal Business Consultant:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Premises and Facilities Maintenance Officer:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Pricing Analyst:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Administrative Coordinator:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Travel Consultant:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Programme Director:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Advanced Manufacturing Engineer:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title After Sales Service Engineer:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Project Director:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Project Finance Director:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Adviser:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Unix Engineer:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Supply Chain Finance Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Media Analyst:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Business Coordination Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Senior Compliance Specialist:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Senior Credit Risk Reviewer:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Senior Compliance Analyst:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Managing Editor:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Business Control Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Accounting Assistant:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Marine Superintendent:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Market Development Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Manager, Computer Operations and Network:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Website Administrator / Webmaster:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Accounting Analyst:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Business Development Analyst:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Quantity Surveyor:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s

In [87]:
fin_res.cscore.describe()


Out[87]:
count    786.000000
mean       0.897221
std        0.040836
min        0.774000
25%        0.870000
50%        0.900000
75%        0.927000
max        1.000000
Name: cscore, dtype: float64

In [ ]:
# Plot dist of cscore

Entertainment


In [74]:
ent_df = agg_df.query('industry == "Arts, Entertainment and Recreation"')
ent_res = ent_df.query('n_post >= 2').copy()
ent_res['cscore'] = ent_res['title'].apply(consistency, industry='Arts, Entertainment and Recreation')
ent_res.to_csv(JOB_PROF + 'consistency/art_cscore.csv', index=False)

ent_res.cscore.describe()


Job title Executive:
Computing pairwise similarity scores among 8 job posts,
Done after 0.1s
Job title Manager:
Computing pairwise similarity scores among 6 job posts,
Done after 0.0s
Job title Director:
Computing pairwise similarity scores among 5 job posts,
Done after 0.0s
Job title Fitness Instructor:
Computing pairwise similarity scores among 5 job posts,
Done after 0.0s
Job title Cook:
Computing pairwise similarity scores among 5 job posts,
Done after 0.0s
Job title Housekeeper (Hotels and Other Establishments):
Computing pairwise similarity scores among 5 job posts,
Done after 0.0s
Job title Human Resource Executive:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Speech and Drama Teacher:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Administrative Assistant:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Accountant:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Assistant Manager:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Finance Executive:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Club Manager:
Computing pairwise similarity scores among 4 job posts,
Done after 0.0s
Job title Sales Executive:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Events Executive:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Events Marketing Executive:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Officer:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Martial Arts Instructor:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title General Manager:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Sports Development Officer:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Building Painter:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Business Development Manager:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Accounts Executive:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Advanced Software Engineer:
Computing pairwise similarity scores among 3 job posts,
Done after 0.0s
Job title Banquet Coordinator:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Pilates Instructor:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Technical Support Executive:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Physiotherapist:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Operations Assistant:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Administrator:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Veterinarian:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Psychologist, Sports:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Technician:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Administrative Executive:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Administrative Officer:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Theatre Assistant:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Maintenance Technician:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Marketing Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Mechanical & Electrical (M&E) Technician:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Accounting Assistant:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Other Personal Service Workers Nec:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Security Supervisor:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Assistant Restaurant Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Restaurant Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Site Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Finance Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Education Consultant:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Fitness Trainer:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Fitness Centre Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Customer Service Assistant:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Graphic Designer:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Horticulturist:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Customer Service Administrator:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Golf Course Shaper:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Coordinator:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Customer Service Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Guest Services Officer:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Customer Service Executive:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Customer Service Clerk:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Executive Officer:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Senior Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Front Desk Executive:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Communications Executive:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Facilities Maintenance Technician:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Facilities Manager:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Job title Security Officer:
Computing pairwise similarity scores among 2 job posts,
Done after 0.0s
Out[74]:
count    66.000000
mean      0.933258
std       0.031988
min       0.828000
25%       0.907500
50%       0.938000
75%       0.954000
max       0.986000
Name: cscore, dtype: float64

Senior Software Engineer vs. Marketing Executive (Wholesale and Retail Trade)

Denote Senior Software Engineer as SSE, Administrative Assistant as AA, and Marketing Executive as ME.


In [58]:
sse_cscore = consistency('Senior Software Engineer', 'Wholesale and Retail Trade', abbv_job='sse', abbv_industry='wholesale')
aa_cscore = consistency('Administrative Assistant', 'Wholesale and Retail Trade', abbv_job='aa', abbv_industry='wholesale')
me_sims = consistency('Marketing Executive', 'Wholesale and Retail Trade', abbv_job='me', abbv_industry='wholesale')


Job title Senior Software Engineer:
Computing pairwise similarity scores among 70 job posts,
each post is compared with subseq posts...
Done after 3.8s
Job title Administrative Assistant:
Computing pairwise similarity scores among 98 job posts,
each post is compared with subseq posts...
Done after 7.6s
Job title Marketing Executive:
Computing pairwise similarity scores among 66 job posts,
each post is compared with subseq posts...
Done after 3.5s

Vice President vs. Information Technology Specialist in Financial and Insurance Activities


In [22]:
agg_df.query('industry == "Financial and Insurance Activities"').head()


Out[22]:
title industry n_employer avg_n_skill n_post
0 Analyst Financial and Insurance Activities 78 19.613333 525
2 Associate Financial and Insurance Activities 53 26.796569 408
5 Manager Financial and Insurance Activities 48 21.367089 237
6 Vice President Financial and Insurance Activities 30 26.600858 233
11 Information Technology Specialist Financial and Insurance Activities 8 12.866029 209

Software Engineer in Finance


In [416]:
fin_se = calSimScores('Software Engineer', 'Financial and Insurance Activities', df)


Computing pairwise similarity scores among 18 job posts,
each post is compared with subseq posts...
	 0 posts and counting...
Done after 0.3s

In [417]:
print fin_se.topic_sim.describe().round(2)
print fin_se.skill_sim.describe().round(2)


count    170.00
mean       0.86
std        0.06
min        0.76
25%        0.83
50%        0.85
75%        0.88
max        1.00
Name: topic_sim, dtype: float64
count    170.00
mean       0.13
std        0.30
min        0.00
25%        0.00
50%        0.03
75%        0.05
max        1.00
Name: skill_sim, dtype: float64

In [ ]:
fin_se = fin_se.sort_values('topic_sim', ascending=False) 
# del fin_se['index']

In [ ]:
fin_se.head()

In [ ]:
fin_se.head().to_csv(SKILL_RES + 'fin_se_top5.csv', index=False)

In [ ]:
fin_se = fin_se.sort_values('skill_sim', ascending=False)
fin_se.head()

In [ ]:
np.corrcoef(fin_se.skill_sim, fin_se.topic_sim)[0,1]
Plot cluster dists of the first 5 pairs:

In [ ]:
posts = getPostsInPairs(fin_se.head())
fig = vizTopicDists(posts, doc_topic_distr, figsize=(12, 6))
plt.savefig(SKILL_RES + 'fig/fin_se_top5.pdf')
plt.show(); plt.close()

In [ ]:
fin_se.tail().to_csv(SKILL_RES + 'fin_se_bottom5.csv', index=False)

Manager in Finance


In [418]:
fin_man = calSimScores('Manager', 'Financial and Insurance Activities', df)

print fin_man.topic_sim.describe().round(2)
print fin_man.skill_sim.describe().round(2)


Computing pairwise similarity scores among 176 job posts,
each post is compared with subseq posts...
	 0 posts and counting...
	 50 posts and counting...
	 100 posts and counting...
	 150 posts and counting...
Done after 29.3s
count    15575.00
mean         0.78
std          0.07
min          0.52
25%          0.73
50%          0.78
75%          0.83
max          1.00
Name: topic_sim, dtype: float64
count    15575.00
mean         0.04
std          0.11
min          0.00
25%          0.00
50%          0.03
75%          0.05
max          1.00
Name: skill_sim, dtype: float64

In [ ]:
fin_man = fin_man.sort_values('topic_sim', ascending=False); del fin_man['index']

In [ ]:
fin_man.head().to_csv(SKILL_RES + 'fin_man_top5.csv', index=False)
fin_man.tail().to_csv(SKILL_RES + 'fin_man_bottom5.csv', index=False)

In [ ]:
posts = getPostsInPairs(fin_man.tail(), df)

In [ ]:
top5 = fin_man.query('employer1 != employer2 and skill_sim <= 0.8').head()

In [ ]:
fig = vizTopicDists(posts, doc_topic_distr, figsize=(12, 6))
plt.savefig(SKILL_RES + 'fig/fin_man_bottom5.pdf')
plt.show(); plt.close()

Research Fellow


In [ ]:
rf_sims = calSimScores(job_title='Research Fellow', industry='Education', df=df)

In [ ]:
print rf_sims.topic_sim.describe().round(3)
print rf_sims.skill_sim.describe().round(2)

In [ ]:
rf_sims = rf_sims.sort_values('topic_sim', ascending=False)
rf_sims.head()

Clustering Job Posts

In this section, we will try the following clustering models which can work directly on precomputed similarity matrix.

  • Affinity Propagation (AP): can learn number of clusters from data
  • Spectral Clustering (SC): need to preset number of clusters, which can be guessed using AP result.

After training each model, we will analyze the returned clusters by:

  • metrics (from sklearn.metrics) such as homogeneity, completeness or mutual information
  • manually looking at representative posts in each cluster. The representative posts are provided by AP as cluster centers.

In [ ]:
import sklearn.cluster as cluster

In [ ]:
# dir to store results
JOB_PROF = SKILL_RES + 'job_prof/'

Affinity Propagation

  • Software Engineer:

In [ ]:
se_sims = calSimScores('Software Engineer', df=df, out_fmt='matrix_topic_sim') # 'Financial and Insurance Activities',

In [ ]:
se_posts = df[df.title == 'Software Engineer']
se_cluster = AF_clustering(se_posts, job_title='se', sim_mat=se_sims)

In [ ]:


In [ ]:
se_cluster.groupby('af_label').size().sort_values(ascending=False)

In [ ]:
fig = plotCluster(0, job_title='SE',cluster_res=se_cluster)
# plt.show(); plt.close()

In [ ]:
for i in range(9):
    fig = plotCluster(i, job_title='SE',cluster_res=se_cluster)

In [ ]:
fig = plotCluster(10, job_title='SE',cluster_res=se_cluster)
plt.show(); plt.close()

In [ ]:
fig = plotCluster(22, job_title='SE', cluster_res=se_cluster, figsize=(12, 6))
plt.show(); plt.close()

Comparing Different Job Titles

We compare job titles to see if their job posts are consistent (thru the topic sim distribution among the job posts).


In [ ]:
se_sims_df = calSimScores('Software Engineer')

In [ ]:
se_sims_df.sort_values('topic_sim', ascending=False, inplace=True)
se_sims_df.head()

In [ ]:
se_sims_df.query('skill_sim < 1 and employer1 != employer2').head()
  • Software Developer:

In [ ]:
dev_titles = set([s for s in df.title if ('Developer' in s)])
dev_titles

In [421]:
dev_posts = df[(df.title == 'Software Developer') & (df.industry == 'Financial and Insurance Activities')]
print('# posts of Software Developer in Finance: %d' %dev_posts.shape[0])


# posts of Software Developer in Finance: 6

In [ ]:
sd_sims_df = calSimScores('Software Developer')

In [ ]:
sd_sims_df.topic_sim.describe().round(3)

Result: The similarity of posts in Software Developer are also high with a mean of 0.83 .

  • Manager:

In [ ]:
man_posts = df[(df.title == 'Manager')] # (df.industry == 'Financial and Insurance Activities')
man_sims = calSimScores('Manager', industry=None, df=df, out_fmt='matrix_topic_sim')

In [ ]:
man_cluster = AF_clustering(man_posts, job_title='Manager', sim_mat=man_sims)

In [ ]:
man_cluster.groupby('af_label').size().sort_values(ascending=False)

In [ ]:
for c in [7, 9, 11, 14, 22]:
    plotCluster(c, job_title='fin_man', cluster_res=man_cluster)

plt.close('all')

In [ ]:
man_sim_df = calSimScores('Manager')
  • Associate:

In [ ]:
assoc_sim_df = calSimScores('Associate')

In [ ]:
assoc_sim_df.topic_sim.describe().round(3)

In [ ]:
fig = plotSimDists(assoc_sim_df, job_title='Associate')
fig.savefig(SKILL_RES + 'fig/assoc_sim_dists.pdf')
plt.show(); plt.close()

In [ ]:
se_sims_df.topic_sim.describe().round(3)

In [ ]:
man_sim_df.topic_sim.describe().round(3)

In [ ]:
plt.close('all')

In [ ]:
fig = plotSimDists(sim_df=se_sims_df, job_title='Software Engineer')
plt.savefig(SKILL_RES + 'fig/se_sim_dists.pdf')
plt.show(); plt.close()

In [ ]:
fig = plotSimDists(sim_df=man_sim_df, job_title='Manager')
fig.savefig(SKILL_RES + 'fig/man_sim_dists.pdf')
plt.show(); plt.close()
  • Research Fellow

In [ ]:
rf_sim_mat = calSimScores(job_title='Research Fellow', industry='Education', df=df, out_fmt='matrix_topic_sim')

In [ ]:
rf_posts = df[(df.title=='Research Fellow') & (df.industry == 'Education')]
print('# posts of Research Fellow: %d' %rf_posts.shape[0])

In [ ]:
rf_cluster = AF_clustering(rf_posts, job_title='rf', sim_mat=rf_sim_mat)

In [ ]:
rf_cluster.groupby('af_label').size().sort_values(ascending=False)

In [ ]:
rf_c0 = plotCluster(0, job_title='RF', cluster_res=rf_cluster)
rf_c1 = plotCluster(1, job_title='RF', cluster_res=rf_cluster)
plt.close('all')

Find "Synonym" Job Titles

  • Software Engineer vs. Software Developer

In [ ]:
se_and_sd = simScore('Software Engineer', 'Software Developer')

In [ ]:
se_and_sd = se_and_sd.sort_values('topic_sim', ascending=False)
se_and_sd.reset_index(inplace=True); del se_and_sd['index']
se_and_sd.head()

In [ ]:
fig = plotSimDists(se_and_sd, 'SE_and_SD')
fig.savefig(SKILL_RES + 'fig/se_and_sd_sims.pdf')
plt.show(); plt.close()

In [ ]:
plt.close('all')

In [ ]:
vizPair(0, se_and_sd, abbv_title='se_vs_sd')

In [ ]:
last = se_and_sd.shape[0] - 1
vizPair(last, se_and_sd, abbv_title='se_vs_sd')
  • Software Engineer vs. Manager

In [ ]:
se_and_man = simScore('Software Engineer', 'Manager')

In [ ]:
se_and_man.topic_sim.describe().round(3)

In [ ]:
fig = plotSimDists(se_and_man)
fig.savefig(SKILL_RES + 'fig/se_and_man_sims.pdf')
plt.show(); plt.close()

Spectral Clustering


In [ ]:
spectral = cluster.SpectralClustering(n_clusters=2, eigen_solver='arpack', affinity="precomputed")
  • SE in Finance:

In [ ]:
spectral.fit(fin_se_sims)

In [ ]:
fin_se_posts = df[(df.title == 'Software Engineer') & (df.industry == 'Financial and Insurance Activities')]
fin_se_posts['cluster'] = spectral.labels_
fin_se_posts = fin_se_posts.sort_values('cluster')
  • Manager in Finance:

In [ ]:
spectral.fit(fin_man_sims)

In [ ]:
fin_man_posts = df[(df.title == 'Manager') & (df.industry == 'Financial and Insurance Activities')]

In [ ]:
fin_man_posts['cluster'] = spectral.labels_
fin_man_posts = fin_man_posts.sort_values('cluster')

Evaluation using the Frameworks from SkillsFuture

In this section, we use the skill frameworks from SkillsFuture (SF) as a source to evaluate our topic model as well as our proposed consistency score. Currently available frameworks are for 3 sectors: (i) Hotel and Accomodation services, (ii) Early Childcare and Education, and (iii) Precision Engineering. Given a job title t in one of the three sectors, we proceed by the following steps.

  • Obtain an exhaustive list of synonym titles for t
  • Using the titles to retrieve posts for t
  • Measure the similarity among the retrieved posts
  • Categorize the skills in these posts using the SF framework for t

In [ ]:
df = df[-df.title.isnull()]
# standardize employer_name
df.employer_name = df.employer_name.apply(lambda s: s.replace('PTE LTD', 'PTE. LTD.').replace('PTE. LIMITED', 'PTE. LTD.')
                                          .replace('PRE-SCHOOL', 'PRESCHOOL') )

df.to_csv(SKILL_DAT + 'filter_doc_index.csv')

Early Childhood Care and Education (ECCE)

Pre-School Teachers (PST)

The list of titles for PST may be formed by looking at the titles from certain pre-schools in SG. We tried with the top pre-schools obtained from https://skoolopedia.com/preschool-singapore-2015-infographic/. First try return empty results! Checking with employer name in data shows that we need to append 'PTE. LTD.' to school names. We then added schools found in data.


In [ ]:
keys = map(str.upper, ['PreSchool', 'Skool', 'CHILDCARE', 'Kid', 'toddler', 'infant'])

guessed_preschools = set([s for s in df.employer_name if found(keys, s)])
print('# guessed preschools: %d' %len(guessed_preschools))

guessed_preschools

In [ ]:
# ['Shaws CDLC', 'childfirst',  'kiddiWinkie', 'little footprints', 'brighton montessori', 'posso', 'little skool-house', 
# 'little village', 'mulberry', 'learning vision', 'Star Learners', 'global eduhub', 'sunflower childcare', 'frobel']
    
preschool_keys = ['E-BRIDGE', 'ETONHOUSE PRESCHOOL', 'MINDCHAMPS', 'LECLARE', "Pat's Schoolhouse", 
                  'SKOOL4KIDZ', 'VIVA KIDS', 'JUST KIDS LEARNING PLACE', 'BIBINOGS KIDS ACADEMY', 
                  'CREATIVE LAND CHILDCARE', 'Lorna Whiston', 
                  'Carpe Diem', 'Crestar', 'nurture edu', 'safari house']
preschool_keys = map(str.upper, preschool_keys)

preschools = [s for s in df.employer_name if found(preschool_keys, s)]
preschool_posts = df[df.employer_name.isin(preschools)]
print('# posts from preschool employers: %d, distributed as follows:' %preschool_posts.shape[0])
sortDown(preschool_posts.groupby('employer_name').size())

In [ ]:
titles = set(preschool_posts['title'])
titles

Among the titles, we can only find 2 titles for pre-school teacher [Child Care Teacher, Pre-Primary Education Teacher]. The reason is because the set of preschools are not exhaustive. How to fix this?

Another way to search for titles of PST is to look at the job titles for Teacher and manually narrow down to Pre-school Teacher as follow.


In [ ]:
idx = [i for i,s in enumerate(df.title) if ('Teacher' in s)]
teacher_df = df.iloc[idx]

In [ ]:
print('# posts of titles containing kw Teacher: %d' %teacher_df.shape[0])

In [ ]:
teacher_stat = getTitleStats(teacher_df)
teacher_stat.to_csv(SKILL_RES + 'pst/teachers.csv', index=False)

Based on this, we guessed the following titles for PST.


In [ ]:
cc_teachers = ['Pre-School Teacher', 'Kindergarten Teacher', 'Child Care Teacher', 'Pre-Primary Education Teacher',
            'Teacher, Kindergarten', 'Teacher, Child Care', 'Day Care Teacher']

In [ ]:
teacher_stat.describe().round(1)

In [ ]:
teacher_stat[teacher_stat.title.isin(cc_teachers)]
Seed set of PST

In [ ]:
pst_posts = df[df.title == 'Pre-School Teacher']
pst_posts.to_csv(SKILL_RES + 'pst/posts.csv', index=False)

In [ ]:
pst_sims = pairwiseSim(pst_posts, doc_topic_distr)

In [ ]:
print pst_sims.topic_sim.describe().round(3)
pst_sims.skill_sim.describe().round(2)

In [ ]:
fig = plotSimDists(pst_sims, sci_fmt=False)
# fig.suptitle('Pre-School Teacher (13 posts)', fontsize=20)
fig.savefig(SKILL_RES + 'fig/pst_sims.pdf')
plt.show(); plt.close()

In [ ]:
pst_sims.query('skill_sim >= 0.6')

In [ ]:
pst_sims.sort_values('topic_sim', ascending=False, inplace=True)
pst_sims.to_csv(SKILL_RES + 'pst/pst_sims.csv', index=False)

In [ ]:
pst_sims = pst_sims.query('skill_sim < 0.6')
vizPair(0, pst_sims, labels, abbv_title='pst')

In [ ]:
last = pst_sims.shape[0] - 1
vizPair(last, pst_sims, labels, abbv_title='pst')
Relevant titles for PST

In [ ]:
# employers having PST positions
pst_employers = np.unique(pst_posts.employer_name)
print('# PST employers: %d' %len(pst_employers))
# pst_employers
  • Get other titles from the PST employers:

In [ ]:
posts_of_pst_employers = df[df.employer_name.isin(pst_employers)]
print('# posts of PST employers: {}'.format(posts_of_pst_employers.shape[0]))

In [ ]:
other_titles_df = getTitleStats(posts_of_pst_employers).query('title != "Pre-School Teacher"') # n_post > 1
other_titles = other_titles_df['title']

In [ ]:
teachers = teacher_stat.title

Titles from PST employers will not include all Teacher titles.


In [ ]:
# set(teachers).difference(other_titles)
Similarity scores of relevant titles with PST

In [394]:
rel_titles = set(teachers.append(other_titles))
rel_posts = df[df.title.isin(rel_titles)]

In [396]:
# merge diff versions of some titles
rel_posts = changeTitle(rel_posts, 'Teacher, Kindergarten', 'Kindergarten Teacher')
rel_posts = changeTitle(rel_posts, 'Teacher, Child Care', 'Child Care Teacher')

In [397]:
rel_titles = set(rel_posts.title)
print('# relevant titles: %d' %len(rel_titles))
print('# titles retrieved by kw teacher: {}'.format(len(teachers)))
print('# titles retrieved by PST employers: {}'.format(len(other_titles)))


# relevant titles: 128
# titles retrieved by kw teacher: 44
# titles retrieved by PST employers: 99

In [398]:
res = getTitleStats(rel_posts)

In [399]:
res['topic_sim_with_pst'] = res['title'].apply(simScore, t2='Pre-School Teacher')


Administrative Assistant vs. Pre-School Teacher
1st title: 100 posts, 2nd title: 13 posts
Done after 1.7s
Software Engineer vs. Pre-School Teacher
1st title: 100 posts, 2nd title: 13 posts
Done after 1.7s
Sales Executive vs. Pre-School Teacher
1st title: 100 posts, 2nd title: 13 posts
Done after 1.8s
Accounts Assistant vs. Pre-School Teacher
1st title: 100 posts, 2nd title: 13 posts
Done after 1.7s
Senior Software Engineer vs. Pre-School Teacher
1st title: 100 posts, 2nd title: 13 posts
Done after 1.7s
Project Engineer vs. Pre-School Teacher
1st title: 100 posts, 2nd title: 13 posts
Done after 1.7s
Executive vs. Pre-School Teacher
1st title: 100 posts, 2nd title: 13 posts
Done after 1.7s
Consultant vs. Pre-School Teacher
1st title: 100 posts, 2nd title: 13 posts
Done after 1.7s
Human Resource Executive vs. Pre-School Teacher
1st title: 100 posts, 2nd title: 13 posts
Done after 1.8s
Quantity Surveyor vs. Pre-School Teacher
1st title: 100 posts, 2nd title: 13 posts
Done after 1.7s
Finance Manager vs. Pre-School Teacher
1st title: 100 posts, 2nd title: 13 posts
Done after 1.9s
Account Manager vs. Pre-School Teacher
1st title: 100 posts, 2nd title: 13 posts
Done after 1.7s
Account Executive vs. Pre-School Teacher
1st title: 100 posts, 2nd title: 13 posts
Done after 1.7s
Customer Service Executive vs. Pre-School Teacher
1st title: 100 posts, 2nd title: 13 posts
Done after 1.7s
Marketing Manager vs. Pre-School Teacher
1st title: 100 posts, 2nd title: 13 posts
Done after 1.7s
Recruitment Consultant vs. Pre-School Teacher
1st title: 100 posts, 2nd title: 13 posts
Done after 1.7s
Administrative Executive vs. Pre-School Teacher
1st title: 100 posts, 2nd title: 13 posts
Done after 1.7s
Business Development Executive vs. Pre-School Teacher
1st title: 100 posts, 2nd title: 13 posts
Done after 1.8s
Human Resource Assistant vs. Pre-School Teacher
1st title: 100 posts, 2nd title: 13 posts
Done after 1.7s
Information Technology Engineer vs. Pre-School Teacher
1st title: 100 posts, 2nd title: 13 posts
Done after 1.8s
Senior Executive vs. Pre-School Teacher
1st title: 100 posts, 2nd title: 13 posts
Done after 1.7s
Receptionist (General) vs. Pre-School Teacher
1st title: 100 posts, 2nd title: 13 posts
Done after 1.7s
Process Engineer vs. Pre-School Teacher
1st title: 100 posts, 2nd title: 13 posts
Done after 1.9s
Customer Service Officer vs. Pre-School Teacher
1st title: 100 posts, 2nd title: 13 posts
Done after 1.7s
Building and Construction Project Manager vs. Pre-School Teacher
1st title: 100 posts, 2nd title: 13 posts
Done after 1.7s
Human Resource Manager vs. Pre-School Teacher
1st title: 100 posts, 2nd title: 13 posts
Done after 1.7s
Project Coordinator vs. Pre-School Teacher
1st title: 100 posts, 2nd title: 13 posts
Done after 1.7s
Program Manager vs. Pre-School Teacher
1st title: 100 posts, 2nd title: 13 posts
Done after 1.7s
Logistics Executive vs. Pre-School Teacher
1st title: 100 posts, 2nd title: 13 posts
Done after 1.7s
Assistant Finance Manager vs. Pre-School Teacher
1st title: 100 posts, 2nd title: 13 posts
Done after 1.7s
Marketing Assistant vs. Pre-School Teacher
1st title: 100 posts, 2nd title: 13 posts
Done after 1.7s
Engineer, Quality Assurance vs. Pre-School Teacher
1st title: 98 posts, 2nd title: 13 posts
Done after 1.8s
Site Engineer vs. Pre-School Teacher
1st title: 95 posts, 2nd title: 13 posts
Done after 1.6s
Sales & Marketing Executive vs. Pre-School Teacher
1st title: 94 posts, 2nd title: 13 posts
Done after 1.6s
Technician vs. Pre-School Teacher
1st title: 93 posts, 2nd title: 13 posts
Done after 1.6s
Information Security Consultant vs. Pre-School Teacher
1st title: 93 posts, 2nd title: 13 posts
Done after 1.6s
Recruitment Executive vs. Pre-School Teacher
1st title: 89 posts, 2nd title: 13 posts
Done after 1.5s
Service Engineer vs. Pre-School Teacher
1st title: 87 posts, 2nd title: 13 posts
Done after 1.5s
Events Executive vs. Pre-School Teacher
1st title: 77 posts, 2nd title: 13 posts
Done after 1.3s
Technical Manager vs. Pre-School Teacher
1st title: 76 posts, 2nd title: 13 posts
Done after 1.3s
Academic Staff vs. Pre-School Teacher
1st title: 71 posts, 2nd title: 13 posts
Done after 1.2s
Purchaser vs. Pre-School Teacher
1st title: 70 posts, 2nd title: 13 posts
Done after 1.2s
Internal Auditor vs. Pre-School Teacher
1st title: 68 posts, 2nd title: 13 posts
Done after 1.2s
Technical Support Engineer vs. Pre-School Teacher
1st title: 67 posts, 2nd title: 13 posts
Done after 1.2s
Waiter vs. Pre-School Teacher
1st title: 66 posts, 2nd title: 13 posts
Done after 1.2s
Maintenance Technician vs. Pre-School Teacher
1st title: 64 posts, 2nd title: 13 posts
Done after 1.1s
Business Development Director vs. Pre-School Teacher
1st title: 58 posts, 2nd title: 13 posts
Done after 1.0s
Sales Account Manager vs. Pre-School Teacher
1st title: 50 posts, 2nd title: 13 posts
Done after 0.9s
Nurse vs. Pre-School Teacher
1st title: 48 posts, 2nd title: 13 posts
Done after 0.8s
Business Operations Manager vs. Pre-School Teacher
1st title: 46 posts, 2nd title: 13 posts
Done after 0.8s
Supervisor vs. Pre-School Teacher
1st title: 45 posts, 2nd title: 13 posts
Done after 0.8s
Communications Executive vs. Pre-School Teacher
1st title: 41 posts, 2nd title: 13 posts
Done after 0.7s
Architectural Drafter vs. Pre-School Teacher
1st title: 40 posts, 2nd title: 13 posts
Done after 0.7s
Child Care Teacher vs. Pre-School Teacher
1st title: 37 posts, 2nd title: 13 posts
Done after 0.7s
Information Technology (It) Field Engineer vs. Pre-School Teacher
1st title: 40 posts, 2nd title: 13 posts
Done after 0.7s
Senior Information System Engineer vs. Pre-School Teacher
1st title: 36 posts, 2nd title: 13 posts
Done after 0.6s
Business Development Consultant vs. Pre-School Teacher
1st title: 32 posts, 2nd title: 13 posts
Done after 0.5s
Cleaner vs. Pre-School Teacher
1st title: 31 posts, 2nd title: 13 posts
Done after 0.6s
Finance Officer vs. Pre-School Teacher
1st title: 29 posts, 2nd title: 13 posts
Done after 0.5s
CNC Machinist vs. Pre-School Teacher
1st title: 28 posts, 2nd title: 13 posts
Done after 0.5s
Secondary School Teacher vs. Pre-School Teacher
1st title: 27 posts, 2nd title: 13 posts
Done after 0.5s
Civil Engineer (Building Construction) vs. Pre-School Teacher
1st title: 27 posts, 2nd title: 13 posts
Done after 0.5s
Sales Account Executive vs. Pre-School Teacher
1st title: 26 posts, 2nd title: 13 posts
Done after 0.5s
Teacher (International School) vs. Pre-School Teacher
1st title: 24 posts, 2nd title: 13 posts
Done after 0.4s
Public Relations Executive vs. Pre-School Teacher
1st title: 23 posts, 2nd title: 13 posts
Done after 0.4s
Language Teacher vs. Pre-School Teacher
1st title: 22 posts, 2nd title: 13 posts
Done after 0.4s
Duty Manager vs. Pre-School Teacher
1st title: 22 posts, 2nd title: 13 posts
Done after 0.4s
Project Consultant vs. Pre-School Teacher
1st title: 20 posts, 2nd title: 13 posts
Done after 0.3s
Solutions Consultant vs. Pre-School Teacher
1st title: 19 posts, 2nd title: 13 posts
Done after 0.3s
Quality Assurance Manager vs. Pre-School Teacher
1st title: 18 posts, 2nd title: 13 posts
Done after 0.3s
Business Process Analyst vs. Pre-School Teacher
1st title: 18 posts, 2nd title: 13 posts
Done after 0.3s
Senior Sales Executive vs. Pre-School Teacher
1st title: 17 posts, 2nd title: 13 posts
Done after 0.3s
Front office Manager vs. Pre-School Teacher
1st title: 17 posts, 2nd title: 13 posts
Done after 0.3s
Kindergarten Teacher vs. Pre-School Teacher
1st title: 13 posts, 2nd title: 13 posts
Done after 0.2s
Pre-University (Including Junior College) and Secondary School Teacher vs. Pre-School Teacher
1st title: 17 posts, 2nd title: 13 posts
Done after 0.3s
Assistant Teacher vs. Pre-School Teacher
1st title: 15 posts, 2nd title: 13 posts
Done after 0.2s
Commercial School Teacher vs. Pre-School Teacher
1st title: 14 posts, 2nd title: 13 posts
Done after 0.2s
Pre-School Teacher vs. Pre-School Teacher
1st title: 13 posts, 2nd title: 13 posts
Done after 0.2s
Marketing Officer vs. Pre-School Teacher
1st title: 13 posts, 2nd title: 13 posts
Done after 0.2s
Counsellor vs. Pre-School Teacher
1st title: 12 posts, 2nd title: 13 posts
Done after 0.2s
School Principal vs. Pre-School Teacher
1st title: 12 posts, 2nd title: 13 posts
Done after 0.2s
Librarian vs. Pre-School Teacher
1st title: 12 posts, 2nd title: 13 posts
Done after 0.2s
Business Relationship Manager vs. Pre-School Teacher
1st title: 11 posts, 2nd title: 13 posts
Done after 0.2s
Primary School Teacher vs. Pre-School Teacher
1st title: 11 posts, 2nd title: 13 posts
Done after 0.2s
Premises and Facilities Maintenance Manager vs. Pre-School Teacher
1st title: 11 posts, 2nd title: 13 posts
Done after 0.2s
Operations Administrator vs. Pre-School Teacher
1st title: 11 posts, 2nd title: 13 posts
Done after 0.2s
Admissions Officer vs. Pre-School Teacher
1st title: 11 posts, 2nd title: 13 posts
Done after 0.2s
IT Development Officer vs. Pre-School Teacher
1st title: 10 posts, 2nd title: 13 posts
Done after 0.2s
Computer and Information Systems Manager vs. Pre-School Teacher
1st title: 9 posts, 2nd title: 13 posts
Done after 0.1s
Special Education Teacher vs. Pre-School Teacher
1st title: 9 posts, 2nd title: 13 posts
Done after 0.1s
Music Teacher (Other Than Secondary School) vs. Pre-School Teacher
1st title: 8 posts, 2nd title: 13 posts
Done after 0.1s
Factory Manager vs. Pre-School Teacher
1st title: 8 posts, 2nd title: 13 posts
Done after 0.1s
Quality Assurance Inspector vs. Pre-School Teacher
1st title: 8 posts, 2nd title: 13 posts
Done after 0.1s
Support Executive vs. Pre-School Teacher
1st title: 8 posts, 2nd title: 13 posts
Done after 0.1s
Banquet Coordinator vs. Pre-School Teacher
1st title: 8 posts, 2nd title: 13 posts
Done after 0.1s
Speech and Drama Teacher vs. Pre-School Teacher
1st title: 6 posts, 2nd title: 13 posts
Done after 0.1s
Pre-Primary Education Teacher vs. Pre-School Teacher
1st title: 6 posts, 2nd title: 13 posts
Done after 0.1s
Other Special Education Teachers vs. Pre-School Teacher
1st title: 5 posts, 2nd title: 13 posts
Done after 0.1s
Clinic Receptionist vs. Pre-School Teacher
1st title: 5 posts, 2nd title: 13 posts
Done after 0.1s
Teachers' Aide vs. Pre-School Teacher
1st title: 5 posts, 2nd title: 13 posts
Done after 0.1s
Language Teacher (Language School) vs. Pre-School Teacher
1st title: 4 posts, 2nd title: 13 posts
Done after 0.1s
Learning Support Teacher vs. Pre-School Teacher
1st title: 3 posts, 2nd title: 13 posts
Done after 0.0s
Art Teacher vs. Pre-School Teacher
1st title: 3 posts, 2nd title: 13 posts
Done after 0.1s
Day Care Teacher vs. Pre-School Teacher
1st title: 3 posts, 2nd title: 13 posts
Done after 0.0s
Education Methods Adviser vs. Pre-School Teacher
1st title: 3 posts, 2nd title: 13 posts
Done after 0.1s
Student Teacher vs. Pre-School Teacher
1st title: 3 posts, 2nd title: 13 posts
Done after 0.1s
Teacher, Primary School vs. Pre-School Teacher
1st title: 3 posts, 2nd title: 13 posts
Done after 0.0s
Assistant Captain (Restaurant) vs. Pre-School Teacher
1st title: 3 posts, 2nd title: 13 posts
Done after 0.0s
Physical Education Teacher vs. Pre-School Teacher
1st title: 3 posts, 2nd title: 13 posts
Done after 0.1s
Language School Teacher vs. Pre-School Teacher
1st title: 2 posts, 2nd title: 13 posts
Done after 0.0s
Senior Teacher, Primary School vs. Pre-School Teacher
1st title: 2 posts, 2nd title: 13 posts
Done after 0.0s
Teacher, Music (Other Than Secondary School) vs. Pre-School Teacher
1st title: 1 posts, 2nd title: 13 posts
Done after 0.0s
Relief Teacher vs. Pre-School Teacher
1st title: 1 posts, 2nd title: 13 posts
Done after 0.0s
Aquatics Teacher vs. Pre-School Teacher
1st title: 1 posts, 2nd title: 13 posts
Done after 0.0s
Teacher, Vocational School vs. Pre-School Teacher
1st title: 1 posts, 2nd title: 13 posts
Done after 0.0s
Teacher, Secondary School vs. Pre-School Teacher
1st title: 1 posts, 2nd title: 13 posts
Done after 0.0s
Technical / Vocational / Commercial Education Institute Teacher vs. Pre-School Teacher
1st title: 1 posts, 2nd title: 13 posts
Done after 0.0s
Senior Language Teacher vs. Pre-School Teacher
1st title: 1 posts, 2nd title: 13 posts
Done after 0.0s
Teacher, Language (Language School) vs. Pre-School Teacher
1st title: 1 posts, 2nd title: 13 posts
Done after 0.0s
Teacher, Extracurricular Subjects vs. Pre-School Teacher
1st title: 1 posts, 2nd title: 13 posts
Done after 0.0s
Teacher, Commercial School vs. Pre-School Teacher
1st title: 1 posts, 2nd title: 13 posts
Done after 0.0s
Teacher Librarian vs. Pre-School Teacher
1st title: 1 posts, 2nd title: 13 posts
Done after 0.0s
Junior College Teacher vs. Pre-School Teacher
1st title: 1 posts, 2nd title: 13 posts
Done after 0.0s
Dress Making Teacher (Other Than Vocational School) vs. Pre-School Teacher
1st title: 1 posts, 2nd title: 13 posts
Done after 0.0s
Art Teacher (Other Than Secondary and Vocational School) vs. Pre-School Teacher
1st title: 1 posts, 2nd title: 13 posts
Done after 0.0s
Senior Teacher, Language (Language School) vs. Pre-School Teacher
1st title: 1 posts, 2nd title: 13 posts
Done after 0.0s
Senior Secondary School Teacher vs. Pre-School Teacher
1st title: 1 posts, 2nd title: 13 posts
Done after 0.0s
Senior Teacher, Secondary School vs. Pre-School Teacher
1st title: 1 posts, 2nd title: 13 posts
Done after 0.0s

In [400]:
res.sort_values('topic_sim_with_pst', ascending=False, inplace=True)
res.avg_n_skill = res.avg_n_skill.round(1)

In [ ]:
res.to_csv(SKILL_RES + 'pst/sims.csv', index=False)

In [408]:
res.describe().round(3)


Out[408]:
n_employer avg_n_skill n_post topic_sim_with_pst
count 128.000 128.000 128.000 128.000
mean 59.141 13.893 86.008 0.805
std 89.715 4.775 139.611 0.045
min 1.000 4.000 1.000 0.742
25% 5.000 10.700 6.000 0.771
50% 18.000 12.850 23.500 0.785
75% 81.000 16.325 95.750 0.851
max 615.000 35.000 993.000 0.908

The description shows us the following:

  • totally $128$ job titles are compared against PST

In [ ]:
res.query('n_post >= 6').describe().round(3)

In [407]:
res.query('n_post >= 6').head(10)


Out[407]:
title n_employer avg_n_skill n_post topic_sim_with_pst
70 Pre-Primary Education Teacher 4 11.2 6 0.897
109 Speech and Drama Teacher 3 10.3 6 0.885
71 Pre-School Teacher 11 14.6 13 0.885
23 Child Care Teacher 27 10.9 40 0.882
94 Secondary School Teacher 11 9.0 27 0.879
108 Special Education Teacher 8 10.7 9 0.878
13 Assistant Teacher 13 11.2 15 0.870
113 Teacher (International School) 9 15.4 24 0.870
27 Commercial School Teacher 10 11.1 14 0.865
54 Kindergarten Teacher 9 10.3 17 0.864
  • Why 'Speech and Drama Teacher' is very similar to PST?

In [405]:
df[df.title == 'Speech and Drama Teacher'].iloc[0].doc


Out[405]:
'enthusiastic and experienced teachers with good articulate english to lead teach and direct our internationally renown helen o grady drama classes we provide training in our teaching methods curriculum lesson plans and play scripts teachers are required to prepare and conduct their lessons independently you must have good classroom management skills to handle small 10 students to large classes of 25 students the positions are for singapore but if suitably qualifed candidates are found who is open to travel relocation opportunities prevail to be based in china and or myanmar'

In [ ]:
res.tail()

In [ ]:
tmp = teacher_df.query('title == "Student Teacher"')
print tmp.iloc[0]['employer_name']
print tmp.iloc[0]['doc']
  • Measure the similarity among the retrieved posts:

In [ ]:
cc_sims = pairwiseSim(cc_df, doc_topic_distr)

In [ ]:
print('# pairs: %d' %cc_sims.shape[0])

In [ ]:
# del cc_sims['index']
cc_sims.topic_sim.describe().round(3)

In [ ]:
fig = plotSimDists(cc_sims, 'Pre-School Teacher')
fig.savefig(SKILL_RES + 'fig/pst_sims.pdf')
plt.show(); plt.close()

In [ ]:
cc_sims = cc_sims.sort_values('skill_sim', ascending=False)

In [ ]:
cc_sims.query('skill_sim >= 0.8').to_csv(SKILL_RES + 'job_prof/pst_variants.csv', index=False)

In [ ]:
cc_sims.query('(employer1 != employer2) and (topic_sim >= 0.9) and (skill_sim < 0.8)')

In [ ]:
niwa_df = cc_sims.query('employer1 == "NIWA SCHOOLHOUSE"')
print(niwa_df.shape[0])

In [ ]:
niwa_df.head()

In [ ]:
tmp = niwa_df.head()
plt.close('all')

In [ ]:
vizPair(0, niwa_df)

In [ ]:
vizPair(1, niwa_df)

Result: The topic similarity scores are very high with a mean value of 0.99!

  • Categorize the skills in these posts using the SF framework for PST:

The SF framework for PST has 10 categories of skills (listed below). When we manually labeled the top-100 popular skills using the categories, we detected another group of skills, namely language skills e.g. chinese, mandarin. We labeled this group as Language Skill. We also found several skills which cannot go into any categories, we thus create Others group for these skills. In short, we have 12 following categories of skills.


In [ ]:
categs = {'c-dev': 'Child Development', 'ped': 'Curriculum & Pedagogy', 
          'env': 'Learning environment', 'rel' : 'Interaction & Relationships', 
          'safety' : 'Health, Safety & Nutrition', 'family & com' : 'Family & Community partnerships', 
          'prof dev' : 'Professional Mastery', 'prof val' : 'Professional Values & Ethics', 
          'teamwork' : 'Teamwork & Collaboration', 'plan' : 'Visioning & Planning', 
          'lang': 'Language Skill', 'others' : 'Others'}

In [ ]:
skill_sets = map(lambda s: set(s.split(',')), cc_df.occur_skills)
cc_skills = unionAll(skill_sets)
print('# skills in child care posts: %d' %len(cc_skills))

freqs = [freq(sk, skill_sets) for sk in cc_skills]
cc_skill_df = pd.DataFrame({'skill': list(cc_skills), 'freq': freqs})

# cc_skill_df.sort_values('freq', ascending=False).to_csv(SKILL_RES + 'cc_skills.csv', index=False)

The final result is follows.


In [ ]:
cc_skill_df = pd.read_csv(SKILL_RES + 'cc_skills.csv')

In [ ]:
# top 100 skills
top_100 = pd.DataFrame(cc_skill_df.head(100))
top_100['Category'] = top_100.label.apply(lambda x: categs[x])
print('Distribution of categories among top-100 skills')
sortDown(top_100.groupby('Category').size())

In [ ]:
top_100['skill_freq'] = top_100.skill + ' (' + map(str, top_100.freq) + ')'
top_100.head(1)

In [ ]:
tmp = top_100.groupby('Category').agg({'skill_freq': joinEntries, 'skill': len})
tmp = tmp.reset_index().rename(columns = {'skill_freq': 'skills (freq)', 'skill': 'n_skill'})
tmp

In [ ]:
tmp.to_csv(JOB_PROF + 'cc_skill_categ.csv', index=False)

In [ ]:
print [sk for sk in cc_skills if ('child' in sk)]
print [sk for sk in cc_skills if ('curriculum' in sk)]
Pinnacle Leader

Hotel and Accomodation Services (HAS)

  • Obtain an exhaustive list of job titles available for hotels, hostels in SG:

In [ ]:
# query employers in HAS in ds
hotel_kws = map(str.upper, ['hotel', 'hostel', 'motel', 'lodging', 'resort'])
names = [s for s in df.employer_name if found(hotel_kws, s)]
hotels = pd.DataFrame({'name': names}).drop_duplicates()

print('# employers in HAS: %d' %hotels.shape[0])

In [ ]:
hotels.to_csv(SKILL_RES + 'hotels.csv', index=False)

In [ ]:
# query all posts of the employers
has_posts = df[df.employer_name.isin(hotels)]
print('# posts in HAS: %d, distributed as follows:' %has_posts.shape[0])
# sortDown(has_posts.groupby('employer_name').size())

In [ ]:
# query possible job titles for the employers in HAS
has_title = set(has_posts.title)
print('# titles in the HAS employers: %d' %len(has_title))

In [ ]:
has_title_stats = stats[stats.title.isin(has_title)]
has_title_stats.to_csv(SKILL_RES + 'has_title_stats.csv', index=False)

In [ ]:
has_title_stats.describe().round(1)

Housekeeping (HK) track


In [ ]:
HK_DIR = SKILL_RES + 'job_prof/hk/'

In [ ]:
# based on __keywords__ in titles suggested by SF
hk_kw = ['Housekeeper', 'Housekeeping Attendant', 'Room']
hk_titles = set([t for t in has_posts.title if found(hk_kw, t)])
hk_titles

Only 'Housekeeper (Hotels and Other Establishments)' and 'Housekeeping Attendant' are exact match for HK track. So we only keep the two titles for HK. We then change the former to the latter s.t. we have a consistent title for posts of HK.


In [ ]:
df = changeTitle(df, 'Housekeeper (Hotels and Other Establishments)', 'Housekeeping Attendant')

In [380]:
hk_kw = ['Housekeep']
hk_titles = set([t for t in df.title if found(hk_kw, t)])
hk_titles


Out[380]:
{'Housekeeping Attendant',
 'Housekeeping Manager',
 'Housekeeping Supervisor',
 'Other Housekeepers and Related Workers (eg Personal Butler)'}

As HK Manager and HK Supervisor are similar, we merge them together.


In [381]:
df = changeTitle(df, 'Housekeeping Manager', 'Housekeeping Supervisor')

After the merging, we need to re-comp the statistics for job titles as the stats change.


In [382]:
stats = getTitleStats(df)
stats.to_csv(SKILL_RES + 'stats.csv', index=False)

In [383]:
hk_titles = set([t for t in df.title if found(hk_kw, t)])
hk_titles


Out[383]:
{'Housekeeping Attendant',
 'Housekeeping Supervisor',
 'Other Housekeepers and Related Workers (eg Personal Butler)'}

In [ ]:
_ = df[df.title.isin(hk_titles)]
print('# posts: %d' %_.shape[0])
Seed set for HK

In [ ]:
hk_posts = df[df.title == 'Housekeeping Attendant']
print('# HK posts: %d' %hk_posts.shape[0])
  • Measure the similarity among HK posts:

In [ ]:
hk_sims = pairwiseSim(hk_posts, doc_topic_distr)
hk_sims.topic_sim.describe().round(2)

Again, the topic similarity is high with a mean value of $0.89$.


In [ ]:
fig = plotSimDists(hk_sims, sci_fmt=False)
fig.set_tight_layout(True)
fig.savefig(SKILL_RES + 'fig/HK/hk_sims.pdf')
plt.show(); plt.close()

In [ ]:
hk_sims = hk_sims.sort_values('topic_sim', ascending=False)

In [ ]:
vizPair(0, hk_sims, labels, abbv_title='hk')

The two posts above are from hotels of the same group: Park Hotel Group.


In [ ]:
vizPair(1, hk_sims, labels, abbv_title='hk')

This case a job agency reposted the job for the employer.


In [ ]:
vizPair(2, hk_sims, labels, abbv_title='hk')

In [ ]:
last = hk_sims.shape[0]-1
vizPair(last, hk_sims, labels, abbv_title='hk')
Relevant titles for HK
  • From employers of HK positions:

In [ ]:
hk_employers = hk_posts.employer_name.drop_duplicates()
hk_employers.to_csv(HK_DIR + 'employers.csv', index=False)

In [ ]:
print('# employers having HK positions: %d' %len(hk_employers))

In [ ]:
# posts from HK employers
posts_of_hk_employers = df[df.employer_name.isin(hk_employers)]
print('# posts from HK employers: %d' %posts_of_hk_employers.shape[0])

In [ ]:
titles_from_hk_employers = set(posts_of_hk_employers['title'])
print('# titles from HK employers: %d' %len(titles_from_hk_employers))

In [ ]:
rel_titles = titles_from_hk_employers.union(hk_titles)
print('# relevant titles: %d' %len(rel_titles))

In [ ]:
hk_titles.difference(titles_from_hk_employers)

As we already cover a large number of relevant titles. We may not need to retrieve more titles based on key words.


In [ ]:
# + Contains keywords relevant to HK:

But first let us look at basic stats of the titles.


In [385]:
rel_title_stats = stats[stats.title.isin(rel_titles)]
rel_title_stats.describe().round(1)


Out[385]:
n_employer avg_n_skill n_post
count 512.0 512.0 512.0
mean 41.9 13.2 59.7
std 64.7 4.2 106.9
min 1.0 5.0 1.0
25% 7.0 10.4 8.0
50% 18.0 12.5 22.0
75% 49.0 15.5 58.0
max 615.0 41.0 993.0

In [ ]:
rel_title_stats.to_csv(HK_DIR + 'rel_title_stats.csv', index=False)

From the summary, we see that:

  • 25% of titles have <= 8 post
  • 50% of titles have <= 22 posts.

In [384]:
hk_title_stats = stats[stats.title.isin(hk_titles)]
hk_title_stats


Out[384]:
title n_employer avg_n_skill n_post
1791 Housekeeping Attendant 31 11.0 41
1792 Housekeeping Supervisor 27 10.8 38
2503 Other Housekeepers and Related Workers (eg Per... 1 7.0 1

As 512 titles is too many, we need to narrow down. We want to keep all the titles with kw 'Housekeep', except the last one. Combining the stats of HK titles with that of relevant titles, we have 2 options for the filtering threshold $\theta$:

  • $\theta = 22$: median of n_post of all relevant titles.
  • $\theta = 38$: filter out more titles but still can keep both HK Supervisor and HK Attendant.

In [386]:
thetas = [22, 38]
for t in thetas:
    _ = rel_title_stats.query('n_post >= {}'.format(t))
    print('# titles to be compared if threshold is {}: {}'.format(t, _.shape[0]))


# titles to be compared if threshold is 22: 259
# titles to be compared if threshold is 38: 191
Similarity with relevant titles

In [387]:
def sims2RelTitles(min_post):
    print('Picked titles with at least {} posts'.format(min_post))
    res = rel_title_stats.query('n_post >= {}'.format(min_post))
    res['topic_sim_with_hk'] = res['title'].apply(simScore, t2='Housekeeping Attendant')

    res = res.round(2)
    res = res.sort_values('topic_sim_with_hk', ascending=False)

    res.reset_index(inplace=True); del res['index']
    return res

In [388]:
res_38 = sims2RelTitles(min_post=38)


Picked titles with at least 38 posts
Administrative Assistant vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.5s
Business Analyst vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.5s
Manager vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.4s
Application Developer vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.5s
Project Manager vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.3s
Accountant vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.4s
Assistant Manager vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.5s
Accounts Executive vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.4s
Software Engineer vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.5s
Sales Executive vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.4s
Accounts Assistant vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.4s
Business Development Manager vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.5s
Engineer vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.4s
Marketing Executive vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.6s
Project Engineer vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.4s
Software Developer vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.5s
Executive vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.4s
Engineer, Software vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.4s
Human Resource Executive vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.4s
Senior Manager vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.5s
Finance Manager vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.4s
Account Sales Manager vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.4s
Account Manager vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.5s
Account Executive vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.4s
Customer Service Executive vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.4s
Sales Engineer vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.4s
Sales Manager vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.4s
Marketing Manager vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.3s
Recruitment Consultant vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.4s
Network Engineer/Manager vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.4s
Administrator vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.4s
Administrative Executive vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.4s
Product Manager vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.4s
Information Technology Consultant vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.5s
Sales Coordinator vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.8s
Assistant Vice President vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.6s
Information System Engineer vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.6s
Human Resource Assistant vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.6s
Information Technology Engineer vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.7s
System Administrator vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.8s
Information Technology Analyst vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.9s
Senior Executive vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.9s
Warehouse Assistant vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.9s
Receptionist (General) vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 6.0s
Administration Clerk vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 6.1s
Process Engineer vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 6.6s
Account Assistant vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 6.1s
Senior Engineer vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 6.3s
Electrical Engineer (General) vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 6.3s
Mechanical Engineer vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 6.4s
Information Technology Manager vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 6.1s
Operations Executive vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.4s
Customer Service Officer vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.4s
Coordinator vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.4s
Web Developer vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.4s
Human Resource Manager vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.5s
Desktop Support Engineer vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.5s
Project Coordinator vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.5s
Program Manager vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.5s
Secretary vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.4s
Director vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.4s
Compliance Officer vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.4s
Graphic Designer vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.4s
Senior Software Developer vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.5s
Operations Manager vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.4s
Logistics Executive vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.5s
Financial Analyst vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.5s
Assistant Finance Manager vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.5s
General Manager vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.4s
Database Administrator vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.4s
Restaurant Manager vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.4s
Marketing Assistant vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.4s
Compliance Manager vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.4s
Cook vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.4s
Personal Assistant vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.3s
Corporate Sales Executive vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.4s
Project Executive vs. Housekeeping Attendant
1st title: 100 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
100 posts and counting...
Done after 5.4s
Administrative Officer vs. Housekeeping Attendant
1st title: 99 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
Done after 5.4s
Engineer, Quality Assurance vs. Housekeeping Attendant
1st title: 98 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
Done after 5.3s
Sales Administrator vs. Housekeeping Attendant
1st title: 97 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
Done after 5.2s
Application Engineer vs. Housekeeping Attendant
1st title: 95 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
Done after 5.2s
Sales & Marketing Executive vs. Housekeeping Attendant
1st title: 94 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
Done after 5.1s
Assistant Engineer vs. Housekeeping Attendant
1st title: 94 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
Done after 5.1s
Technician vs. Housekeeping Attendant
1st title: 93 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
Done after 5.0s
Assistant Marketing Manager vs. Housekeeping Attendant
1st title: 93 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
Done after 5.1s
Information Technology Executive vs. Housekeeping Attendant
1st title: 92 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
Done after 5.1s
Business Manager vs. Housekeeping Attendant
1st title: 90 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
90 posts and counting...
Done after 4.9s
Recruitment Executive vs. Housekeeping Attendant
1st title: 89 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
Done after 4.9s
Service Engineer vs. Housekeeping Attendant
1st title: 87 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
Done after 4.7s
Chef vs. Housekeeping Attendant
1st title: 87 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
Done after 4.7s
Regional Sales Manager vs. Housekeeping Attendant
1st title: 85 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
Done after 4.7s
Technical Consultant vs. Housekeeping Attendant
1st title: 84 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
Done after 4.6s
Operations Analyst vs. Housekeeping Attendant
1st title: 82 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
Done after 4.5s
Senior Quantity Surveyor vs. Housekeeping Attendant
1st title: 81 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
Done after 4.3s
Operation Manager vs. Housekeeping Attendant
1st title: 80 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
80 posts and counting...
Done after 4.4s
Sales Director vs. Housekeeping Attendant
1st title: 78 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
Done after 4.2s
Events Executive vs. Housekeeping Attendant
1st title: 77 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
Done after 4.2s
Technical Manager vs. Housekeeping Attendant
1st title: 76 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
Done after 4.1s
Accounts Officer vs. Housekeeping Attendant
1st title: 75 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
Done after 4.1s
Quality Assurance Engineer vs. Housekeeping Attendant
1st title: 75 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
Done after 4.1s
Financial Controller vs. Housekeeping Attendant
1st title: 73 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
Done after 3.9s
Events Marketing Executive vs. Housekeeping Attendant
1st title: 73 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
Done after 3.9s
Solutions Architect vs. Housekeeping Attendant
1st title: 72 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
Done after 3.9s
Systems Engineer vs. Housekeeping Attendant
1st title: 72 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
Done after 3.9s
Sales Support Executive vs. Housekeeping Attendant
1st title: 72 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
Done after 3.9s
Customer Care Officer vs. Housekeeping Attendant
1st title: 71 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
Done after 3.9s
Purchaser vs. Housekeeping Attendant
1st title: 70 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
Done after 3.8s
Administrative Accounts Assistant vs. Housekeeping Attendant
1st title: 70 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
Done after 3.8s
Marketing Communications Executive vs. Housekeeping Attendant
1st title: 70 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
Done after 3.9s
Administrative Accounts Executive vs. Housekeeping Attendant
1st title: 70 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
70 posts and counting...
Done after 3.8s
Senior R&D Engineer vs. Housekeeping Attendant
1st title: 68 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
Done after 3.7s
Logistics Coordinator vs. Housekeeping Attendant
1st title: 68 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
Done after 3.7s
Accounts Administrator vs. Housekeeping Attendant
1st title: 67 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
Done after 3.6s
Laboratory Technician vs. Housekeeping Attendant
1st title: 67 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
Done after 3.6s
Technical Support Engineer vs. Housekeeping Attendant
1st title: 67 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
Done after 3.7s
Pre-Sales Consultant vs. Housekeeping Attendant
1st title: 66 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
Done after 3.6s
Interior Designer vs. Housekeeping Attendant
1st title: 66 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
Done after 3.6s
Customer Service Coordinator vs. Housekeeping Attendant
1st title: 66 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
Done after 3.6s
Waiter vs. Housekeeping Attendant
1st title: 66 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
Done after 3.5s
Senior Human Resource Executive vs. Housekeeping Attendant
1st title: 65 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
Done after 3.5s
Chef de Partie (Restaurant) vs. Housekeeping Attendant
1st title: 65 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
Done after 3.5s
Sous Chef vs. Housekeeping Attendant
1st title: 65 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
Done after 3.5s
Maintenance Technician vs. Housekeeping Attendant
1st title: 64 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
Done after 3.5s
R&D Engineer vs. Housekeeping Attendant
1st title: 63 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
Done after 3.5s
Logistics Manager vs. Housekeeping Attendant
1st title: 62 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
Done after 3.4s
Customer Service Assistant vs. Housekeeping Attendant
1st title: 61 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
60 posts and counting...
Done after 3.3s
Legal Executive (Public or Private Corporation or Organisation) vs. Housekeeping Attendant
1st title: 59 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
Done after 3.3s
Designer, Graphic vs. Housekeeping Attendant
1st title: 58 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
Done after 3.1s
Corporate Sales Manager vs. Housekeeping Attendant
1st title: 58 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
Done after 3.1s
Business Development Director vs. Housekeeping Attendant
1st title: 58 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
Done after 3.2s
Payroll Executive vs. Housekeeping Attendant
1st title: 58 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
Done after 3.1s
SAP Specialist vs. Housekeeping Attendant
1st title: 58 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
Done after 3.2s
Production Supervisor vs. Housekeeping Attendant
1st title: 58 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
Done after 3.1s
Senior Recruitment Consultant vs. Housekeeping Attendant
1st title: 58 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
Done after 3.2s
Security Officer vs. Housekeeping Attendant
1st title: 57 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
Done after 3.1s
Web Designer vs. Housekeeping Attendant
1st title: 57 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
Done after 3.1s
Application Programmer vs. Housekeeping Attendant
1st title: 56 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
Done after 3.0s
Production Engineer vs. Housekeeping Attendant
1st title: 55 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
Done after 3.0s
Technical Engineer vs. Housekeeping Attendant
1st title: 55 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
Done after 3.0s
Brand Manager vs. Housekeeping Attendant
1st title: 55 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
Done after 3.1s
Administration Manager vs. Housekeeping Attendant
1st title: 55 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
Done after 3.0s
Human Resource Officer vs. Housekeeping Attendant
1st title: 55 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
Done after 3.1s
Retail Sales Associate vs. Housekeeping Attendant
1st title: 54 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
Done after 3.0s
Senior Accountant (General) vs. Housekeeping Attendant
1st title: 54 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
Done after 3.0s
Electrical Technician vs. Housekeeping Attendant
1st title: 53 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
Done after 3.0s
Information Technology Support Engineer vs. Housekeeping Attendant
1st title: 53 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
Done after 3.2s
Quality Assurance & Quality Control Engineer vs. Housekeeping Attendant
1st title: 52 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
Done after 3.1s
Assistant Restaurant Manager vs. Housekeeping Attendant
1st title: 52 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
Done after 3.0s
Service Technician vs. Housekeeping Attendant
1st title: 51 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
Done after 2.9s
Shipping Executive vs. Housekeeping Attendant
1st title: 51 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
Done after 3.0s
Storekeeper vs. Housekeeping Attendant
1st title: 51 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
Done after 3.3s
Sales Engineer, Technical vs. Housekeeping Attendant
1st title: 51 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
Done after 3.0s
Human Resource & Administration Manager vs. Housekeeping Attendant
1st title: 50 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
50 posts and counting...
Done after 3.0s
Events Manager vs. Housekeeping Attendant
1st title: 49 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
Done after 3.0s
Accounting Manager vs. Housekeeping Attendant
1st title: 48 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
Done after 2.9s
Project Manager, Information Technology vs. Housekeeping Attendant
1st title: 48 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
Done after 3.0s
Warehouse Supervisor vs. Housekeeping Attendant
1st title: 48 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
Done after 3.1s
Administrative Coordinator vs. Housekeeping Attendant
1st title: 48 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
Done after 3.5s
Human Resource Assistant Manager vs. Housekeeping Attendant
1st title: 48 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
Done after 2.9s
Equipment Engineer vs. Housekeeping Attendant
1st title: 47 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
Done after 2.7s
Senior System Administrator vs. Housekeeping Attendant
1st title: 46 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
Done after 2.6s
Marketing Communications Manager vs. Housekeeping Attendant
1st title: 46 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
Done after 2.5s
Engineering Assistant vs. Housekeeping Attendant
1st title: 46 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
Done after 2.5s
Production Technician vs. Housekeeping Attendant
1st title: 46 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
Done after 2.6s
Supply Chain Executive vs. Housekeeping Attendant
1st title: 45 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
Done after 2.4s
Senior Marketing Executive vs. Housekeeping Attendant
1st title: 45 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
Done after 2.5s
Supervisor vs. Housekeeping Attendant
1st title: 45 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
Done after 2.4s
Delivery Driver vs. Housekeeping Attendant
1st title: 45 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
Done after 2.4s
Procurement Executive vs. Housekeeping Attendant
1st title: 45 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
Done after 2.5s
Payroll Assistant vs. Housekeeping Attendant
1st title: 44 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
Done after 2.3s
Purchasing Executive vs. Housekeeping Attendant
1st title: 44 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
Done after 2.4s
Assistant Director vs. Housekeeping Attendant
1st title: 44 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
Done after 2.5s
Events Coordinator vs. Housekeeping Attendant
1st title: 43 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
Done after 2.3s
Risk Management Executive vs. Housekeeping Attendant
1st title: 43 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
Done after 2.4s
Key Account Manager vs. Housekeeping Attendant
1st title: 43 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
Done after 2.4s
Accounts Manager vs. Housekeeping Attendant
1st title: 43 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
Done after 2.3s
Manager, Procurement vs. Housekeeping Attendant
1st title: 43 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
Done after 2.3s
Draftsman vs. Housekeeping Attendant
1st title: 42 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
Done after 2.3s
Sales Administration Coordinator vs. Housekeeping Attendant
1st title: 42 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
Done after 2.2s
Internal Audit Manager vs. Housekeeping Attendant
1st title: 42 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
Done after 2.3s
Assistant Accountant vs. Housekeeping Attendant
1st title: 41 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
Done after 2.2s
Housekeeping Attendant vs. Housekeeping Attendant
1st title: 41 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
Done after 2.2s
Communications Executive vs. Housekeeping Attendant
1st title: 41 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
Done after 2.3s
Purchasing Officer vs. Housekeeping Attendant
1st title: 40 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
Done after 2.1s
Call Centre Agent vs. Housekeeping Attendant
1st title: 40 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
40 posts and counting...
Done after 2.1s
Facilities Maintenance Technician vs. Housekeeping Attendant
1st title: 39 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
Done after 2.1s
Marketing Director vs. Housekeeping Attendant
1st title: 39 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
Done after 2.2s
Telemarketer vs. Housekeeping Attendant
1st title: 39 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
Done after 2.1s
Senior Project Engineer vs. Housekeeping Attendant
1st title: 39 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
Done after 2.1s
Housekeeping Supervisor vs. Housekeeping Attendant
1st title: 38 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
Done after 2.1s
Production Planner vs. Housekeeping Attendant
1st title: 38 posts, 2nd title: 41 posts
10 posts and counting...
20 posts and counting...
30 posts and counting...
Done after 2.0s
C:\Users\mdluu.2011\AppData\Local\Continuum\Anaconda2\lib\site-packages\ipykernel\__main__.py:4: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy

In [392]:
res_38.head(10).to_csv(HK_DIR + 'top_sim_titles.csv', index=False)

In [393]:
res_38.head(10)


Out[393]:
title n_employer avg_n_skill n_post topic_sim_with_hk
0 Assistant Restaurant Manager 49 10.8 52 0.89
1 Housekeeping Supervisor 27 10.8 38 0.89
2 Housekeeping Attendant 31 11.0 41 0.89
3 Chef 74 12.3 87 0.88
4 Chef de Partie (Restaurant) 61 11.4 65 0.88
5 Restaurant Manager 97 14.8 110 0.88
6 Waiter 47 10.3 66 0.88
7 Cook 92 10.0 103 0.88
8 Sous Chef 61 14.0 65 0.87
9 Interior Designer 55 10.1 66 0.86

In [391]:
res_38.describe().round(2)


Out[391]:
n_employer avg_n_skill n_post topic_sim_with_hk
count 191.00 191.00 191.00 191.00
mean 93.84 13.85 138.95 0.81
std 82.45 3.27 143.29 0.03
min 25.00 7.90 38.00 0.75
25% 44.50 11.30 54.00 0.79
50% 62.00 13.30 78.00 0.81
75% 111.00 16.20 162.50 0.83
max 615.00 23.00 993.00 0.89

In [ ]:


In [ ]:
# limit to titles with > 22 posts.
_ = rel_title_stats.query('n_post > 22')
print('# titles with > 22 posts: %d' %_.shape[0])

res = rel_title_stats.query('n_post > 22')
res['topic_sim_with_hk'] = res['title'].apply(simScore, t2='Housekeeping Attendant')

In [ ]:
res = res.round(2)
res = res.sort_values('topic_sim_with_hk', ascending=False)
res.head(10)

In [ ]:
res.to_csv(HK_DIR + 'sims_to_hk.csv', index=False)
  • Categorize the skills in these posts using the SF framework for HK track:

In [ ]:
skill_df = pd.DataFrame({'skill': c.keys(), 'freq': c.values()})
skill_df = skill_df.sort_values('freq', ascending=False)

In [ ]:
hk_skills = skillFreq(hk_posts)
print('# skills in HK posts: %d' %hk_skills.shape[0])
hk_skills.head()

In [ ]:
hk_skills.to_csv(SKILL_RES + 'job_prof/hk_skills.csv', index=False)

Precision Engineering - Technician Track

  • Find an exhaustive list of job titles for Technician:

In [ ]:
# Machinist/Technician are suggested by SF
tech_kw = ['Machinist', 'Technician']
tech_titles = [t for t in df.title if found(tech_kw, t)]
c = Counter(tech_titles)

In [ ]:
tech_titles = pd.DataFrame({'title': c.keys(), 'n_post': c.values()}).sort_values('n_post', ascending=False)

In [ ]:
tech_titles.n_post.describe().round(1)

In [ ]:
tech_titles = tech_titles.query('n_post > 10')
print('# titles: %d' %tech_titles.shape[0])

In [ ]:
tech_titles.tail()
  • Using the titles to retrieve posts for Technician:

In [ ]:
tech_posts = df[df.title.isin(tech_titles.title)]
print('# posts for Technician: %d' %tech_posts.shape[0])

In [ ]:
getTitleStats(tech_posts).to_csv(SKILL_RES + 'job_prof/tech_titles.csv', index=False)

In [ ]:
sortDown(tech_posts.groupby('title').size())
  • Measure the similarity among the retrieved posts:

In [ ]:
tech_sims = pairwiseSim(tech_posts, doc_topic_distr)

In [ ]:
# plot dists of the sims
fig = plotSimDists(tech_sims, 'Technician jobs')
fig.savefig(SKILL_RES + 'fig/tech_jobs_sim.pdf')
plt.show(); plt.close()

In [ ]:
tech_sims.skill_sim.describe().round(2)

In [ ]:
tech_sims.query('skill_sim == 1')

In [ ]:
tech_sims.topic_sim.describe().round(2)

In [ ]:
tech_sims = tech_sims.sort_values('topic_sim', ascending=False)

In [ ]:
n_pair = tech_sims.shape[0]; last = n_pair - 1
vizPair(last, tech_sims)
  • Categorize the skills in these posts using the SF framework for Technician:

Flagging Variants/Branches of an Employer


In [ ]:
fm_posts = df[df.title == 'Fashion Merchandiser']
fm_sims = pairwiseSim(fm_posts, doc_topic_distr)

In [ ]:
fm = fm_sims.sort_values('skill_sim', ascending=False)
fm.head().to_csv(SKILL_RES + 'job_prof/fm_variants.csv', index=False)