【问题标题】:Python, NLP - finding the top document containing given list of wordsPython,NLP - 查找包含给定单词列表的顶级文档
【发布时间】:2020-08-05 20:24:23
【问题描述】:

我是学习 NLP 的新手。我正在尝试寻找最匹配的简历。

例如,我有一个我正在寻找的技能列表,例如 ['java'、'python'、'SQL'、'API'、...] 和一组文档。我想创建一个模型来找到与这些技能最匹配的文档。类似于简历匹配。

我从本教程开始 - Extracting words from pdf 作为参考

我能够从 pdf 中提取文本,删除停用词,执行词形还原,计算这些关键字在每个文档中出现的次数,但我不知道如何从这里开始。

谁能告诉我接下来的步骤应该是什么?任何教程或参考资料也会有所帮助。

【问题讨论】:

  • 查找匹配是一个非常主观的目标。我首先要考虑的是定义匹配的含义,或者根据您找到的信息对简历进行排名的方法。例如,排名的一种方式是根据列表中任何单词出现在简历中的总次数。此外,您还可以考虑出现的各种单词(即,您不希望任何人在简历中只显示 python 100 次)。
  • @TYZ,我完全同意——我认为你的意思是这是一个非常“主观”的目标。定义良好匹配的方法很多。
  • @blacksite 哈哈,我的错,刚刚修好了。原谅我糟糕的英语,我永远不会正确。
  • @TYZ 我也同意你的看法。在这里,我正在寻找与技能集有最大交集的文档,如果文档具有相同的交集但很少,则单词出现多次,那么应该给予更多的优先权。

标签: python nlp


【解决方案1】:

我认为你可以使用向量相似度方法。

最佳匹配简历是查询(限定关键字)与文本之间的相似度。您可以使用doc2vecsbert - 这是我最喜欢的 - 来收集前 n 个最佳结果。

corpus_embeddings = model.encode(YOUR_CV_TEXT, convert_to_tensor=True)
query_1=['java python SQL']

for query in query_1:
    query_embedding = model.encode(query_1, convert_to_tensor=True)

    cos_scores = util.cos_sim(query_embedding, corpus_embeddings)[0]
    top_results = torch.topk(cos_scores, k=5)

    print("\n\n======================\n\n")
    print("Query:", query)
    print("\nTop 5 most similar sentences in corpus:")

    for score, idx in zip(top_results[0], top_results[1]):
        print(par_list[idx], "(Score: {:.4f})".format(score))

您可以深入了解更多信息:Semantic Search

【讨论】:

    【解决方案2】:

    如果你假设“最好的匹配”,是与设置技能“最大交叉点”的简历,那么你会有(python):

    import numpy as np
    D=[["I","know","python"],["I","know","java"]] # list of Documents
    skils=["java"] # list of skils
    I=[len(list(set(skils) & set(d))) for d in D]
    R = sorted(range(len(I)), key=lambda k: I[k]) # rank of intersection with the skillset
    best_resume=R[0]
    print (R)
    

    我希望它有用。祝你好运。

    【讨论】:

    • 这里我正在寻找与技能组有最大交集的文档,如果文档具有相同的交集但很少,那么单词出现多次,那么应该给予更多的优先权。
    • 如果我理解正确,您可能会对基于交叉点的排名感兴趣...我已经更新了代码;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 2021-07-31
    相关资源
    最近更新 更多