在我正在处理的脚本中,我通过比较关键字和关键短语的相似性来计算一个数组中每个项目与另一个数组中每个项目的相关性。最后,我为第二个数组中的每个项目选择前4个最相关的项目。
我知道这是一个非常模糊的背景,但有没有办法避免使算法O(n ^ 2)(将一个数组中的每个项目与另一个项目中的每个项目进行比较),或者是否有更有效的方法计算相关性?
答案 0 :(得分:3)
也许您可以将职位/职位空缺分类。
使用最常用单词的列表,仅在具有这些单词的项目中搜索匹配。
我的意思是没有必要将“Java程序员”与“C ++职位空缺”进行比较,但在“java”关键字中,您仍然可以比较“程序员”和“项目负责人”。
你明白我的意思吗?
但是,请举个例子,当我们知道我们在谈论什么时,它更容易回答。
答案 1 :(得分:1)
使用倒排索引(哈希表)将其降低到O(n)。将第一个列表中的所有项放在一个哈希表中。然后遍历第二个列表中的所有项目,查找哈希表中的每个项目。
我不知道你是如何定义相似的。如果相似性只是两个列表中的项目相等,那么这将起作用。但是,如果相似性更复杂,那么您可能需要为每种类型的相似性构建多个哈希表。例如,您可以使用一个哈希表来键入一个单词的拼音拼写,另一个键表可以键入单词的确切字符串。
如果您有一个像职位空缺列表一样大的列表,并且您想要查询候选技能列表,那么您应该真正使用搜索引擎。搜索引擎只是一组以关键字为关键字的哈希表。当您可以使用已经构建的搜索引擎时,重建搜索引擎是没有意义的。首先,您索引所有职位空缺,然后使用候选人简历中的单词查询搜索引擎。您可能想要查看的一个流行的开源搜索引擎是Solr。