我用了三种不同的方法来计算简历和职位描述之间的匹配度。谁能告诉我什么方法是最好的,为什么?
-
我使用NLTK进行关键字提取,然后使用RAKE进行关键词/关键词评分,然后应用余弦相似度
-
Scikit用于关键词提取,tf-idf和余弦相似度计算。
-
Gensim库用LSA/LSI模型提取关键字并进行计算文档与查询的余弦相似度
这里没有人能给你答案。决定哪种方法更好的唯一方法是让一个或多个人独立地匹配大量的简历和职位描述,并将他们所做的与你的算法所做的进行比较。理想情况下,你应该有一个已经匹配的简历和职位描述的数据集(当人们申请时,公司必须这样做),因为创建一个足够大的数据集需要大量的工作。
下次你承担这种项目时,首先考虑你将如何评估你将组合在一起的解决方案的性能。
由于职位描述和简历内容很可能不同,你应该从语义的角度考虑。你可以做的一件事就是使用一些领域知识。但是要获得各种工作类型的领域知识是相当困难的。研究人员有时会使用字典来增强文档之间的相似度匹配。
研究人员正在使用深度神经网络来捕获文档的句法和语义结构。您可以使用doc2Vec比较两个文档。Gensim可以为您生成doc2Vec表示。我相信,与关键词提取和相似度计算相比,这将给出更好的结果。你可以建立自己的神经网络模型来训练职位描述和简历。我想神经网络会对你的工作很有效。
正如在回答中已经提到的,尝试使用Doc2Vec。似乎分别在两个语料库(简历和职位描述)上使用Gensim的Doc2Vec,然后在两个向量之间使用余弦相似性是最简单的工作流程。对于形式和文字内容不相似,但上下文和语义相似的文档,它比其他文档效果更好,因此仅关键字在这里没有多大帮助。
然后你可以尝试在匹配的cv & &;JD对语料库上训练CNN,如果有的话,标签为yes/no,并使用它来根据职位描述对简历/简历进行鉴定。
基本上我将在我几乎相同的任务中尝试这些方法,请参阅https://datascience.stackexchange.com/questions/22421/is-there-an-algorithm-or-nn-to-match-two-documents-basically-not-closely-simila
我可能会使用下面描述的选项。什么是最好的,实际上是一个意见的问题,而不是其他任何事情。
#intall the required library
#pip install docx2txt
import docx2txt
import warnings
warnings.filterwarnings('ignore')
path = 'C:\Users\'
# load the data
resume = docx2txt.process(path + 'aaron.docx')
job = docx2txt.process(path + 'job_description.docx')
# printing the resume
resume
job
# a list of text
text = [resume,job]
from sklearn.feature_extraction.text import CountVectorizer
cv = CountVectorizer()
count_matrix = cv.fit_transform(text)
# import cosine similarity
from sklearn.metrics.pairwise import cosine_similarity
#print similarity score
print('Similarity score : ',cosine_similarity(count_matrix))
# get the percentage
matchpercentage = cosine_similarity(count_matrix)[0][1]
matchpercentage = round(matchpercentage*100,2)
print('Your Resume {} % match to the job description !'.format(matchpercentage))
https://github.com/kanishksh4rma/Resume-Scanner-for-Job-Description--using-Cosine-Similarity