我有一个职位列表,唯一的职位大约有24000个。大多数职位名称都非常相似
For example:
Software Developer, Software engineer, software engineering, software engineer 2, senior software engineer, junior software engineer,....
我想找到最相似的标题,并用最重复的标题替换所有相似的标题,以减少列中的唯一性
例如,在屏幕截图中,aadhar卡管理器的所有变体都将替换为aadhar管理器,因为aadhar卡管理器重复次数最多。所有软件工程工作的变体都将被软件工程师的头衔所取代,因为它经常被重复,等等
请提出实现这一预期结果的解决方案和方法
此存储库中有供您参考的示例职务名称: https://github.com/skwolvie/jobprofile_sample
我还将一个职位与样本职位数据集中的每个其他职位的相似性分数制成表格。每个标题都与一个值关联
截图:
下面是另一种尝试:
此解决方案中有5个步骤:
使用
pd.Series.value_counts().reset_index()
只获取按频率降序排列的唯一标题使用Levenshtein距离度量值计算这些唯一的
titles
之间的距离使用Levenshtein距离中的
threshold
查找最接近每个单词的单词索引合并重复的节点以避免重复(即,如果ID 1、2和5是重复的,我们只需要为它们创建一个条目,而不是[1、2、5]、[2、1、5]和[5、1、2])
最后,我们将信息整合到
df.title.value_counts()
系列中,并在字典中替换原始数据帧中的信息基于先前共享的
csv
文件的代码:步骤1:加载数据(它已经是值_counts()所需的格式)
步骤2:计算距离
步骤3:循环遍历
lev_matrix
的每一行,以找到类似条目的ID步骤4:合并所有共享单个列表中至少一个项目的列表
为了更新这些值,您需要创建一个字典,将所有名称映射到它们的组中最常见的名称,并将其传递给DataFrame
请注意,使用
nodes[0]
作为节点中最常见的标题是有效的,因为自从我们使用.value_counts()
创建数据帧以来,数据帧是按降序排列的您也可以使用
dict_most_popular_names
替换原始数据帧中的数据对我来说,运行整个脚本需要30秒,这相当于计算Levenshtein距离所花费的时间。如果您需要进一步优化,您需要检查
相关问题 更多 >
编程相关推荐