Java 职位最接近匹配
我有一个已知职位的主列表,并在寻找从搜索词中提取相同职位的方法。例如: 搜索职位:高级数字营销专家Java 职位最接近匹配,java,nlp,extraction,data-analysis,summarization,Java,Nlp,Extraction,Data Analysis,Summarization,我有一个已知职位的主列表,并在寻找从搜索词中提取相同职位的方法。例如: 搜索职位:高级数字营销专家 摘录至:高级数字营销 搜索职位:零售店内销售助理;全职 摘录至:零售销售助理 因此,我尝试提取有助于清理搜索的查询的参数 1) 数据库中2个令牌的出现。(对术语之间的关联程度进行数学评估) 例如: t01->t0 or t1 Senior || java--->226374 t02->t0 or t2 Senior || software---&
摘录至:高级数字营销 搜索职位:零售店内销售助理;全职
摘录至:零售销售助理 因此,我尝试提取有助于清理搜索的查询的参数
1) 数据库中2个令牌的出现。(对术语之间的关联程度进行数学评估) 例如:
t01->t0 or t1 Senior || java--->226374
t02->t0 or t2 Senior || software--->2566450
t03->t0 or t3 Senior || engineer--->7220787
t12->t1 or t2 java || software--->315397
t13->t1 or t3 java || engineer--->407682
t23->t2 or t3 software || engineer--->11533495
total =t01+t02+t03+t12+t13+t23
t0-> Senior----->55042636
t1-> java----->1655805
t2-> software----->26136204
t3-> engineer----->81574912
2) 在整个数据库中每次取1的令牌的出现。
例如:
t01->t0 or t1 Senior || java--->226374
t02->t0 or t2 Senior || software--->2566450
t03->t0 or t3 Senior || engineer--->7220787
t12->t1 or t2 java || software--->315397
t13->t1 or t3 java || engineer--->407682
t23->t2 or t3 software || engineer--->11533495
total =t01+t02+t03+t12+t13+t23
t0-> Senior----->55042636
t1-> java----->1655805
t2-> software----->26136204
t3-> engineer----->81574912
3) 我计算了相关令牌的总和,并设置了5%的最小阈值,这给了我以下输出,即(txy*100)/total>5
我的输出:高级软件工程师任何人都有过类似的项目或进一步改进的想法吗?确定查询和列表条目之间的相似性的标准方法是。粗略地说,您可以通过以下步骤来构建这样的模型:
术语列表的长度n
是向量空间的大小
将主列表中的每个职务与向量相关联(脱机)
向量列表=[]
向量=[]
填充(向量,0,n-1,0)//初始化为n个零
对于主列表中的所有职务:
对于当前职务中的所有单词:
规范化(当前单词)//例如小写等。
术语索引=索引(当前单词、术语列表)
向量[术语索引]++
规格化(向量)//将向量缩放为长度=1
添加(向量,向量列表)
将每个搜索查询
转换为向量
(在线)
这与2下的代码完全相同,只是您只有一个for循环(内部循环),在该循环中,您迭代查询中的单词,而不是主列表职务的单词。此外,出于明显的原因,您不需要向量列表
结果是一个规范化的查询向量
使用余弦相似性测量给定的查询向量的职位相关性(在线)
相似性向量=[]
对于矢量列表中的所有职务矢量:
相似性=点积(查询向量、职务向量)
添加(相似性、相似性向量)
结果是查询和主列表的每个条目之间的相似性值,存储在相似性向量中
这是一个非常通用的模型,其吸引力在于它的简单性。然而,考虑到你的职称通常只包含少量的单词,可能在每个职称中只出现一次,因此它是否是手头工作的一个非常好的模式还存在争议。但是你可以试一试。我不太清楚我是否理解。您是否假设查询始终是主列表中某个条目的超集?@Thomas否它可能根本不是超集。示例:搜索到的职位名称:纽约全职Java开发人员摘录到:数据库中的Java开发人员我没有任何职位名称包含“纽约”一词,因此很容易删除。您是否考虑过使用lucene或elasticsearch之类的全文搜索引擎?这可能会比database@bedrin谢谢你的建议。我们将尝试一下。你最终是如何解决的?经过几次试验后,我发现Lucene适合我想要的结果。它在内部使用向量空间模型,所以我发现使用它比自己编写代码更容易。希望对此有更多建议。关于解决这个问题的方法,可能还有另一个建议:)